package itn.let.mjo.msgdata.service;

import java.util.List;

import itn.let.lett.service.LetterVO;
import itn.let.mjo.addr.service.AddrVO;
import itn.let.mjo.msg.service.MjonMsgVO;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.uat.uia.web.SendLogVO;
import itn.let.uss.umt.service.MberManageVO;

public interface MjonMsgDataService {

	// 전송사 구분 코드 리스트 불러오기
	public List<MjonMsgDataVO> selectCcmCmmCodeList() throws Exception; 
	
	// 중계사 문자 내용 입력
	public MjonMsgReturnVO insertMsgDataInfo(MjonMsgVO mjonMsgVO) throws Exception;
	
	// 중계사 문자 내용 입력(성능테스트용)
	public MjonMsgReturnVO insertMsgTestDataInfo(MjonMsgVO mjonMsgVO
			, int i_nRate
			, int i_hRate
			, int i_iRate		
			, String p_getMsgGroupId
			) throws Exception;
	
	//080 자동 수신거부목록 > 결과알림 => 수신거부목록 체크 제거  
	// 중계사 문자 내용 입력
	public MjonMsgReturnVO insertMsgDataByBlockInfo(MjonMsgVO mjonMsgVO) throws Exception;	
	
	//관리자 회원정보화면 문자 발송하기
	public MjonMsgReturnVO insertAdmToMberMsgDataInfo(MjonMsgVO mjonMsgVO) throws Exception;	
	
	// 단/장문 문자 리스트 불러오기
	public List<?> selectLetterList(LetterVO letterVO) throws Exception;
	
	// 그림문자 리스트 불러오기
	public List<?> selectPhotoLetterList(LetterVO letterVO) throws Exception;
	
	// 맞춤제작 전체 이미지 리스트 불러오기
	public List<?> selectCustomPopupImgList(LetterVO letterVO) throws Exception;
	
	// 내 문자 보관함 저장하기
	public int insertMyMsgDataAjax(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//내 문자 보관함 리스트 불러오기
	public List<?> selectMyMsgDataListAjax(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//발신번호 리스트 불러오기
	public List<String> selectSendPhonNumList(String userId) throws Exception;
	
	//차단 발신번호 리스트 불러오기
	public List<String> selectBlockPhonNumList() throws Exception;
	
	//시스템 기본 단가 정보 불러오기
	public JoinSettingVO selectJoinSettingInfo() throws Exception;
	
	//사용자 정보의 단가 정보 불러오기
	public MberManageVO selectMberManageInfo(String userId) throws Exception;
	
	//내 문자함 포토 이미지 첨부파일 정보 불러오기
	public List<?> selectMyMsgPhotoListInfo(List<?> myMsgList) throws Exception;
	
	//내 문자함 문자 삭제 처리
	public void deleteMyMsgDataListAjax(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//최근 전송 문자 내용 불러오기
	public List<?> selectLatestMsgList(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//자주 보내는 번호 리스트 불러오기
	public List<?> selectBookMarkMsgList(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	 
	//사용자 현재 보유 금액 불러오기
	public String selectBeforeCashData(MjonMsgVO mjonMsgVO) throws Exception;
	
	//사용자 현재 포인트 불러오기
	public String selectBeforePointData(MjonMsgVO mjonMsgVO) throws Exception;
	
	public List<MjonMsgVO> selectPayUserList(MjonMsgVO mjonMsgVO) throws Exception; 
	
	public List<MjonMsgVO> selectPayUserSumList(MjonMsgVO mjonMsgVO) throws Exception;
	
	// 중계사 시스템 발송 문자 내용 입력
	public MjonMsgReturnVO insertSysMsgDataInfo(MjonMsgVO mjonMsgVO) throws Exception;
	
	//시스템 문자발송 로그 insert
	public void insertSysMsgLog(SendLogVO sendLogVO) throws Exception;
	
	//시스템 문자발송 로그 조회
	public SendLogVO selectSysMsgLog(SendLogVO sendLogVO) throws Exception;
	
	//주소록 그룹의 저장 주소 리스트 불러오기
	public List<AddrVO> selectMsgAddrListAjax(AddrVO addrVO) throws Exception;
	
	//내문자함 내용 불러오기
	public MjonMsgDataVO selectMsgAddInfoAjax(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//내문자함 저장 이미지 정보 불러오기
	public List<?> selectMsgAddPhotoInfo(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//문자 재전송 정보 불러오기
	public List<MjonMsgVO> selectReSendMsgDataList(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//재전송 문자 이미지 경로 정보 불러오기
	public MjonMsgDataVO selectMsgReSendPhotoInfo(MjonMsgVO mjonMsgVO) throws Exception;
	
	//메인화면 인기문자 선택 상세내용 불러오기
	public MjonMsgDataVO selectLetterCnById(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//문자검색 인기 검색어 검색
	public int selectMsgSearchWordCnt(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//문자검색 검색어 저장해주기
	public int insertMsgSearchWordInfo(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//문자검색 검색어 카운트 증가시켜주기
	public int updateMsgSearchWordCnt(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	//문자검색 인기검색어 리스트 불러오기
	public List<?> selectMsgSearchWordList(MjonMsgDataVO mjonMsgDataVO) throws Exception;

	//문자검색 인기검색어(노출여부=Y) 리스트 불러오기   2023-05-30 Hans
	public List<?> selectMsgSearchWordExpList(MjonMsgDataVO mjonMsgDataVO) throws Exception;
	
	
	//문자검색 전송 실패 리스트 불러오기
	public void selectMsgSentFailList()throws Exception;
	public void selectMsgSentFailListOneByDay()throws Exception;
	
	//현재 월 총 발송 건수 합계 구하기
	public String selectMsgSentSumData(String userId) throws Exception;
	
	//아이하트 전송사 직접 입력 테스트 쿼리
	public int insertMsgDataInfoIheartTest() throws Exception;
	
	//결제관리 사용내역화면의 문자 상세보기 내용
	public MjonMsgVO selectPayUserMsgDetailDataAjax(MjonMsgVO mjonMsgVO) throws Exception;
	
	// MsgGroupData Not Exist Check
	public MjonMsgVO selectMsgGroupNotExistInfo(MjonMsgVO mjonMsgVO) throws Exception;
	
	//문자발송 스팸 문자 리스트 불러오기
	public List<String> selectSpamKeywordList() throws Exception;
	
	// 단/장문 베스트문자샘플 리스트 불러오기
	public List<?> selectBestMsgDataList(LetterVO letterVO) throws Exception;

	// 그림문자 베스트문자샘플 리스트 불러오기
	public List<?> selectBestPhotoMsgDataList(LetterVO letterVO) throws Exception;	

	// 관리자가 설정한 문자전송 비율 및 대표전송사 리스트 조회
	public List<MjonMsgVO> selectSendAgentList(MjonMsgVO mjonMsgVO) throws Exception;

	// 관리자가 설정한 문자전송 비율 및 대표전송사 조회
	public MjonMsgVO selectSendAgentInfo(MjonMsgVO mjonMsgVO) throws Exception;
	
	public List<MjonMsgVO> selectPayUserWithKakaoList(MjonMsgVO mjonMsgVO) throws Exception;
	
	public List<MjonMsgVO> selectPayUserWithKakaoSumList(MjonMsgVO mjonMsgVO) throws Exception;	
}
