package go.kr.project.carInspectionPenalty.history.service.impl;

import go.kr.project.api.model.CarBassMatterInqireVO;
import go.kr.project.api.model.CarLedgerFrmbkDtlVO;
import go.kr.project.api.model.CarLedgerFrmbkVO;
import go.kr.project.carInspectionPenalty.history.mapper.VehicleApiHistoryMapper;
import go.kr.project.carInspectionPenalty.history.model.VehicleApiHistorySearchVO;
import go.kr.project.carInspectionPenalty.history.service.VehicleApiHistoryService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * packageName    : go.kr.project.carInspectionPenalty.history.service.impl
 * fileName       : VehicleApiHistoryServiceImpl
 * author         : 시스템 관리자
 * date           : 2025-11-06
 * description    : 차량 API 조회 이력 서비스 구현체
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2025-11-06        시스템 관리자             최초 생성
 */
@Service
@RequiredArgsConstructor
@Slf4j
public class VehicleApiHistoryServiceImpl extends EgovAbstractServiceImpl implements VehicleApiHistoryService {

    private final VehicleApiHistoryMapper mapper;

    // ==================== 자동차 기본정보 조회 이력 ====================

    @Override
    public List<CarBassMatterInqireVO> selectCarBassMatterInqireList(VehicleApiHistorySearchVO searchVO) {
        log.debug("자동차 기본정보 조회 이력 목록 조회 - 검색 조건: {}", searchVO);
        return mapper.selectCarBassMatterInqireList(searchVO);
    }

    @Override
    public int selectCarBassMatterInqireListTotalCount(VehicleApiHistorySearchVO searchVO) {
        log.debug("자동차 기본정보 조회 이력 총 개수 조회 - 검색 조건: {}", searchVO);
        return mapper.selectCarBassMatterInqireListTotalCount(searchVO);
    }

    @Override
    public CarBassMatterInqireVO selectCarBassMatterInqireOne(String carBassMatterInqire) {
        log.debug("자동차 기본정보 조회 이력 상세 조회 - ID: {}", carBassMatterInqire);
        return mapper.selectCarBassMatterInqireOne(carBassMatterInqire);
    }

    // ==================== 자동차 등록원부(갑) 조회 이력 ====================

    @Override
    public List<CarLedgerFrmbkVO> selectCarLedgerFrmbkList(VehicleApiHistorySearchVO searchVO) {
        log.debug("자동차 등록원부(갑) 조회 이력 목록 조회 - 검색 조건: {}", searchVO);
        return mapper.selectCarLedgerFrmbkList(searchVO);
    }

    @Override
    public int selectCarLedgerFrmbkListTotalCount(VehicleApiHistorySearchVO searchVO) {
        log.debug("자동차 등록원부(갑) 조회 이력 총 개수 조회 - 검색 조건: {}", searchVO);
        return mapper.selectCarLedgerFrmbkListTotalCount(searchVO);
    }

    @Override
    public CarLedgerFrmbkVO selectCarLedgerFrmbkOne(String carLedgerFrmbkId) {
        log.debug("자동차 등록원부(갑) 조회 이력 상세 조회 - ID: {}", carLedgerFrmbkId);
        return mapper.selectCarLedgerFrmbkOne(carLedgerFrmbkId);
    }

    // ==================== 자동차 등록원부(갑) 상세 조회 이력 ====================

    @Override
    public List<CarLedgerFrmbkDtlVO> selectCarLedgerFrmbkDtlList(String carLedgerFrmbkId) {
        log.debug("자동차 등록원부(갑) 상세 조회 이력 목록 조회 - 원부 갑 ID: {}", carLedgerFrmbkId);
        return mapper.selectCarLedgerFrmbkDtlList(carLedgerFrmbkId);
    }

    @Override
    public CarLedgerFrmbkDtlVO selectCarLedgerFrmbkDtlOne(String carLedgerFrmbkDtlId) {
        log.debug("자동차 등록원부(갑) 상세 조회 이력 상세 조회 - ID: {}", carLedgerFrmbkDtlId);
        return mapper.selectCarLedgerFrmbkDtlOne(carLedgerFrmbkDtlId);
    }

    @Override
    public String selectLatestCarBassMatterInqireIdByVhclno(String vhclno) {
        log.debug("차량번호로 최신 자동차 기본정보 조회 이력 ID 조회 - 차량번호: {}", vhclno);
        return mapper.selectLatestCarBassMatterInqireIdByVhclno(vhclno);
    }

    @Override
    public String selectLatestCarLedgerFrmbkIdByVhclno(String vhclno) {
        log.debug("차량번호로 최신 자동차 등록원부(갑) 조회 이력 ID 조회 - 차량번호: {}", vhclno);
        return mapper.selectLatestCarLedgerFrmbkIdByVhclno(vhclno);
    }
}
