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

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
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 java.util.List;

/**
 * 자동차기본사항조회 응답 모델 (구버전)
 *
 * <p>
 * 구 규격(도로교통공단/교통안전공단 구버전) 응답을 매핑한 모델입니다.
 * 상단에 연계 결과코드/상세가 오고, 상세 데이터는 record 배열로 내려옵니다.
 * </p>
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@Schema(description = "자동차기본사항조회 응답 모델 (구버전)")
@Getter
@Setter
public class OldBasicResponse { // 총 3개 필드 (외부 클래스 3개, 중첩 Record 클래스 84개)

    /** 연계결과코드 */
    @JsonProperty("CNTC_RESULT_CODE")
    private String cntcResultCode;

    /** 연계결과상세 */
    @JsonProperty("CNTC_RESULT_DTLS")
    private String cntcResultDtls;

    /** 응답 레코드 목록 */
    @JsonProperty("record")
    private List<Record> record;


    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonIgnoreProperties(ignoreUnknown = true)
    @Schema(name = "OldBasicRecord", description = "기본사항 record 항목 (구버전)")
    @Getter
    @Setter
    public static class Record {
        @JsonProperty("PRYE") private String prye; // 연식
        @JsonProperty("REGIST_DE") private String registDe; // 등록일자(변경일)
        @JsonProperty("ERSR_REGIST_SE_CODE") private String ersrRegistSeCode; // 말소등록구분코드
        @JsonProperty("ERSR_REGIST_SE_NM") private String ersrRegistSeNm; // 말소등록구분명
        @JsonProperty("ERSR_REGIST_DE") private String ersrRegistDe; // 말소등록일자
        @JsonProperty("REGIST_DETAIL_CODE") private String registDetailCode; // 등록상세코드
        @JsonProperty("DSPLVL") private String dsplvl; // 배기량
        @JsonProperty("USE_STRNGHLD_LEGALDONG_CODE") private String useStrnghldLegaldongCode; // 사용본거지법정동코드
        @JsonProperty("USE_STRNGHLD_ADSTRD_CODE") private String useStrnghldAdstrdCode; // 사용본거지행정동코드
        @JsonProperty("USE_STRNGHLD_MNTN") private String useStrnghldMntn; // 사용본거지산 여부
        @JsonProperty("USE_STRNGHLD_LNBR") private String useStrnghldLnbr; // 사용본거지번지
        @JsonProperty("USE_STRNGHLD_HO") private String useStrnghldHo; // 사용본거지호
        @JsonProperty("USE_STRNGHLD_ADRES_NM") private String useStrnghldAdresNm; // 사용본거지상세주소
        @JsonProperty("USE_STRNGHLD_ROAD_NM_CODE") private String useStrnghldRoadNmCode; // 사용본거지도로명코드
        @JsonProperty("USGSRHLD_UNDGRND_BULD_SE_CODE") private String usgsrhldUndgrndBuldSeCode; // 사용본거지지하건물구분코드
        @JsonProperty("USE_STRNGHLD_BULD_MAIN_NO") private String useStrnghldBuldMainNo; // 사용본거지건물주요번호
        @JsonProperty("USE_STRNGHLD_BULD_SUB_NO") private String useStrnghldBuldSubNo; // 사용본거지건물부번호
        @JsonProperty("USGSRHLD_ADRES_FULL") private String usgsrhldAdresFull; // 사용본거지전체주소
        @JsonProperty("MBER_SE_CODE") private String mberSeCode; // 대표소유자회원구분코드
        @JsonProperty("MBER_NM") private String mberNm; // 대표소유자성명
        @JsonProperty("MBER_SE_NO") private String mberSeNo; // 대표소유자회원번호
        @JsonProperty("TELNO") private String telno; // 대표소유자전화번호
        @JsonProperty("OWNER_LEGALDONG_CODE") private String ownerLegaldongCode; // 소유자법정동코드
        @JsonProperty("OWNER_ADSTRD_CODE") private String ownerAdstrdCode; // 소유자행정동코드
        @JsonProperty("OWNER_MNTN") private String ownerMntn; // 소유자산 여부
        @JsonProperty("OWNER_LNBR") private String ownerLnbr; // 소유자번지
        @JsonProperty("OWNER_HO") private String ownerHo; // 소유자호
        @JsonProperty("OWNER_ADRES_NM") private String ownerAdresNm; // 소유자상세주소
        @JsonProperty("OWNER_ROAD_NM_CODE") private String ownerRoadNmCode; // 소유자도로명코드
        @JsonProperty("OWNER_UNDGRND_BULD_SE_CODE") private String ownerUndgrndBuldSeCode; // 소유자지하건물구분코드
        @JsonProperty("OWNER_BULD_MAIN_NO") private String ownerBuldMainNo; // 소유자건물주요번호
        @JsonProperty("OWNER_BULD_SUB_NO") private String ownerBuldSubNo; // 소유자건물부번호
        @JsonProperty("OWNER_ADRES_FULL") private String ownerAdresFull; // 소유자전체주소
        @JsonProperty("AFTR_VHRNO") private String aftrVhrno; // 신차량번호
        @JsonProperty("USE_FUEL_CODE") private String useFuelCode; // 사용연료코드
        @JsonProperty("PRPOS_SE_CODE") private String prposSeCode; // 용도구분코드
        @JsonProperty("MTRS_FOM_NM") private String mtrsFomNm; // 원동기형식명
        @JsonProperty("FRNT_VHRNO") private String frntVhrno; // 이전차량번호
        @JsonProperty("VHRNO") private String vhrno; // 차량번호
        @JsonProperty("VIN") private String vin; // 차대번호
        @JsonProperty("CNM") private String cnm; // 차명
        @JsonProperty("VHCLE_TOT_WT") private String vhcleTotWt; // 차량총중량
        @JsonProperty("CAAG_ENDDE") private String caagEndde; // 차령만료일자
        @JsonProperty("CHANGE_DE") private String changeDe; // 차번호변경시기
        @JsonProperty("VHCTY_ASORT_CODE") private String vhctyAsortCode; // 차종종별코드
        @JsonProperty("VHCTY_TY_CODE") private String vhctyTyCode; // 차종유형코드
        @JsonProperty("VHCTY_SE_CODE") private String vhctySeCode; // 차종분류코드
        @JsonProperty("MXMM_LDG") private String mxmmLdg; // 최대적재량
        @JsonProperty("VHCTY_ASORT_NM") private String vhctyAsortNm; // 차종종별명
        @JsonProperty("VHCTY_TY_NM") private String vhctyTyNm; // 차종유형명
        @JsonProperty("VHCTY_SE_NM") private String vhctySeNm; // 차종분류명
        @JsonProperty("FRST_REGIST_DE") private String frstRegistDe; // 최초등록일
        @JsonProperty("FOM_NM") private String fomNm; // 형식
        @JsonProperty("ACQS_DE") private String acqsDe; // 취득일자
        @JsonProperty("ACQS_END_DE") private String acqsEndDe; // 취득종료일자
        @JsonProperty("YBL_MD") private String yblMd; // 제작연월(추정)
        @JsonProperty("TRANSR_REGIST_DE") private String transrRegistDe; // 이전등록일(양수일)
        @JsonProperty("SPCF_REGIST_STTUS_CODE") private String spcfRegistSttusCode; // 제원등록상태코드
        @JsonProperty("COLOR_NM") private String colorNm; // 색상명
        @JsonProperty("MRTG_CO") private String mrtgCo; // 저당수
        @JsonProperty("SEIZR_CO") private String seizrCo; // 압류건수
        @JsonProperty("STMD_CO") private String stmdCo; // 기타 설정/처분 건수(추정)
        @JsonProperty("NMPL_CSDY_AT") private String nmplCsdyAt; // 번호판영치여부
        @JsonProperty("NMPL_CSDY_REMNR_DE") private String nmplCsdyRemnrDe; // 번호판영치최고일
        @JsonProperty("ORIGIN_SE_CODE") private String originSeCode; // 출처구분코드
        @JsonProperty("NMPL_STNDRD_CODE") private String nmplStndrdCode; // 번호판규격코드
        @JsonProperty("ACQS_AMOUNT") private String acqsAmount; // 취득금액
        @JsonProperty("INSPT_VALID_PD_BGNDE") private String insptValidPdBgnde; // 검사유효기간시작일
        @JsonProperty("INSPT_VALID_PD_ENDDE") private String insptValidPdEndde; // 검사유효기간종료일
        @JsonProperty("USE_STRNGHLD_GRC_CODE") private String useStrnghldGrcCode; // 사용본거지관청코드
        @JsonProperty("TKCAR_PSCAP_CO") private String tkcarPscapCo; // 승차정원수
        @JsonProperty("SPMNNO") private String spmnno; // 제원관리번호
        @JsonProperty("TRVL_DSTNC") private String trvlDstnc; // 주행거리
        @JsonProperty("FRST_REGIST_RQRCNO") private String frstRegistRqrcno; // 최초등록접수번호
        @JsonProperty("VLNT_ERSR_PRVNTC_NTICE_DE") private String vlntErsrPrvntcNticeDe; // 예고통지일
        @JsonProperty("REGIST_INSTT_NM") private String registInsttNm; // 등록기관명
        @JsonProperty("PROCESS_IMPRTY_RESN_CODE") private String processImprtyResnCode; // 처리불가사유코드
        @JsonProperty("PROCESS_IMPRTY_RESN_DTLS") private String processImprtyResnDtls; // 처리불가사유명세
        @JsonProperty("CBD_LT") private String cbdLt; // 차체길이
        @JsonProperty("CBD_BT") private String cbdBt; // 차체너비
        @JsonProperty("CBD_HG") private String cbdHg; // 차체높이
        @JsonProperty("FRST_MXMM_LDG") private String frstMxmmLdg; // 최초최대적재량
        @JsonProperty("FUEL_CNSMP_RT") private String fuelCnsmpRt; // 연료소비율
        @JsonProperty("ELCTY_CMPND_FUEL_CNSMP_RT") private String elctyCmpndFuelCnsmpRt; // 전기복합연료소비율

    }
}
