package itn.let.fax.addr.service;

import java.util.List;

import itn.let.mjo.addr.service.AddrVO;

public interface FaxAddrService {

	List<FaxAddrVO> selectFaxAddrList(FaxAddrVO faxAddrVO) throws Exception;
	
	List<FaxAddrVO> selectFaxAddrNewList(FaxAddrVO faxAddrVO) throws Exception;
	
	FaxAddrVO selectFaxAddrDetail(FaxAddrVO faxAddrVO) throws Exception;
	
	void insertFaxAddr(FaxAddrVO faxAddrVO) throws Exception;

	int updateFaxAddr(FaxAddrVO faxAddrVO) throws Exception;
	
	int updateFaxAddrGrp(FaxAddrVO faxAddrVO) throws Exception;	
	
	int updateMemoFaxAddr(FaxAddrVO faxAddrVO) throws Exception;	
	
	int updateFaxAddrByAdmin(FaxAddrVO faxAddrVO) throws Exception;	
	
	int deleteFaxAddr(FaxAddrVO faxAddrVO) throws Exception;
	
	int deleteFaxAddrByAdmin(FaxAddrVO faxAddrVO) throws Exception;
	
	int deleteFaxAddrByAdminAll(FaxAddrVO faxAddrVO) throws Exception;
	
	int deleteFaxAddrByAdminByGrpid(FaxAddrVO faxAddrVO) throws Exception;
	
	int deleteFaxAddrByAdminByGrpidAll(FaxAddrVO faxAddrVO) throws Exception;

	List<FaxAddrVO> selectFaxAddrBasicGrpList(FaxAddrVO faxAddrVO) throws Exception;

	int selectFaxAddrTotalCount(FaxAddrVO faxAddrVO) throws Exception;

	void insertCopyFaxAddr(FaxAddrVO faxAddrVO) throws Exception;

	String updateFaxAddrAnotherMember(FaxAddrVO faxAddrVO, FaxAddrGroupVO addrGroupVO, FaxAddrTransHistVO addrTransHistVO) throws Exception;
	
	//주소록 등록 총 건수 및 정보 불러오기
	public List<?> selectFaxAddrTotCntInfByUserId(FaxAddrVO faxAddrVO) throws Exception;
	
	//문자발송에서 수신자 리스트를 주소록에 등록하기
	public int insertFaxAddrList(List<FaxAddrVO> FaxAddrList) throws Exception;
	
	public int selectDuplFaxAddrCnt(FaxAddrVO faxAddrVO) throws Exception;

	List<?> selectPhoneNumInFaxAddrGroup(FaxAddrVO faxAddrVO) throws Exception;
	
	public List<FaxAddrVO> selectFaxAddrDataList(FaxAddrVO faxAddrVO) throws Exception;
	
	// 주소록 그룹별 중복 연락처 삭제
	int deleteFaxAddrDupliList(FaxAddrVO faxAddrVO) throws Exception;
	
	// 주소록 그룹별 중복 연락처 삭제
	int deleteFaxAddrDupliListByGrpnm(FaxAddrVO faxAddrVO) throws Exception;
	
	// 주소록 전체 중복 연락처 중 한개만 남기고 삭제
	int deleteFaxAddrDupliListByAll(FaxAddrVO faxAddrVO) throws Exception;
	
	// 주소록 그룹별 중복 연락처 리스트 불러오기
	List<FaxAddrVO> selectFaxAddrDupliList(FaxAddrVO faxAddrVO) throws Exception;

	// 주소록 그룹별 중복 연락처 리스트 불러오기
	List<FaxAddrVO> selectFaxAddrDupliListByGrpnm(FaxAddrVO faxAddrVO) throws Exception;
	
	// 주소록 전체 중복 연락처 수
	public int selectFaxAddrDupliListByAllCnt(FaxAddrVO faxAddrVO) throws Exception;	
	
	// 주소록 전체 중복 연락처 목록
	public List<FaxAddrVO> selectFaxAddrDupliListByAll(FaxAddrVO faxAddrVO) throws Exception;
	
	// TEMP 주소록 중복 연락처 목록
	public List<FaxAddrVO> selectTempFaxAddrDupliList(FaxAddrVO faxAddrVO) throws Exception;
	
	// TEMP 주소록 삭제
	int deleteTempFaxAddr(FaxAddrVO faxAddrVO) throws Exception;
	
	// TEMP 주소록 대량등록
	public int insertTempFaxAddrList(List<FaxAddrVO> FaxAddrList) throws Exception;
	
	// 주소록 대량등록 By Temp 주소록
	public int insertFaxAddrByTempAddr(FaxAddrVO faxAddrVO) throws Exception;
	
	// 주소록 대량등록 By Temp 주소록 All
	public int insertFaxAddrByTempAddrAll(List<FaxAddrVO> FaxAddrList, FaxAddrVO addrVO) throws Exception;

	List<FaxAddrVO> selectFaxAddrListAjax(FaxAddrVO faxAddrVO);
	
}
