package itn.let.mjo.msg.service;

import java.util.List;

import itn.let.mjo.reservmsg.service.MjonResvMsgVO;

public interface MjonMsgService {
	
	void insertMsgData(MjonMsgVO mjonMsgVO) throws Exception;

	List<MjonMsgVO> selectMjonMsgList(MjonMsgVO mjonMsgVO) throws Exception;

	MjonMsgVO selectMjonMsgVO(MjonMsgVO mjonMsgVO) throws Exception;
	
	// 문자타입별 대표전송사 정보
	MjonMsgVO selectRepMsgAgetnInfo(MjonMsgVO mjonMsgVO) throws Exception;

	// 문자타입별 선택한전송사 정보 By Admin
	MjonMsgVO selectChoiMsgAgetnInfo(MjonMsgVO mjonMsgVO) throws Exception;
	
	void deleteSendMsg(MjonMsgVO mjonMsgVO) throws Exception;

	List<MjPhoneMemberVO> selectSendNumberList(MjPhoneMemberVO mjPhoneMemberVO)  throws Exception;
	
	MjPhoneMemberVO selectSendPhoneNumberByPhmId(String phmId) throws Exception;
	
	int updateSendPhoneNumberAuthType(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;

	MjPhoneMemberVO selectPhoneMemberVO(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;

	void insertSendNumber(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;

	List<MjonMsgVO> selectMjonMsgGroupList(MjonMsgVO searchVO)  throws Exception;
	
	List<MjonMsgVO> selectMjonMsgGroupCompleteList(MjonMsgVO searchVO)  throws Exception;
	
	List<MjonMsgVO> selectNewUserMjonMsgGroupList(MjonMsgVO searchVO)  throws Exception;

	void insertGroupMsgData(MjonMsgVO groupMonMsgVO) throws Exception;

	List<MjonMsgVO> selectMjonMsgGroupDtList(MjonMsgVO searchVO) throws Exception;

	void deleteSendNumberDelete(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;

	// 발신번호 전체차단/해지
	void updateSendNumberBlockAll(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;
	
	void updateSendNumberUnblock(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;
	
	void updateSendNumber(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;
	
	void updateSendNumberAddNameType(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;
	
	void updateSendNumberDenyType(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;
	
	void updateAuthYn(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;
	
	public MjonMapAddressVO insertMapAddress(MjonMapAddressVO mjonMapAddressVO) throws Exception;
	
	public MjonMapAddressVO selectMapAddress(MjonMapAddressVO mjonMapAddressVO) throws Exception;

	List<MjonMsgVO> selectMjonRealTimeMsgList(MjonMsgVO searchVO) throws Exception;

	List<MjPhoneMemberVO> selectRankNumberList(MjPhoneMemberVO searchVO) throws Exception;
	
	List<MjPhoneMemberVO> selectRankNumberList_230125(MjPhoneMemberVO searchVO) throws Exception;

	void insertMjMsgData(MjonMsgVO mjonMsgVO) throws Exception;

	// today 전송사별 전송건수
	List<MjonMsgVO> selectTodayAgentSendCntList(MjonMsgVO mjonMsgVO) throws Exception;
	
	//시스템 사용가능한 문자발송 전송사 1개 불러오기
	String selectSystemAgetnCodeList() throws Exception;

	List<MjonMsgVO> selectSender(MjonMsgVO mjonMsgVO) throws Exception;

	List<MjonMsgVO> selectSendTotCnt(MjonMsgVO mjonMsgVO) throws Exception;
	
	int selectSendPhonNumCheck(MjonMsgVO mjonMsgVO) throws Exception;
	
	// 금일 예약발송 건수
	int selectMjonMsgGroupCntSum(MjonMsgVO mjonMsgVO) throws Exception;

	// 스미싱의심 미처리
	int selectMjonMsgDelayCnt(MjonMsgVO mjonMsgVO) throws Exception;
	
	int selectSendBlockPhonNumCheck(MjonMsgVO mjonMsgVO) throws Exception;
	
	//전송사 문자 발송 결과 코드 정보 전체 불러오기
	List<MjonMsgResultCodeVO> selectMsgResultCodeAllList(MjonMsgResultCodeVO mjonMsgResultCodeVO) throws Exception;
	
	//전송사 문자 발송 결과 코드 정보 리스트 페이징 불러오기 
	List<MjonMsgResultCodeVO> selectMsgResultCodeListPageing(MjonMsgResultCodeVO mjonMsgResultCodeVO) throws Exception;
	
	//카카오 발송 결과 코드 정보 리스트 페이징 불러오기 
	List<MjonMsgResultCodeVO> selectKakaoResultCodeListPageing(MjonMsgResultCodeVO mjonMsgResultCodeVO) throws Exception;
	
	//전송사 문자 발송 결과 코드 상세 정보 불러오기
	MjonMsgResultCodeVO selectMsgResultCodeModify(MjonMsgResultCodeVO mjonMsgResultCodeVO) throws Exception;
	
	//전송사 문자발송 결과 코드 수정
	int updateMsgResultCode(MjonMsgResultCodeVO mjonMsgResultCodeVO) throws Exception;
	
	//전송사 문자발송 결과 코드 삭제
	int deleteMsgResultCode(MjonMsgResultCodeVO mjonMsgResultCodeVO) throws Exception;
	
	//전송사 문자발송 결과 코드 등록
	int insertMsgResultCode(MjonMsgResultCodeVO mjonMsgResultCodeVO) throws Exception;
	
	void updateSendNumberBaseYn(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;
	
	String selectBaseYPhoneNum(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;
	
	void updateBaseYPhoneNumLately(MjPhoneMemberVO mjPhoneMemberVO) throws Exception;
	
	//그림문자 실제 서버 저장 경로 불러오기
	String selectPhotoImgFileRealPath(String atchFileId) throws Exception;
	
	//욕설 및 금지 단어 등록 
	int insertSwearWord(MjonSwearWordVO mjonSwearWordVO) throws Exception;
	
	//욕설 및 금지 단어 리스트 
	List<MjonSwearWordVO> selectSwearWordListPageing(MjonSwearWordVO mjonSwearWordVO) throws Exception;
	
	//욕설 및 금지 단어 상세보기
	MjonSwearWordVO selectSwearWordModify(MjonSwearWordVO mjonSwearWordVO) throws Exception;
	
	//욕설 및 금지 단어 수정하기
	int updateSwearWord(MjonSwearWordVO mjonSwearWordVO) throws Exception;
	
	//욕설 및 금지 단어 삭제하기
	int deleteSwearWord(MjonSwearWordVO mjonSwearWordVO) throws Exception;
	
	//사용자 정보 팝업 문자 전송 리스트 팝업 정보 불러오기
	List<MjonMsgVO> selectUserMsgDataListByMbrId(MjonMsgVO mjonMsgVO) throws Exception;
	
	//사용자 정보 팝업 문자 전송 리스트 팝업 정보 불러오기
	List<MjonMsgVO> selectUserMsgDataListByMbrId2(MjonMsgVO mjonMsgVO) throws Exception;
	
	//사용자 정보 팝업 문자 전송 리스트 팝업 정보 불러오기 - 페이징 없이 불러오기
	List<MjonMsgVO> selectUserMsgDataTotInfoListByMbrId(MjonMsgVO mjonMsgVO) throws Exception;
	
	// 일별 문자발송 건수
	List<MjonMsgVO> selectMsgDayChart(MjonMsgVO mjonMsgVO)  throws Exception;

	// 일별 문자발송 건수
	List<MjonMsgVO> selectMsgDayChart_230125(MjonMsgVO mjonMsgVO)  throws Exception;
	
	// 월별 문자발송 건수
	List<MjonMsgVO> selectMsgMonthChart(MjonMsgVO mjonMsgVO)  throws Exception;

	// 월별 문자발송 건수
	List<MjonMsgVO> selectMsgMonthChart_230125(MjonMsgVO mjonMsgVO)  throws Exception;
	
	// 일별 회원가입 건수
	List<MjonMsgVO> selectMemDayChart(MjonMsgVO mjonMsgVO)  throws Exception;
	
	// 일별 회원가입 건수(대시보드)
	List<MjonMsgVO> selectMemDayChartDashboard(MjonMsgVO mjonMsgVO)  throws Exception;
	
	// 월별 회원가입 건수
	List<MjonMsgVO> selectMemMonthChart(MjonMsgVO mjonMsgVO)  throws Exception;	
	
	// 월별 회원가입 건수(대시보드)
	List<MjonMsgVO> selectMemMonthChartDashboard(MjonMsgVO mjonMsgVO)  throws Exception;	
	
	// 일별 회원전환률 건수(대시보드)
	List<MjonMsgVO> selectMemLoginDayChartDashboard(MjonMsgVO mjonMsgVO)  throws Exception;

	// 일별 회원전환률 건수(대시보드) 당일건
	MjonMsgVO selectMemLoginDayChartDashboardToday(MjonMsgVO mjonMsgVO)  throws Exception;
	
	// 연간 누적 결제율(대시보드)
	MjonMsgVO selectMemYearPayDashboard(MjonMsgVO mjonMsgVO)  throws Exception;	
	
	// 일별 회원전환률 건수
	List<MjonMsgVO> selectMemLoginDayChart(MjonMsgVO mjonMsgVO)  throws Exception;

	// 일별 회원전환률 건수(토탈카운트)
	MjonMsgVO selectMemLoginDayChartCount(MjonMsgVO mjonMsgVO)  throws Exception;

	// 당월 회원전환률
	MjonMsgVO selectMemLoginThisMonth(MjonMsgVO mjonMsgVO)  throws Exception;
	
	//관리자 및 시스템 발송 문자 리스트
	List<MjonMsgVO> selectAdmSystemSendMsgList(MjonMsgVO mjonMsgVO) throws Exception;
	
	// 번호도용 문자차단 서비스로 인한 발송실패 문자알림 By User
	int updateUserCallBack(MjonMsgVO mjonMsgVO) throws Exception;
	
	// 번호도용 문자차단 서비스로 인한 발송실패 문자알림
	int updateMsgGroupDataCallBack(MjonMsgVO mjonMsgVO) throws Exception;
	
	// 번호도용 문자차단 서비스로 인한 발송실패 문자알림 All
	void updateMsgGroupDataCallBackAll(MjonMsgVO mjonMsgVO) throws Exception;
	
	//스팸 / 스미싱 지연 문자 발송 취소 처리
	int deleteMsgDelaySendCancelData(MjonResvMsgVO mjonResvMsgVO) throws Exception;
	
	//스팸 / 스미싱 지연 문자 즉시 발송처리
	int updateMsgDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception;
	
	//스팸 / 스미싱 지연 알림톡 발송 취소 처리
	int deleteKakaoAtDelaySendCancelData(MjonResvMsgVO mjonResvMsgVO) throws Exception;
	
	//문자 즉시 발송처리
	int updateMsgDirectSend(MjonResvMsgVO mjonResvMsgVO) throws Exception;
	
	//스팸 / 스미싱 지연 알림톡 즉시 발송처리
	int updateKakaoAtDelaySendRealTimeData(MjonResvMsgVO mjonResvMsgVO) throws Exception;
	
	//문자 그룹아이디 리스트의 발송일자 정보 불러오기
	List<MjonResvMsgVO> selectMsgGroupDataReqDateList(MjonResvMsgVO mjonResvMsgVO) throws Exception;
	
	// agent별 sms lms mms 발송건수 통계 데이터 upsert
	void insertAgentSmsCountStat(MjonMsgStatVO mjonMsgStatVO) throws Exception;
	
	// 전송사 발송 통계 리스트
	List<MjonMsgStatVO> selectAgentSmsCountStatList(MjonMsgStatVO mjonMsgStatVO) throws Exception;

	// 관리자 메인페이지 전송사 발송 통계
	List<MjonMsgStatVO> selectAgentSmsCountStatMainList(MjonMsgStatVO mjonMsgStatVO) throws Exception;
	
	//카카오 발송 횟수
	List<MjonMsgVO> selectWithKakaoSendTotCnt(MjonMsgVO mjonMsgVO) throws Exception;
	
	//문자 발송 횟수
	List<MjonMsgVO> selectMsgSendTotCnt(MjonMsgVO mjonMsgVO) throws Exception;
	
	
	MjonMsgVO selectApiSttstList(MjonMsgVO mjonMsgVO) throws Exception;
	
	int selectCallFromNumberChk(MjonMsgVO mjonMsgVO) throws Exception;
	
	List<MjonMsgVO> selectMjonHoliMsgList(MjonMsgVO mjonMsgVO)  throws Exception;
	
	void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception;
}
