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

import go.kr.project.api.config.ApiConstant;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

/**
 * 자동차 등록 원부(갑) 상세 엔티티 VO, DB 저장용
 *
 * <p>tb_car_ledger_frmbk_dtl 테이블 매핑</p>
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VmisCarLedgerFrmbkDtlVO {

    // ==== Static factory/mapping methods (moved from Service) ====
    public static List<VmisCarLedgerFrmbkDtlVO> listFromResponse(LedgerResponse res, String masterId) {
        List<VmisCarLedgerFrmbkDtlVO> list = new ArrayList<>();
        if (res == null || res.getRecord() == null) return list;
        for (LedgerResponse.Record r : res.getRecord()) {
            VmisCarLedgerFrmbkDtlVO vo = VmisCarLedgerFrmbkDtlVO.builder()
                    .carLedgerFrmbkId(masterId)  // 원부 마스터 ID (FK)
                    .mainchk(r.getMainchk())  // 주요 체크
                    .changeJobSeCode(r.getChangeJobSeCode())  // 변경 작업 구분 코드
                    .mainno(r.getMainno())  // 주번호
                    .subno(r.getSubno())  // 부번호
                    .dtls(r.getDtls())  // 상세 내역
                    .rqrcno(r.getRqrcno())  // 접수번호
                    .vhmno(r.getVhmno())  // 차량관리번호
                    .ledgerGroupNo(r.getLedgerGroupNo())  // 원부 그룹 번호
                    .ledgerIndvdlzNo(r.getLedgerIndvdlzNo())  // 원부 개별화 번호
                    .gubunNm(r.getGubunNm())  // 구분명
                    .changeDe(r.getChangeDe())  // 변경일자
                    .detailSn(r.getDetailSn())  // 상세 순번
                    .flag(r.getFlag())  // 플래그
                    .rgtr(ApiConstant.DEFAULT_REGISTRANT)  // 등록자
                    .build();
            list.add(vo);
        }
        return list;
    }

    // PK
    private String carLedgerFrmbkDtlId;

    // FK
    private String carLedgerFrmbkId;

    // 본문
    private String mainchk;
    private String changeJobSeCode;
    private String mainno;
    private String subno;
    private String dtls;
    private String rqrcno;
    private String vhmno;
    private String ledgerGroupNo;
    private String ledgerIndvdlzNo;
    private String gubunNm;
    private String changeDe;
    private String detailSn;
    private String flag;

    // 감사
    private String rgtr;
}
