package cokr.xit.fims.cvlc.dao;

import java.util.List;
import java.util.Map;

import org.egovframe.rte.psl.dataaccess.mapper.Mapper;

import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.fims.cvlc.CrdnCvlcpt;
import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject;

/**민원 관리 DAO
 * @author leebj
 */
@Mapper("crdnCvlcptMapper")
public interface CrdnCvlcptMapper extends AbstractMapper {

	/** 단속민원을 등록한다.
	 * @param cvlcpt 단속민원
	 * @return 저장된 정보수
	 */
	int insertCvlcpt(CrdnCvlcpt cvlcpt);

	/** 민원접수자료 목록을 조회한다.<br />
	 * {@link cokr.xit.fims.cvlc.service.bean.CrdnCvlcptService#getCivilComplaintList(CrdnQuery)} 참고
	 * @param query 민원접수자료 목록 조회 조건
	 * @return 민원접수자료 목록
	 */
	List<DataObject> selectCivilComplaintReceiptDataList(CrdnQuery query);

	/** 민원 원본을 조회한다.
	 * @param query 민원원본 조회 조건
	 * @return 민원원본
	 */
	DataObject selectCivilComplaintOriginalInfo(CrdnQuery query);

	/** 민원접수 초기자료 상세 정보를 조회한다.
	 * @param query 민원접수 초기자료 조회 조건
	 * @return 민원접수 초기자료
	 */
	DataObject selectCivilComplaintReceiptInitialDataInfo(CrdnQuery query);

	/** 민원의 처리 정보를 수정한다.
	 * @param crdn 민원정보
	 * @return 저장된 정보 수
	 */
	int updateCvlcptProcessSection(Map<String,Object> param);

	/** 반송 민원의 처리 정보를 수정한다.
	 * @param crdn 민원정보
	 * @return 저장된 정보 수
	 */
	int updateCvlcptProcessSectionForSendBack(CrdnCvlcpt cvlcpt);

	/** 답변 내용을 초기화한다.
	 * @param crdnCvlcpt 단속민원
	 * @return 저장된 정보 수
	 */
	int initCvlcptPrcsRsltCn(CrdnCvlcpt crdnCvlcpt);

	/**민원답변대상자료 목록을 조회한다.<br />
	 * {@link cokr.xit.fims.cvlc.service.bean.CrdnCvlcptService#getCivilComplaintList(CrdnQuery)} 참고
	 * @param query 민원답변대상자료 목록 조회 조건
	 * @return 민원답변대상자료 목록
	 */
	List<DataObject> selectCivilComplaintAnswerTargetDataList(CrdnQuery query);

	/**민원자료 목록을 조회한다.<br />
	 * {@link cokr.xit.fims.cvlc.service.bean.CrdnCvlcptService#getCivilComplaintList(CrdnQuery)} 참고
	 * @param query 민원자료 목록 조회 조건
	 * @return 민원자료 목록
	 */
	List<DataObject> selectCivilComplaintList(CrdnQuery query);

	/**지정한 민원 자료의 예정 답변을 조회한다.
	 * @param crdnId 단속 ID
	 * @return 민원 예정 답변
	 */
	DataObject selectAnswerPreview(String crdnId);

	/**지정한 민원자료의 민원 답변 내용을 변경한다.
	 * @param crdnCvlcpt 단속민원 정보
	 * @return 저장된 정보 수
	 */
	int updateAnswerContent(CrdnCvlcpt crdnCvlcpt);

	/**답변대상목록을 단속ID목록으로 조회한다.
	 * @param crdnIDs 단속ID 목록
	 * @return 단속민원정보
	 */
	List<DataObject> selectAnswerTargetList(String[] crdnIDs);

	/**답변대상의 민원전송 상태를 변경한다.
	 * @param crdnCvlcpt 단속민원정보
	 * @return 저장된 정보 수
	 */
	int updateAnswerTargetTransmitStatus(CrdnCvlcpt crdnCvlcpt);

	/**민원 연계 ID로 민원처리정보를 조회한다.
	 * @param cvlcptLinkId 민원 연계 ID
	 * @return 민원처리정보
	 */
	DataObject selectCivilComplaintProcessInfo(String cvlcptLinkId);

	/** 단속정보를 수정한다.
	 * @param params 단속정보 수정 파라미터
	 * @return 저장된 정보 수
	 */
	int updateCrdn(Map<String, Object> params);

	/** 단속 부가정보를 수정한다.
	 * @param params 단속정보 수정 파라미터
	 * @return 저장된 정보 수
	 */
	int updateCrdnAddition(Map<String, Object> params);

	/** 지정한 단속자료로 단속대장을 복사 등록 처리한다.
	 * @param params 단속정보 등록 파라미터
	 * @return 저장된 정보 수
	 */
	int insertCrdnFromSelect(DataObject params);

	/** 지정한 단속자료로 단속부가정보대장을 복사 등록 처리한다.
	 * @param params 단속정보 등록 파라미터
	 * @return 저장된 정보 수
	 */
	int insertCrdnAdditionFromSelect(DataObject params);
}
