package incheon.ags.aip.service;

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

import incheon.ags.aip.util.AipAuthUtil.AipAuthInfo;
import incheon.ags.aip.vo.AipIntprSearchVO;
import incheon.ags.aip.vo.AipIntprVO;

public interface AipIntprService {
	
	/**
	 * 판독 count
	 * @param vo
	 * @return 판독 count
	 * @exception Exception
	 */
	public int getIntprCount(AipIntprSearchVO vo) throws Exception;
	
	/**
	 * 판독 리스트 검색
	 * @param vo
	 * @return 판독 List
	 * @exception Exception
	 */
	public List<Map<String, Object>> getIntprList(AipIntprSearchVO vo) throws Exception;

	
	
	/**
	 * 판독 요청 상세
	 * @param vo
	 * @return 판독 상세검색
	 * @exception Exception
	 */
	public Map<String, Object> getRqstMap(Map<String, Object> param) throws Exception;
	
	/**
	 * 판독 요청 File List
	 * @param vo
	 * @return 판독 File List
	 * @exception Exception
	 */
	public List<Map<String, Object>> getRqstFileList(Map<String, Object> param) throws Exception;
	
	/**
	 * 판독 요청 상태 변경
	 * @param param
	 * @return 
	 * @exception Exception
	 */
	public void updateStts(Map<String, Object> param) throws Exception;
	
	/**
	 * 판독 결과 상세
	 * @param vo
	 * @return 판독 상세검색
	 * @exception Exception
	 */
	public Map<String, Object> getRsltMap(Map<String, Object> param) throws Exception;
	
	/**
	 * 판독 결과 File List
	 * @param vo
	 * @return 판독 File List
	 * @exception Exception
	 */
	public List<Map<String, Object>> getRsltFileList(Map<String, Object> param) throws Exception;
	
	
	
	/**
	 * 판독 요청 등록
	 * @param param
	 * @return
	 * @exception Exception
	 */
	public int insertRqst(AipIntprVO vo) throws Exception;

	/**
	 * 판독 요청 파일 삭제
	 * @param uuid
	 * @return
	 * @exception Exception
	 */
	public List<Map<String, Object>> deleteRqstFiles(List<String> uuid) throws Exception;
	
	/**
	 * 판독 요청 파일 업로드
	 * @param file
	 * @return
	 * @exception Exception
	 */
	public int insertRqstFile(Map<String, Object> file) throws Exception;
	
	/**
	 * 판독 결과 등록
	 * @param param
	 * @return
	 * @exception Exception
	 */
	public int insertRslt(AipIntprVO vo) throws Exception;

	/**
	 * 판독 결과 파일 삭제
	 * @param uuid
	 * @return
	 * @exception Exception
	 */
	public List<Map<String, Object>> deleteRsltFiles(List<String> uuid) throws Exception;
	
	/**
	 * 결과 등록
	 * @param file
	 * @return
	 * @exception Exception
	 */
	public int insertRsltFile(Map<String, Object> file) throws Exception;

	
	/**
	 * 의뢰 수정
	 * @param rqstId
	 * @return
	 * @exception Exception
	 */
	int updateRqst(AipIntprVO vo) throws Exception;

	/**
	 * 결과 수정
	 * @param rqstId
	 * @return
	 * @exception Exception
	 */
	int updateRslt(AipIntprVO vo) throws Exception;
	
	/**
	 * 결과 삭제
	 * @param rqstId
	 * @return
	 * @exception Exception
	 */
	List<Map<String, Object>> deleteRsltCascadeByRqstId(Long rqstId) throws Exception;
	/**
	 * 
	 * 의뢰 삭제
	 * @param rqstId
	 * @return
	 * @exception Exception
	 */
	List<Map<String, Object>> deleteRqstCascadeByRqstId(Long rqstId, AipAuthInfo auth) throws Exception;

}
