package com.style24.front.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.Coupon;
import com.style24.persistence.domain.CustCoupon;
import com.style24.persistence.domain.Goods;

/**
 * 쿠폰 Dao
 * 
 * @author gagamel
 * @since 2020. 12. 29
 */
@ShopDs
public interface TsfCouponDao {

	/**
	 * 시리얼 쿠폰 지급 정보 조회
	 * @param param
	 * @author xodud1202
	 * @since 2021. 02. 16
	 */
	Coupon getSerialCpnUseInfo(Coupon param);

	/**
	 * 쿠폰 적용 대상조건명 및 조건별 수량 조회
	 * @param param
	 * @author xodud1202
	 * @since 2021. 03. 30
	 */
	Collection<Coupon> getCpnRefName(Coupon param);

	/**
	 * 입력된 시리얼 쿠폰 정보 조회
	 * @param param
	 * @author xodud1202
	 * @since 2021. 02. 17
	 */
	Coupon getSearchSerialCpnInfo(Coupon param);

	/**
	 * 마이페이지 등급쿠폰 다운가능 쿠폰 정보 조회
	 * 
	 * @param coupon
	 * @return Collection<Coupon>
	 * @author card007
	 * @since 2021.02.25
	 */
	Collection<Coupon> getCustGradeCouponInfo(Coupon coupon);

	/**
	 * 회원가입 쿠폰
	 * @param coupon - 쿠폰정보
	 * @return Coupon
	 * @author jsshin
	 * @since 2021. 03. 03
	 */
	Coupon getJoinCoupon(Coupon coupon);

	/**
	 * 상품 쿠폰 조회
	 * 
	 * @param goods
	 * @return Collection<Coupon>
	 * @author eskim
	 * @since 2021.03.11
	 */
	Collection<Coupon> getGoodsCouponList(Goods goods);

	/**
	 * 상품 즉시할인 쿠폰 조회
	 * 
	 * @param goods
	 * @return Collection<Coupon>
	 * @author eskim
	 * @since 2021.05.01
	 */
	Collection<Coupon> getGoodsCoupon1List(Goods goods);

	/**
	 * 상품 쿠폰 조회
	 * 
	 * @param goods
	 * @return Collection<Coupon>
	 * @author eskim
	 * @since 2021.04.15
	 */
	Collection<Coupon> getGoodsEpCouponList(Goods goods);

	/**
	 * 마이페이지 쿠폰 조회
	 * 
	 * @param coupon
	 * @return Collection<Coupon>
	 * @author sowon
	 * @since 2021.03.16
	 */
	Collection<Coupon> getMypageCouponList(Coupon coupon);

	/**
	 * 마이페이지 (사용가능,만료예정)쿠폰 수 조회
	 * @param coupon - 쿠폰정보
	 * @return Coupon
	 * @author sowon
	 * @since 2021. 03. 16
	 */
	Coupon getMypageCouponInfo(Coupon coupon);

	/**
	 * 마이페이지 쿠폰 디테일 정보
	 * @param coupon - 쿠폰정보
	 * @return Coupon
	 * @author sowon
	 * @since 2021. 03. 17
	 */
	Coupon getCouponDetailInfo(Coupon coupon);

	/**
	 * 마이페이지 등급쿠폰 다운가능 쿠폰 정보 조회
	 * 
	 * @param coupon
	 * @return Collection<Coupon>
	 * @author sowon
	 * @since 2021.03.24
	 */
	Collection<Coupon> getPlanCouponInfo(Coupon coupon);

	/**
	 * 등급정책 쿠폰 발급 여부(지급월 1일 ~ 말일)
	 *
	 * @param coupon - 쿠폰정보
	 * @return Coupon
	 * @author jsshin
	 * @since 2021.04.08
	 */
	int getCustGradePolicyCouponCount(Coupon coupon);

	/**
	 * 등급정책 쿠폰 정보
	 *
	 * @param coupon - 쿠폰정보
	 * @return Coupon
	 * @author jsshin
	 * @since 2021.04.08
	 */
	Coupon getCustGradePolicyCoupon(Coupon coupon);

	/**
	 * 출석체크 쿠폰  정보
	 * @param coupon - 쿠폰정보
	 * @return Coupon
	 * @author sowon
	 * @since 2021. 04. 15
	 */
	CustCoupon getAttendCouponInfo(CustCoupon coupon);

	/**
	 * 퀵메뉴 다운가능 쿠폰 리스트
	 * 
	 * @param coupon
	 * @return Collection<Coupon>
	 * @author sowon
	 * @since 2021.04.23
	 */
	Collection<Coupon> getQuickCouponDownList(Coupon coupon);

	/**
	 * 기획전 쿠폰 디테일 정보
	 * @param coupon - 쿠폰정보
	 * @return Coupon
	 * @author bin2107
	 * @since 2021. 07. 07
	 */
	Coupon getPlanCouponDetailInfo(Coupon coupon);
}
