package incheon.ags.ias.myAuthrtAply.vo;

import incheon.com.cmm.ComDefaultVO;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 내 권한 신청 VO
 * 테이블: USER_ROLE_APLY_MST, USER_ROLE_APLY_DTL
 */
@Getter
@Setter
public class MyAuthrtAplyVO extends ComDefaultVO {

    // ========================================
    // USER_ROLE_APLY_MST 테이블 필드 (필수)
    // ========================================
    private Long aplySn;             // 신청 일련번호 (PK)
    private String aplyStcd;       // 신청 상태 코드 (APLYST001:대기, APLYST002:승인, APLYST003:반려)
    private String sysCd;            // 시스템 코드
    private String aplcnUserId;      // 신청 사용자 ID
    private String rvwUserId;       // 승인 사용자 ID
    private String grntTypeCd;       // 부여 유형 코드 (GRNTTY001:영구, GRNTTY002:기간제, GRNTTY003:임시)
    private String atchFileId;       // 첨부 파일 ID
    private LocalDateTime aplyDt;    // 신청 일시
    private LocalDateTime aprvDt;    // 승인 일시
    private String aplyRsn;          // 신청 사유
    private String rvwOpnnCn;        // 검토 의견 내용
    private LocalDate aplyBgngYmd;   // 신청 시작 일자
    private LocalDate aplyEndYmd;    // 신청 종료 일자

    // ========================================
    // USER_ROLE_APLY_DTL 테이블 필드 (필수)
    // ========================================
    private Long aplyDtlSn;          // 신청 상세 일련번호 (PK)
    private String roleCd;           // 역할 코드
    private String roleBgngYmd;           // 역할 시작 일
    private String roleEndYmd;           // 역할 종료 일

    // ========================================
    // 조회 조건용
    // ========================================
    private String nowUserId;        // 현재 접속한 사용자 ID (조회 필터용)

    // ========================================
    // 조회 결과용 (SELECT에서 사용)
    // ========================================
    private String userId;           // 사용자 아이디
    private String userNm;           // 사용자명
    private String deptNm;           // 부서명
    private String jbgdNm;           // 직급명
    private String jbpsNm;           // 직위명
    private String roleNm;           // 역할명
    private String roleExpln;        // 역할 설명
    private String sysNm;            // 시스템명
    private String emlAddr;          // 이메일 주소
    private String mblTelno;         // 휴대폰 번호
    private String ofcTelno;         // 사무실 번호
    private Long rowNum;             // 행번호

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}
