package kr.co.uplus.ez.api.custMgt;

import kr.co.uplus.ez.api.custMgt.dto.*;
import kr.co.uplus.ez.common.data.ImUser;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;

@Mapper
public interface CustMgtMapper {

	/** 청구정보 카운트 조회.*/
	int selectSubsListTotalCnt(SubsListReqDto subsListReqDto);
	/** 청구정보 목록 조회.*/
	List<SubsList> selectSubsLists(SubsListReqDto subsListReqDto);
	/** 청구정보 엑셀 목록 조회.*/
	List<SubsList> selectSubsListsExcel(SubsListExcelReqDto subsListExcelReqDto);
	/** 청구정보 상세 조회.*/
	SubsDetail selectSubsDetailInfo(SubsDetailReqDto subsDetailReqDto);
	/** 이월 금액 목록 조회.*/
	List<CarryOver> selectCarryOverList(CarryOverListReqDto carryOverListReqDto);
	/** 마당ID 조회.*/
	ImUser selectImUser(ImUser imUser);
	/** 회원정보 카운트 조회.*/
	int selectSvcUserListTotalCnt(MemberListReqDto memberListReqDto);
	/** 회원정보 목록 조회.*/
	List<MemberList> selectSvcUserList(MemberListReqDto memberListReqDto);
	/** 회원 상세 조회.*/
	MemberDetailRes selectMemberDetail(MemberDetailReqDto memberDetailReqDto);
	/** 회원(관리자) 상세 조회.*/
	MemberAdminDetailRes selectMemberAdminDetail(MemberAdminDetailReqDto memberAdminDetailReqDto);
	/** 사용자 아이디 카운트 조회.*/
	int selectMemberDetailListTotalCnt(MemberAdminDetailReqDto memberDetailListReqDto);
	/** 사용자 아이디 목록 조회.*/
	List<MemberDetail> selectMemberDetailList(MemberAdminDetailReqDto memberDetailListReqDto);

	int selectMemoListTotalCnt(AllMemoListReqDto allMemoListReqDto);
	/** 사용자 메모 목록 조회.*/
	List<AllMemoList> selectMemoList(AllMemoListReqDto allMemoListReqDto);
	/** 사용자 유무 확인.*/
	int getUserIdCount(String userId);
	/** 고객일련번호 조회.*/
	String getCustSeq(String bizrno);
	/** 이용자일련번호 조회.*/
	String getUserSeq();
	/** 080인증번호 조회.*/
	String getAuth080();

	int updateAdminInfo(SubsDetail subDetail);

	int insertUserInfo(InsertUserReqDto insertUserReqDto);

	int selectUserInfoCnt(InsertUserReqDto insertUserReqDto);

	int updateUserInfo(UpdateUserReqDto updateUserReqDto);

	/** 고개정보 유무 조회.*/
	int selectCustInfoCount(String brno);
	/** 고객정보 등록.*/
	void insertCustInfo(CustInfo custInfo);
	/** 서비스 이용자 등록.*/
	void insertSvcUserInfo(SvcUserInfo svcUserInfo);
	/** 청약정보 등록.*/
	void insertSubsInfo(SubsInfo subsInfo);
	/** 메모 삭제 */
	int deleteMemo(Map<String, Object> paramMap);
	/** UserSeq 조회*/
	int selectUserSeq(String register);
	/** 사용자 정보 삭제*/
	int deleteUserList(DeleteUserReqDto deleteUserReqDto);
	/** 관리자아이디 조회*/
	String selectAdminId(String adminId);
	
	int updateAdminInfoTotal(UpdateAdminInfoTotalReqDto updateAdminInfoTotalReqDto);
	
	int updateMemberInfo(UpdateAdminInfoTotalReqDto updateAdminInfoTotalReqDto);

	int insertMemo(UpdateAdminInfoTotalReqDto updateAdminInfoTotalReqDto);

	int updateAdminSendingLimit(Map<String, Object> paramMap);

	Map<String, Object> selectAdminSendingLimt(Map<String, Object> paramMap);

	SvcUserInfo selectSvcUserInfo(String userId);

	String selectApiAuthToken(String apiApplicationId);

	String getSubId();

	String getEntrNo();
	
	/** 청약 상태 이력 저장 */
	int insertSbscstHst(SbscstHstDto sbscstHstDto);	
	/** 상품정보 조회 */
	ProdInfo getProdAmt(String userSeq);
	/** 한도 - 오더 채번 */
	String getOrder();
	/** 한도 - 오더 저장 */
	int insertOrder(OrderDto orderDto);
	/** 차감 상세 저장 */ 
	int insertLmtdctDtl(LmtdctDtlDto lmtdctDtlDto);
	/** 한도 초기화 저장 */
	int insertUserLmt(UserLmtDto lmtdctDtlDto);
	
	/** 결합할인여부 수정*/
	int updateBindDcYn(SubsDetail subDetail);
	
	/** 청구정보 카운트 조회.*/
	int selectUserLmtListTotalCnt(UserLmtListReqDto userLmtListReqDto);
	
	/** 충전관리 카운트 조회.*/
	int cntChrgList(ChrgListReqDto chrgListReqDto);
	/**충전관리 목록 조회*/
	List<ChrgList> selectChrgList(ChrgListReqDto chrgListReqDto);
	/** 충전관리 상세 조회 */
	ChrgDetail selectChrgDetail(ChrgDetailReqDto chrgDetailReqDto);
	/**유저ID 카운트 조회*/
	int selectuserTotalCnt(UserListReqDto userListReqDto);
	/**유저ID 목록 조회*/
	List<UserinInfo> selectUserList(UserListReqDto userListReqDto);
	/**이용자 충전번호 */
	String getChrgSeq();
	
	/**충전관리 등록 */
	int insertChrgInfo(ChrgInfo chrgInfo);
	/**충전관리 수정 */
	void updateChrg(UpdateChrgReqDto updateChrgReqDto);
	/**충전관리 수정후 등록 */
	void addChrg(ChrgInfo chrgInfo);
	/**충전관리 삭제 */
	void deleteChrg(DeleteChrgReqDto deleteChrgReqDto);
	int updateChrgAmt(ChrgAmtDto chrgAmtDto);

	SvcUserInfo selectUserInfo(String register);
	public String selectSequence(String seqKey);
	public String selectNotiSeq(); //알림이련seq 
	void insertWebMsgCli(WebMsgCliDto params);
	void insertNotiHst(NotiHistDto params);
	
	
	//2023-03-07 add request 부분
//	/** 요금제 구매 내역 정보 목록 조회.*/
//	List<UserLmtList> selectBLNCLists(UserLmtListReqDto userLmtListReqDto);
//	/** 요금제 구매 내역 정보 엑셀 목록 조회.*/
//	List<UserLmtList> selectBLNCListsExcel(UserLmtListExcelReqDto userLmtListExcelReqDto);
}
