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

import incheon.ags.ias.myAuthrtAply.vo.MyAuthrtAplyVO;
import incheon.ags.ias.userRole.vo.UserRoleVO;
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.util.List;

/**
 * 내 역할 신청 요청 DTO
 */
@Getter
@Setter
@Schema(description = "역할 신청 요청 DTO")
public class MyAuthrtAplyRequestDTO {

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

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

    @Schema(description = "역할 코드 리스트", example = "[\"BIZ_ROLE_ADMIN\", \"GEO_ROLE_ADMIN\"]", required = true)
    @NotBlank(message = "역할 코드 리스트는 필수 항목입니다.")
    private List<String> roleCdList;

    @Schema(description = "신청 사유", example = "업무로 인한 역할 사용 신청합니다.")
    private String aplyRsn;

    @Schema(description = "역할 시작일 (YYYY-MM-DD)", example = "2025-01-01")
    private String roleBgngYmd;

    @Schema(description = "역할 종료일 (YYYY-MM-DD)", example = "2025-12-31")
    private String roleEndYmd;

    @Schema(description = "사용 시작일", example = "2025-01-01")
    private LocalDate aplyBgngYmd;

    @Schema(description = "사용 종료일", example = "2025-01-01")
    private LocalDate aplyEndYmd;

    @Schema(description = "첨부파일 ID", example = "01K7ZFMTW3EWQX89YSF62VQZX9")
    private String atchFileId;

    public MyAuthrtAplyVO toEntity() {
        MyAuthrtAplyVO vo = new MyAuthrtAplyVO();
        vo.setUserId(userId);
        vo.setSysCd(sysCd);
        vo.setAplyRsn(aplyRsn);
        vo.setRoleBgngYmd(roleBgngYmd);
        vo.setRoleEndYmd(roleEndYmd);
        vo.setAplyBgngYmd(aplyBgngYmd);
        vo.setAplyEndYmd(aplyEndYmd);
        vo.setAtchFileId(atchFileId);
        return vo;
    }
}
