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;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Getter
@Setter
@Schema(description = "자동차기본사항조회 요청 항목 (구버전)")
public class OldBasicRequest { // 총 8개 필드 (외부 클래스 8개, 중첩 Record 클래스 4개)

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

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

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

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

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

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

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

    @Schema(description = "조회 대상 record 배열")
    @JsonProperty("record")
    private java.util.List<Record> record;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    @Getter
    @Setter
    @Schema(name = "OldBasicRequest.Record", description = "기본사항 요청 record 항목 (구버전)")
    public static class Record {
        @Schema(description = "부과기준일", example = "20250101")
        @JsonProperty("LEVY_STDDE")
        private String levyStdde;

        @Schema(description = "조회구분코드 (자동설정: VHRNO not null → 3:자동차번호, VIN not null → 2:차대번호)")
        @JsonProperty("INQIRE_SE_CODE")
        private String inqireSeCode;

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

        @Schema(description = "차대번호", example = "KMHAB812345678901")
        @JsonProperty("VIN")
        private String vin;
    }

}
