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

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

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.sql.Timestamp;

@Getter
@Setter
public class DeptRequestDTO {
    @Schema(description = "부서 코드", example = "DEPT001", required = true)
    @Size(max = 20, message = "부서 코드는 20자를 초과할 수 없습니다.")
    private String deptCd;

    @Schema(description = "부서 상태 코드", example = "ACTIVE")
    @Size(max = 20, message = "부서 상태 코드는 20자를 초과할 수 없습니다.")
    private String deptStcd;

    @Schema(description = "부서명", example = "행정지원과")
    @Size(max = 200, message = "부서명은 200자를 초과할 수 없습니다.")
    private String deptNm;

    @Schema(description = "부서 전체명", example = "인천광역시청 행정지원과")
    @Size(max = 200, message = "부서 전체명은 200자를 초과할 수 없습니다.")
    private String deptWholNm;

    @Schema(description = "차상위기관 코드", example = "INST002")
    @Size(max = 20, message = "차상위기관 코드는 20자를 초과할 수 없습니다.")
    private String shghrkInstCd;

    @Schema(description = "수행업무 구분 코드", example = "BUS001")
    @Size(max = 20, message = "수행업무 구분 코드는 20자를 초과할 수 없습니다.")
    private String sfrndSeCd;

    @Schema(description = "순위번호", example = "1")
    private Integer rankNo;

    @Schema(description = "가상조직 전환 여부", example = "N", allowableValues = {"Y", "N"})
    @Size(max = 1, message = "가상조직 전환 여부는 1자여야 합니다.")
    private String vrOgnzTrYn;

    @Schema(description = "가상조직 전환 상위 코드", example = "DEPT002")
    @Size(max = 20, message = "가상조직 전환 상위 코드는 20자를 초과할 수 없습니다.")
    private String vrOgnzTrUpCd;

    @Schema(description = "대표기관코드", example = "6280000")
    @Size(max = 20, message = "대표기관코드는 20자를 초과할 수 없습니다.")
    private String rprsInstCd;

    @Schema(description = "대표기관명", example = "인천광역시")
    @Size(max = 200, message = "대표기관명은 200자를 초과할 수 없습니다.")
    private String rprsInstNm;

    @Schema(description = "최초 등록자 ID", example = "admin")
    @Size(max = 20, message = "최초 등록자 ID는 20자를 초과할 수 없습니다.")
    private String frstRegId;

    @Schema(description = "최초 등록일시", example = "2025-01-20 10:30:00")
    private Timestamp frstRegDt;

    @Schema(description = "최종 수정자 ID", example = "admin")
    @Size(max = 20, message = "최종 수정자 ID는 20자를 초과할 수 없습니다.")
    private String lastMdfcnId;

    @Schema(description = "최종 수정일시", example = "2025-01-20 10:30:00")
    private Timestamp lastMdfcnDt;

    public DeptVO toEntity() {
        DeptVO vo = new DeptVO();
        vo.setDeptStcd(this.deptStcd);
        vo.setDeptNm(this.deptNm);
        vo.setDeptWholNm(this.deptWholNm);
        vo.setShghrkInstCd(this.shghrkInstCd);
        vo.setSfrndSeCd(this.sfrndSeCd);
        vo.setRankNo(this.rankNo);
        vo.setVrOgnzTrYn(this.vrOgnzTrYn);
        vo.setVrOgnzTrUpCd(this.vrOgnzTrUpCd);
        vo.setRprsInstCd(this.rprsInstCd);
        vo.setRprsInstNm(this.rprsInstNm);
        vo.setFrstRegId(this.frstRegId);
        vo.setFrstRegDt(this.frstRegDt);
        vo.setLastMdfcnId(this.lastMdfcnId);
        vo.setLastMdfcnDt(this.lastMdfcnDt);
        return vo;
    }
}