package com.interplug.qcast.biz.estimate;

import com.interplug.qcast.biz.estimate.dto.*;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface EstimateMapper {
  // 견적서 상세 확인
  public EstimateResponse selectEstimateDetail(EstimateRequest estimateRequest);

  // 견적서 PDF 상세 확인
  public EstimateResponse selectEstimatePdfDetail(EstimateRequest estimateRequest);

  // 견적서 API 상세 확인
  public EstimateSendResponse selectEstimateApiDetail(EstimateRequest estimateRequest);

  // 견적서 API 실패 목록 조회
  public List<EstimateSendResponse> selectEstimateApiFailList();

  // 견적서 아이템 목록 조회
  public List<ItemResponse> selectEstimateItemList(EstimateRequest estimateRequest);

  // 아이템 마스터 목록 조회
  public List<ItemResponse> selectItemMasterList(EstimateRequest estimateRequest);

  // 아이템 마스터 BOM 목록 조회
  public List<ItemResponse> selectItemMasterBomList(String itemId);

  // 견적서 지붕재 인증용량 조회
  public String selectEstimateRoofCertVolKw(EstimateRequest estimateRequest);

  // 견적서 지붕재 목록 조회
  public List<RoofResponse> selectEstimateRoofList(EstimateRequest estimateRequest);

  // 견적서 지붕재 아이템 목록 조회
  public List<RoofResponse> selectEstimateRoofItemList(EstimateRequest estimateRequest);

  // 견적서 지붕재 PC 목록 조회
  public List<RoofResponse> selectEstimateRoofPcList(EstimateRequest estimateRequest);

  // 견적서 지붕재 용량 목록 조회
  public List<RoofResponse> selectEstimateRoofVolList(EstimateRequest estimateRequest);

  // 견적서 특이사항 타이틀 목록 조회
  public List<NoteResponse> selectEstimateNoteTitleList(NoteRequest noteRequest);

  // 견적서 특이사항 목록 조회
  public List<NoteResponse> selectEstimateNoteList(NoteRequest noteRequest);

  // 아이템 마스터 목록 조회
  public List<NoteResponse> selectEstimateNoteItemList(NoteRequest noteRequest);

  // 아이템 히스토리 번호 조회
  public String selectEstimateItemHisNo(EstimateRequest estimateRequest);

  // 물건정보 수정
  public int updateObject(EstimateRequest estimateRequest);

  // 견적서 정보 수정
  public int updateEstimate(EstimateRequest estimateRequest);

  // 견적서 API 정보 수정
  public int updateEstimateApi(EstimateRequest estimateRequest);

  // 견적서 지붕재 등록
  public int insertEstimateRoof(RoofRequest roofRequest);

  // 견적서 지붕재 아이템 등록
  public int insertEstimateRoofItem(ItemRequest itemRequest);

  // 견적서 아이템 등록
  public int insertEstimateItem(ItemRequest itemRequest);

  // 견적서 아이템 히스토리 등록
  public int insertEstimateItemHis(ItemRequest itemRequest);

  // 견적서 지붕재 목록 삭제(물리 삭제)
  public int deleteEstimateRoofList(EstimateRequest estimateRequest);

  // 견적서 지붕재 아이템 목록 삭제(물리 삭제)
  public int deleteEstimateRoofItemList(EstimateRequest estimateRequest);

  // 견적서 아이템 목록 삭제(물리 삭제)
  public int deleteEstimateItemList(EstimateRequest estimateRequest);

  // 견적서 복사
  public int insertEstimateCopy(EstimateCopyRequest estimateCopyRequest);

  // Plan 확정 동기화
  public int updatePlanConfirmSync(PlanSyncResponse planSyncData);
}
