package itn.let.mjo.addr.service;

import java.util.List;

/**
 * 주소록 관리를 위한 서비스 인터페이스  클래스
 * @author ITN
 * @since 2021.04.08
 * @version 1.0
 * @see
 *
 * <pre>
 * << 개정이력(Modification Information) >>
 *   수정일      수정자          수정내용
 *  -------    --------    ---------------------------
 *  2021.04.08  ITN          최초 생성
 *  </pre>
 */
public interface AddrService {

	List<AddrVO> selectAddrList(AddrVO addrVO) throws Exception;
	
	List<AddrVO> selectAddrNewList(AddrVO addrVO) throws Exception;
	
	AddrVO selectAddrDetail(AddrVO addrVO) throws Exception;
	
	void insertAddr(AddrVO addrVO) throws Exception;

	int updateAddr(AddrVO addrVO) throws Exception;
	
	int updateAddrGrp(AddrVO addrVO) throws Exception;	
	
	int updateMemoAddr(AddrVO addrVO) throws Exception;	
	
	int updateAddrByAdmin(AddrVO addrVO) throws Exception;	
	
	int deleteAddr(AddrVO addrVO) throws Exception;
	
	int deleteAddrByAdmin(AddrVO addrVO) throws Exception;
	
	int deleteAddrByAdminAll(AddrVO addrVO) throws Exception;
	
	int deleteAddrByAdminByGrpid(AddrVO addrVO) throws Exception;
	
	int deleteAddrByAdminByGrpidAll(AddrVO addrVO) throws Exception;

	List<AddrVO> selectAddrBasicGrpList(AddrVO addrVO) throws Exception;

	int selectAddrTotalCount(AddrVO addrVO) throws Exception;

	void insertCopyAddr(AddrVO addrVO) throws Exception;

	String updateAddrAnotherMember(AddrVO addrVO, AddrGroupVO addrGroupVO, AddrTransHistVO addrTransHistVO) throws Exception;
	
	//주소록 등록 총 건수 및 정보 불러오기
	public List<?> selectAddrTotCntInfByUserId(AddrVO addrVO) throws Exception;
	
	//문자발송에서 수신자 리스트를 주소록에 등록하기
	public int insertAddrList(List<AddrVO> addrList) throws Exception;
	
	public int selectDuplAddrCnt(AddrVO addrVO) throws Exception;

	List<?> selectPhoneNumInAddrGroup(AddrVO addrVO) throws Exception;
	
	public List<AddrVO> selectAddrDataList(AddrVO addrVO) throws Exception;
	
	// 주소록 그룹별 중복 연락처 삭제
	int deleteAddrDupliList(AddrVO addrVO) throws Exception;
	
	// 주소록 그룹별 중복 연락처 삭제
	int deleteAddrDupliListByGrpnm(AddrVO addrVO) throws Exception;
	
	// 주소록 전체 중복 연락처 중 한개만 남기고 삭제
	int deleteAddrDupliListByAll(AddrVO addrVO) throws Exception;
	
	// 주소록 그룹별 중복 연락처 리스트 불러오기
	List<AddrVO> selectAddrDupliList(AddrVO addrVO) throws Exception;

	// 주소록 그룹별 중복 연락처 리스트 불러오기
	List<AddrVO> selectAddrDupliListByGrpnm(AddrVO addrVO) throws Exception;
	
	// 주소록 전체 중복 연락처 수
	public int selectAddrDupliListByAllCnt(AddrVO addrVO) throws Exception;	
	
	// 주소록 전체 중복 연락처 목록
	public List<AddrVO> selectAddrDupliListByAll(AddrVO addrVO) throws Exception;
	
	// TEMP 주소록 중복 연락처 목록
	public List<AddrVO> selectTempAddrDupliList(AddrVO addrVO) throws Exception;
	
	// TEMP 주소록 삭제
	int deleteTempAddr(AddrVO addrVO) throws Exception;
	
	// TEMP 주소록 대량등록
	public int insertTempAddrList(List<AddrVO> addrList) throws Exception;
	
	// 주소록 대량등록 By Temp 주소록
	public int insertAddrByTempAddr(AddrVO addrVO) throws Exception;
	
	// 주소록 대량등록 By Temp 주소록 All
	public int insertAddrByTempAddrAll(List<AddrVO> addrList, AddrVO addrVO) throws Exception;
	
}
