package itn.let.sym.grd.service;

import java.util.List;

import itn.let.sym.site.service.JoinSettingVO;

public interface MberGrdService {
	
	// 등급제 단가 추출 => 시스템 단가에 적용
	public JoinSettingVO selectMberGrdDefaultInfo(JoinSettingVO sysJoinSetVO, String mberId) throws Exception;	
	
	// 등급제 단가 추출 => 시스템 단가에 적용 Last
	public JoinSettingVO selectMberGrdDefaultInfoLast(JoinSettingVO sysJoinSetVO, String mberId) throws Exception;	
	
	// 등급제 설정 일괄변경
	public int updateMberSetting(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원 등급제 온/오프 히스토리
	public void insertMberSettingHist(MberGrdVO mberGrdVO)  throws Exception;
	
	// 등급제 시행여부 상세
	public MberGrdVO selectMberSettingDetail(MberGrdVO mberGrdVO) throws Exception;
	
	
	// 등급제 설정 목록
	List<MberGrdVO> selectMberGrdSettingList(MberGrdVO mberGrdVO) throws Exception;

	// 회원별 설정 상세
	public MberGrdVO selectMberGrdSettingDetail(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원별 설정 상세(White)
	public MberGrdVO selectMberGrdSettingDetailWhite(MberGrdVO mberGrdVO) throws Exception;
	
	// 등급제 설정 일괄변경
	public int updateGrdSettingList(MberGrdVO mberGrdVO) throws Exception;

	// 등급제 등급 목록
	List<MberGrdVO> selectMberGrdList(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원별 등급 상세
	public MberGrdVO selectMberGrdDetail(MberGrdVO mberGrdVO) throws Exception;

	// 회원 등급제 대상여부 정보(사용자화면용)
	public MberGrdVO selectMberGrdInfo(String mberId) throws Exception;
	
	// 회원 등급 예외 정보
	public MberGrdVO selectMberEtcInfo(String mberId) throws Exception;
	
	// 회원별 등급 누적결제액 상세
	public MberGrdVO selectMberGrdAmtDetail(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원별 등급 등록
	public void insertMberGrd(MberGrdVO mberGrdVO)  throws Exception;
	
	// 회원별 등급 수정
	public void updateMberGrdOk(MberGrdVO mberGrdVO)  throws Exception;		
	
	// 회원별 등급 등록 All => 기존대상자 제외
	public void insertMberGrdAllByExist(MberGrdVO mberGrdVO)  throws Exception;
	
	// 회원별 등급 등록 By MberId
	public void insertMberGrdByMberId(MberGrdVO mberGrdVO)  throws Exception;
	
	// 회원별 등급 히스토리 등록 All
	public void insertMberGrdHistAll(MberGrdVO mberGrdVO)  throws Exception;
	
	// 회원별 등급 일괄변경
	public int updateMberGrdAll(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원 등급 변경(환불후) => 기존등급 상관없이 업데이트
	public int updateMberGrdAfterRefund(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원별 등급 초기화 By Temp
	public int updateMberGrdWhiteByTemp(MberGrdVO mberGrdVO) throws Exception;

	// 회원별 등급 초기화 All
	public int updateMberGrdWhiteAll(MberGrdVO mberGrdVO) throws Exception;

	// 문자할인, B선라인 대상자 종료
	public int updateMberGrdEndBySale(MberGrdVO mberGrdVO) throws Exception;
	
	// 전체회원 TEMP_YN 업데이트
	public int updateMberGrdTempYn(MberGrdVO mberGrdVO) throws Exception;
	
	// 전체회원 등급 전체종료
	public int updateMberGrdEndAll(MberGrdVO mberGrdVO) throws Exception;

	// 회원 등급제 종료
	public int updateMberGrdEndByUser(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원 등급제 복원
	public int updateMberGrdRestoreByUser(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원별 등급 적용
	public void mberGrdSaveByUser(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원별 등급 적용 Last
	public void mberGrdSaveByUserLast(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원별 등급 적용(로그인시 사용 => 히스토리 저장 제외)
	public void mberGrdSaveByUserNoHist(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원별 등급 적용(로그인시 사용 => 히스토리 저장 제외) Last
	public void mberGrdSaveByUserNoHistLast(MberGrdVO mberGrdVO) throws Exception;
	
	// 회원별 등급제 대상여부
	int selectMberGrdCnt(String mberId) throws Exception;
	
	// 회원별 등급 진행여부
	int selectMberGrdPrgCnt(String mberId) throws Exception;
	
	// 회원별 이벤트 진행여부
	int selectMberEventPrgCnt(String mberId) throws Exception;
	
	// 회원별 등급 저장여부
	int selectMberGrdSaveCnt(String mberId) throws Exception;
	
	// 회원별 등급제 기간내, 최종결제이후 환불총금액
	int selectMberGrdRefundSumAfterLastPay(String mberId) throws Exception;
	
	// 회원별 등급제 기간내, 최종결제이전 환불총금액
	int selectMberGrdRefundSumBeforeLastPay(String mberId) throws Exception;	
	
	// 회원별 등급 히스토리 등록
	public void insertMberGrdHist(MberGrdVO mberGrdVO)  throws Exception;	
	
	// 회원별 등급 히스토리 목록 => 등급제 시행일이후 목록(사용자화면용)
	List<MberGrdVO> selectMberGrdHistByGrdDateList(MberGrdVO mberGrdVO) throws Exception;

	// 회원별 등급 히스토리 목록
	List<MberGrdVO> selectMberGrdHistList(MberGrdVO mberGrdVO) throws Exception;

}
