package incheon.ags.ias.tmprUserAuthrt.web.dto;

import incheon.ags.ias.tmprUserAuthrt.vo.TmprUserAuthrtVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotBlank;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Getter
@Setter
public class TmprUserAuthrtRequestDTO {

    @Schema(description = "사용자 ID", example = "test1234", required = true)
    @NotBlank(message = "사용자 ID 값은 필수 항목입니다.")
    private String userId;

    @Schema(description = "사용자 명", example = "홍길동")
    private String userNm;

    @Schema(description = "시스템 코드", example = "AGS")
    private String sysCd;

    @Schema(description = "부서 코드", example = "DEPT001")
    private String deptCd;

    @Schema(description = "부서 명", example = "정보시스템과")
    private String deptNm;

    @Schema(description = "역할 코드", example = "ROLE001", required = true)
    @NotBlank(message = "역할 코드 값은 필수 항목입니다.")
    private String roleCd;

    @Schema(description = "역할 명", example = "시스템관리자")
    private String roleNm;

    @Schema(description = "역할 설명", example = "시스템 전체 관리 권한")
    private String roleExpln;

    @Schema(description = "역할 유형", example = "ADMIN")
    private String roleType;

    @Schema(description = "권한 코드", example = "AUTH001", required = true)
    @NotBlank(message = "권한 코드 값은 필수 항목입니다.")
    private String authrtCd;

    @Schema(description = "적용 사유", example = "시스템 관리 업무 담당")
    private String aplcnRsn;

    @Schema(description = "역할 시작 일자", example = "2025-01-01")
    private LocalDate roleBgngYmd;

    @Schema(description = "역할 종료 일자", example = "2025-12-31")
    private LocalDate roleEndYmd;

    @Schema(description = "최초 등록 ID", example = "admin")
    private String frstRegId;

    @Schema(description = "최초 등록 일시")
    private LocalDateTime frstRegDt;

    @Schema(description = "최종 수정 ID", example = "admin")
    private String lastMdfcnId;

    @Schema(description = "최종 수정 일시")
    private LocalDateTime lastMdfcnDt;

    public TmprUserAuthrtVO toEntity() {
        TmprUserAuthrtVO vo = new TmprUserAuthrtVO();
        vo.setUserId(userId);
        vo.setUserNm(userNm);
        vo.setDeptCd(deptCd);
        vo.setDeptNm(deptNm);
        vo.setRoleCd(roleCd);
        vo.setRoleNm(roleNm);
        vo.setRoleExpln(roleExpln);
        vo.setRoleType(roleType);
        vo.setAuthrtCd(authrtCd);
        vo.setAplcnRsn(aplcnRsn);
        vo.setRoleBgngYmd(roleBgngYmd);
        vo.setRoleEndYmd(roleEndYmd);
        vo.setFrstRegId(frstRegId);
        vo.setFrstRegDt(frstRegDt);
        vo.setLastMdfcnId(lastMdfcnId);
        vo.setLastMdfcnDt(lastMdfcnDt);
        return vo;
    }

}