package com.style24.admin.biz.dao;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.Counsel;
import com.style24.persistence.domain.Coupon;
import com.style24.persistence.domain.CustContactHst;
import com.style24.persistence.domain.CustGrade;
import com.style24.persistence.domain.Customer;
import com.style24.persistence.domain.CustomerSearch;
import com.style24.persistence.domain.Delivery;
import com.style24.persistence.domain.GiftCard;
import com.style24.persistence.domain.Order;
import com.style24.persistence.domain.Point;
import com.style24.persistence.domain.Review;

import org.springframework.stereotype.Repository;

import java.util.Collection;


/**
 * 회원 Dao
 * 
 * @author jsshin
 * @since 2020. 11. 3
 */
@ShopDs
@Repository
public interface TsaCustomerDao {

	/**
	 * 활동회원 건수
	 * @param customerSearch - 검색조건
	 * @return int
	 * @author jsshin
	 * @since 2021. 2. 01
	 */
	int getCustomerActiveListCount(CustomerSearch customerSearch);

	/**
	 * 활동회원 목록
	 * @param customerSearch - 검색조건
	 * @return Collection<Customer>
	 * @author jsshin
	 * @since 2021. 01. 12
	 */
	Collection<Customer> getCustomerActiveList(CustomerSearch customerSearch);

	/**
	 * 회원정보 수정
	 * @param customer - 고객정보
	 * @author jsshin
	 * @since 2021. 01. 20
	 */
	void updateCustomerInfo(Customer customer);

	/**
	 * 회원 휴대전화번호 수정
	 * @param customer - 고객정보
	 * @author jsshin
	 * @since 2021. 01. 25
	 */
	void updateCustomerCellPhnno(Customer customer);


	/**
	 * 회원 주문내역
	 * @param customerSearch - 고객번호
	 * @return Collection<Order>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	int getCustomerOrderListCount(CustomerSearch customerSearch);

	/**
	 * 회원 주문내역
	 * @param custNo - 고객번호
	 * @return Collection<Order>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	Collection<Order> getCustomerOrderList(CustomerSearch customerSearch);

	/**
	 * 회원상세-쿠폰내역
	 *
	 * @param custNo -고객일련번호
	 * @return Collection<Coupon>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	Collection<Coupon> getCustomerCouponList(Integer custNo);

	/**
	 * 회원상세-포인트
	 *
	 * @param custNo -고객일련번호
	 * @return Point
	 * @author jsshin
	 * @since 2021. 01. 25
	 */
	Point getCustomerPoint(Integer custNo);

	/**
	 * 회원상세-포인트내역
	 *
	 * @param custNo -고객일련번호
	 * @return Collection<Coupon>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	Collection<Point> getCustomerPointList(Integer custNo);

	/**
	 * 회원상세-상품권내역
	 *
	 * @param custNo -고객일련번호
	 * @return Collection<GiftCard>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	Collection<GiftCard> getCustomerGiftCardList(Integer custNo);

	/**
	 * 회원상세-상품평내역
	 *
	 * @param custNo -고객일련번호
	 * @return Collection<Review>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	Collection<Review> getCustomerReviewList(Integer custNo);

	/**
	 * 회원상세- 1:1문의 내역
	 *
	 * @param custNo -고객일련번호
	 * @return Collection<Counsel>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	Collection<Counsel> getCustomerCounselList(Integer custNo);

	/**
	 * 회원상세- 상품문의 내역
	 *
	 * @param custNo -고객일련번호
	 * @return Collection<Counsel>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	Collection<Counsel> getCustomerGoodsQnaList(Integer custNo);

	/**
	 * 회원상세- 등급변경 내역
	 *
	 * @param custNo -고객일련번호
	 * @return Collection<Counsel>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	Collection<CustGrade> getCustomerChangeGradeList(Integer custNo);

	/**
	 * 회원상세- 접촉내역
	 *
	 * @param custNo -고객일련번호
	 * @return Collection<Counsel>
	 * @author jsshin
	 * @since 2021. 01. 21
	 */
	Collection<CustContactHst> getCustomerContactList(Integer custNo);

	/**
	 * 탈퇴회원 목록 건수
	 * @param customerSearch - 검색조건
	 * @return Collection<Customer>
	 * @author jsshin
	 * @since 2021. 02. 01
	 */
	int getCustomerSecedeListCount(CustomerSearch customerSearch);

	/**
	 * 탈퇴회원 목록
	 * @param customerSearch - 검색조건
	 * @return Collection<Customer>
	 * @author jsshin
	 * @since 2021. 01. 14
	 */
	Collection<Customer> getCustomerSecedeList(CustomerSearch customerSearch);

	/**
	 * 휴면회원 목록 건수
	 * @param customerSearch - 검색조건
	 * @return Collection<Customer>
	 * @author jsshin
	 * @since 2021. 02. 01
	 */
	int getCustomerDormantListCount(CustomerSearch customerSearch);

	/**
	 * 휴면회원 목록
	 * @param customerSearch - 검색조건
	 * @return Collection<Customer>
	 * @author jsshin
	 * @since 2021. 01. 14
	 */
	Collection<Customer> getCustomerDormantList(CustomerSearch customerSearch);

	/**
	 * 휴대전화 번호 조회
	 * @param customerSearch - 검색조건
	 * @return int - 고객 수
	 * @author jsshin
	 * @since 2021. 02. 23
	 */
	int getCustomerFindByCellPhone(CustomerSearch customerSearch);


}
