package cokr.xit.fims.crdn.service;

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

import cokr.xit.base.file.FileInfo;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.CrdnQuery;
import cokr.xit.foundation.data.DataObject;

public interface CrdnService {

	/** 단속자료 목록을 조회한다.
	 * @param query 단속자료 목록 조회 조건
	 * <ul><li>pageNum: 페이지 번호</li>
	 *     <li>fetchSize: 페이지 목록 건수</li>
	 * </ul>
	 * @return 단속자료 목록
	 */
	List<DataObject> getCrackdownList(CrdnQuery query);

	/** 단속자료를 삭제한다.
	 * @param crdnIDs 삭제할 단속자료 ID 목록
	 * @return 삭제여부
	 */
	boolean remove(String... crdnIDs);

	/** 단속 자료를 신규 등록한다.
	 * @param nonQueryRequest 등록 요청, crdn 단속정보, newFileList 업로드 파일 목록
	 * @return 저장여부
	 */
	boolean create(Map<String, Object> nonQueryRequest, Crdn crdn, List<FileInfo> newFileInfoList);

	/** 단속 자료를 수정한다.
	 * @param nonQueryRequest 수정 요청, crdn 단속정보, newFileInfoList 업로드 파일 목록
	 * @return 저장여부
	 */
	boolean update(Map<String,Object> nonQueryRequest, Crdn crdn, List<FileInfo> newFileInfoList);

	/** 시간초과 정보를 변경하고, 금액을 증가 또는 감소시킨다.
	 * @param chgAmtSe 금액 변경 구분, crdnId 단속 ID
	 * @return 저장여부
	 */
	boolean updateOverTimeInfo(String chgAmtSe, String crdnId);

	/** 표지정보 미확인 자료를 확인 자료로 수정한다.
	 * @param crdn 단속정보
	 * @return 저장여부
	 */
	boolean updateTagInfo(Crdn crdn);

	/** 단속 자료를 삭제한다.
	 * @param crdn 단속정보
	 * @return 저장 메시지
	 */
	public String removeCrackdown(Crdn crdn);

}
