package itn.let.lett.service;

import java.util.List;

import itn.let.sym.ccm.cde.service.CateCode;
import itn.let.uss.umt.service.UserDefaultVO;

public interface LetterService {

	// 문자 카테고리 정보(장문,단문) 리스트 불러오기
	public List<CateCode> selectLetterMessageCategoryList() throws Exception;
	
	// 등록 문자정보 디비 입력하기
	public String insertLetterMessages(LetterVO letterVO) throws Exception;
	
	// 단문/장문 문자 리스트 정보 불러오기
	public List<?> selectLetterMessageList(UserDefaultVO userSearchVO) throws Exception;
	
	// 단문/장문 문자 삭제 하기
	public void deleteLetterMessage(String checkedIdForDel) throws Exception;
	
	// 문자 우선순위 랜덤 업데이트 All
	public void updateLetterPriorityAll() throws Exception;
	
	// 단문/장문 문자 상세보기
	public LetterVO letterMessagesDetail(LetterVO letterVO) throws Exception;
	
	// 단문/장문 문자 수정하기
	public int updateLetterMessages(LetterVO letterVO) throws Exception;
	
	// 문자 카테고리 불러오기
	public List<CateCode> selectCateCodeTwoDptWithList(CateCode cateCode) throws Exception;
	// 문자 3뎁스 카테고리 불러오기
	public List<CateCode> selectCateCodeThrDptWithList(CateCode cateCode) throws Exception;
	// 문자 카테고리 불러오기
	public List<CateCode> selectPhotoCateCodeWithList(CateCode cateCode) throws Exception;
	
	// 문자 탭 카테고리 불러오기
	public List<CateCode> selectCateConfWithList(String categoryType) throws Exception;

	// 문자 탭 카테고리 불러오기
	public List<CateCode> selectCateConfWithList4Main(String categoryType) throws Exception;
	
	// 문자 탭 카테고리 2뎁스 불러오기
	public List<CateCode> selectCateConfTwoDepthWithList(String categoryType) throws Exception;
	
	// 문자 탭 카테고리 3뎁스 불러오기
	public List<CateCode> selectCateConfThreeDepthWithList(CateCode cateCode) throws Exception;	
	
	// 문자 해쉬태그 불러오기
	public List<HashConfVO> selectHashTagWithList(String msgType) throws Exception;
	
	// 그림문자 정보 입력해주기
	public String insertletterPhotosInfo(LetterVO letterVO) throws Exception;
	
	// 그림문자 리스트 불러오기
	public List<?> selectLetterPhotosList(UserDefaultVO userSearchVO) throws Exception;
	
	// 그림문자 삭제하기
	public void deleteLetterPhotos(String checkedIdForDel) throws Exception;
	
	// 그림문자 카테고리 1 ~ 3 뎁스 정보 불러오기
	public List<CateCode> selectPhotoCateCodeListWithId(String cateCode) throws Exception;
	
	// 그림문자 상세정보 불러오기
	public LetterVO selectPhotosDetail(LetterVO letterVO) throws Exception;
	
	// 그림문자 첨부파일 불러오기
	public LetterVO selectPhotoFileList(String attchFileId) throws Exception;
	
	// 그림문자 수정하기
	public int updateLetterPhotosInfo(LetterVO letterVO) throws Exception;
	
	//문자 발송 카테고리 리스트 관리 정보 
	
	// 카테고리 정보 저장하기
	public int insertCategoryConf(CateConfVO cateConfVO) throws Exception;
	
	// 카테고리 리스트 화면 불러오기
	public List<?> selectCategoryConfList(UserDefaultVO userSearchVO) throws Exception;
	
	// 카테고리 상세보기 화면
	public CateConfVO categoryConfDetail(CateConfVO cateConfVO) throws Exception;
	
	// 카테고리 삭제
	public void deleteCategoryConf(String checkedIdForDel) throws Exception;
	
	// 카테고리 수정
	public int updateCategoryConf(CateConfVO cateConfVO) throws Exception;
	
	//문자 발송 해쉬태그 리스트 관리 정보 
	
	// 해쉬태그 정보 저장하기
	public int insertHashTagConf(HashConfVO hashConfVO) throws Exception;
	
	// 해쉬태그 리스트 불러오기
	public List<?> selectHashTagConfList(UserDefaultVO userSearchVO) throws Exception;
	
	// 해쉬태그 상세보기 정보 불러오기
	public HashConfVO hashTagConfDetail(HashConfVO hashConfVO) throws Exception;
	
	//해쉬태그 수정 하기
	public int updateHashTagConf(HashConfVO hashConfVO) throws Exception;
	
