package go.kr.project.api.model.request;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.Size;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(description = "자동차등록원부(갑) 요청 항목")
@Getter
@Setter
public class LedgerRequest {

    // 본문 공통 메타 (VmisRequestEnricher에서 자동 설정)
    @Schema(description = "정보시스템ID (자동설정: vmis.system.infoSysId)", example = "41-345")
    @JsonProperty("INFO_SYS_ID")
    private String infoSysId;

    @Schema(description = "정보시스템IP (자동설정: vmis.system.infoSysIp)", example = "105.19.10.135")
    @JsonProperty("INFO_SYS_IP")
    private String infoSysIp;

    @Schema(description = "시군구코드 (자동설정: vmis.system.sigunguCode)", example = "41460")
    @JsonProperty("SIGUNGU_CODE")
    private String sigunguCode;

    // 서비스별 필드 (VmisRequestEnricher에서 자동 설정)
    @Schema(description = "연계정보코드 (자동설정: vmis.gov.services.ledger.cntcInfoCode)", example = "AC1_FD11_02")
    @JsonProperty("CNTC_INFO_CODE")
    private String cntcInfoCode;

    @Schema(description = "담당자ID (자동설정: vmis.system.chargerId)", example = "")
    @JsonProperty("CHARGER_ID")
    private String chargerId;

    @Schema(description = "담당자IP (자동설정: vmis.system.chargerIp)", example = "")
    @JsonProperty("CHARGER_IP")
    private String chargerIp;

    @Schema(description = "담당자명(사용자) (자동설정: vmis.system.chargerNm)", example = "")
    @JsonProperty("CHARGER_NM")
    private String chargerNm;

    @Schema(description = "자동차등록번호 (필수)", example = "12가3456")
    @JsonProperty("VHRNO")
    private String vhrno;

    @Schema(description = "개인정보공개 {1:소유자공개, 2:비공개, 3:비공개(주민등록번호), 4:비공개(사용본거지)} (기본값: 1, VmisRequestEnricher에서 자동설정)")
    @JsonProperty("ONES_INFORMATION_OPEN")
    private String onesInformationOpen;

    @Schema(description = "민원인성명 (통합조회 시 BasicResponse의 MBER_NM에서 자동매핑)")
    @JsonProperty("CPTTR_NM")
    private String cpttrNm;

    @Schema(description = "민원인주민번호 (통합조회 시 BasicResponse의 MBER_SE_NO에서 자동매핑)")
    @JsonProperty("CPTTR_IHIDNUM")
    @Size(max = 13)
    private String cpttrIhidnum;

    @Schema(description = "민원인법정동코드 (기본값: null)")
    @JsonProperty("CPTTR_LEGALDONG_CODE")
    private String cpttrLegaldongCode;

    @Schema(description = "경로구분코드 (기본값: 3, VmisRequestEnricher에서 자동설정)")
    @JsonProperty("ROUTE_SE_CODE")
    private String routeSeCode;

    @Schema(description = "내역표시 {1:전체내역, 2:최종내역} (기본값: 1, VmisRequestEnricher에서 자동설정)")
    @JsonProperty("DETAIL_EXPRESSION")
    private String detailExpression;

    @Schema(description = "조회구분코드 {1:열람, 2:발급} (기본값: 1, VmisRequestEnricher에서 자동설정)")
    @JsonProperty("INQIRE_SE_CODE")
    private String inqireSeCode;

}