	// 해쉬태그 삭제하기
	public void deleteHashTagConf(String checkedIdForDel) throws Exception;
	
	// 맞춤제작 그림문자 리스트 불러오기
	public List<?> selectLetterPhotosCustomList(UserDefaultVO userSearchVO) throws Exception;

	//템플릿 사용누계
	public int updateTemplateUseCount(String string) throws Exception;
	
	//letterIdgen 강제 update
	public void updateLetterIdgen(int count) throws Exception;
	
	//(그림문자)설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기
	public int updateChkAfterPriorityPlus(LetterVO letterVO) throws Exception;
	
	//(그림문자)체크한 리스트들 우선순위 업데이트
	public int updateChkListPriority(LetterVO letterVO) throws Exception;
	
	//(그림문자)그림문자 전체 우선순위 빈값없이 정렬하기
	public int updateOrderByPriority(LetterVO letterVO) throws Exception;
	
	//(그림문자)우선순위가 null 인값 우선순위 초기세팅
	public int updateNullPriority(LetterVO letterVO) throws Exception;
	
	//(카테고리)설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기
	public int updateChkCateAfterSortPlus(LetterVO letterVO) throws Exception;
	
	//(카테고리)체크한 리스트들 우선순위 업데이트
	public int updateChkCateListSort(LetterVO letterVO) throws Exception;
	
	//(카테고리)그림문자 전체 우선순위 빈값없이 정렬하기
	public int updateCateOrderBySort(LetterVO letterVO) throws Exception;
	
	//(카테고리)우선순위가 null 인값 우선순위 초기세팅
	public int updateCateNullSort(LetterVO letterVO) throws Exception;
	
	//(메인태그)설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기
	public int updateChkTagAfterSortPlus(LetterVO letterVO) throws Exception;
	
	//(메인태그)체크한 리스트들 우선순위 업데이트
	public int updateChkTagListSort(LetterVO letterVO) throws Exception;
	
	//(메인태그)그림문자 전체 우선순위 빈값없이 정렬하기
	public int updateTagOrderBySort(LetterVO letterVO) throws Exception;
	
	//(메인태그)우선순위가 null 인값 우선순위 초기세팅
	public int updateTagNullSort(LetterVO letterVO) throws Exception;
	
	//검색어 욕설 및 금지 단어 검색 
	public int selectSwearWordSearchCnt(String searchKeyWord) throws Exception;

	//단문/장문 템플릿 조회 카운트
	public int updateSmsTemplateViewCount(String letterId) throws Exception;
	
	// 제목, 해쉬태그 일괄변경
	public int updateHashTagList(LetterVO letterVO) throws Exception;
		
	// 메인태그 관리
	public List<LetterVO> selectMainTagList(LetterVO letterVO)  throws Exception ;

	// 메인태그 상세
	public LetterVO selectMainTagDetail(LetterVO letterVO) throws Exception ;

	// 메인태그 등록
	public void insertMainTag(LetterVO letterVO)  throws Exception ;
	
	// 메인태그 수정
	public void updateMainTag(LetterVO letterVO)  throws Exception ;	
	
	// 메인태그 목록 조회
	public List<LetterVO> selectMainTagWebList(LetterVO letterVO)  throws Exception ;	
	// 첫번째 키워드 조회
	public LetterVO selectFrsKeyword(LetterVO letterVO) throws Exception ;
	
	// 베스트태그(메인) 목록 조회
	public List<LetterVO> selectMainMsgTagWebList(LetterVO letterVO)  throws Exception ;		
	
	// 메인베스트 태그 관리
	public List<LetterVO> selectBastMsgTagList(LetterVO letterVO)  throws Exception ;
	
	// 메인베스트 태그 상세
	public LetterVO selectBastMsgTagInfo(LetterVO letterVO) throws Exception ;

	// 메인베스트 태그 등록
	public void insertBastMsgTag(LetterVO letterVO)  throws Exception ;
	
	// 메인베스트 태그 수정
	public void updateBastMsgTag(LetterVO letterVO)  throws Exception ;
	
	
	//(메인태그)설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기
	public int updateChkBastMsgTagAfterSortPlus(LetterVO letterVO) throws Exception;
	
	//(메인태그)체크한 리스트들 우선순위 업데이트
	public int updateChkBastMsgTagListSort(LetterVO letterVO) throws Exception;
	
	//(메인태그)그림문자 전체 우선순위 빈값없이 정렬하기
	public int updateBastMsgTagOrderBySort(LetterVO letterVO) throws Exception;
	
	//(메인태그)우선순위가 null 인값 우선순위 초기세팅
	public int updateBastMsgTagNullSort(LetterVO letterVO) throws Exception;
	
}
