package com.style24.front.biz.dao;

import java.util.Collection;
import java.util.List;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.Cart;
import com.style24.persistence.domain.GoodsImg;
import com.style24.persistence.domain.Order;

/**
 * 장바구니 Dao
 * 
 * @author gagamel
 * @since 2020. 12. 29
 */
@ShopDs
public interface TsfCartDao {

	/**
	 * 장바구니 대상 상품 주문 수량 조회
	 * @param Cart
	 * @return
	 * @author xodud1202
	 * @since 2021. 02. 01
	 */
	int getGoodsTodayOrderCnt(Cart cart);

	/**
	 * 장바구니 등록 상품 확인
	 * @param Cart
	 * @return
	 * @author xodud1202
	 * @since 2021. 02. 01
	 */
	Collection<Cart> selectHasSetItemCartList(Cart param);

	/**
	 * 장바구니 등록 상품 확인
	 * @param Cart
	 * @return
	 * @author xodud1202
	 * @since 2021. 02. 01
	 */
	Collection<Integer> selectHasNormalDealItemCartList(Cart param);

	/**
	 * 장바구니 신규 등록
	 * @param Cart
	 * @return void
	 * @author xodud1202
	 * @since 2021. 02. 01
	 */
	void insertCartInfo(Cart param);

	/**
	 * 장바구니 상세 신규 등록
	 * @param Cart
	 * @return void
	 * @author xodud1202
	 * @since 2021. 02. 01
	 */
	void insertCartDetailInfo(Cart param);

	/**
	 * 장바구니 수정
	 * @param Cart
	 * @return void
	 * @author xodud1202
	 * @since 2021. 02. 01
	 */
	void updateCartInfo(Cart param);

	/**
	 * 장바구니 상세 수정
	 * @param param
	 * @return void
	 * @author xodud1202
	 * @since 2021. 03. 01
	 */
	void updateCartDetail(Cart param);

	/**
	 * 장바구니 이력 정보 저장
	 * @param param
	 * @return void
	 * @author xodud1202
	 * @since 2021. 02. 02
	 */
	void insertCartHst(Cart param);

	/**
	 * 장바구니 상세 이력 정보 저장
	 * @param Cart
	 * @return void
	 * @author xodud1202
	 * @since 2021. 02. 02
	 */
	void insertCartDetailHst(Cart param);

	/**
	 * 다다익선 기본 상품 조회
	 * @param Cart
	 * @return void
	 * @author xodud1202
	 * @since 2021. 02. 04
	 */
	Collection<Order> selectMoreBetterApplyCartList(Order param);

	/**
	 * 다다익선 적용 상품 SUM DATA 조회
	 * @param Cart
	 * @return void
	 * @author xodud1202
	 * @since 2021. 02. 04
	 */
	Collection<Order> selectApplyMoreBetterCartInfoList(Order param);

	/**
	 * 다다익선 SECTION 적용 조건 조회
	 * @param List<Integer>
	 * @return Collection<Order>
	 * @author xodud1202
	 * @since 2021. 02. 04
	 */
	Collection<Order> selectTmtbSectionValList(List<Integer> param);

	/**
	 * 장바구니 상품 조회
	 * @param Order
	 * @return Order
	 * @author xodud1202
	 * @since 2021. 02. 08
	 */
	Collection<Order> getCartGoodsList(Order param);

	/**
	 * 장바구니 상품 조회
	 * @param Order
	 * @return Order
	 * @author xodud1202
	 * @since 2021. 02. 08
	 */
	Collection<Order> getCartListDelvFeeInfoList(Order param);

	/**
	 * 장바구니담긴상품 고객번호 Update
	 * @param cart - 장바구니 정보
	 * @return 처리건수
	 * @author gagamel
	 * @date 2021. 2. 24
	 */
	int updateCartOfCustNo(Cart cart);

	/**
	 * 로그인 후 처리할 장바구니 목록 조회
	 * @param cart - 장바구니 정보
	 * @return
	 * @author gagamel
	 * @date 2021. 2. 24
	 */
	Collection<Cart> getCartListAfterLogin(Cart cart);

	/**
	 * 로그인 후 장바구니 수정
	 * @param cart - 장바구니 정보
	 * @author gagamel
	 * @date 2021. 2. 24
	 */
	void updateCartAfterLogin(Cart cart);

	/**
	 * 로그인 후 장바구니단품 삭제
	 * @param cart - 장바구니 정보
	 * @author gagamel
	 * @date 2021. 2. 24
	 */
	void deleteCartItemAfterLogin(Cart cart);

	/**
	 * 로그인 후 장바구니 삭제
	 * @param cart - 장바구니 정보
	 * @author gagamel
	 * @date 2021. 2. 24
	 */
	void deleteCartAfterLogin(Cart cart);

	/**
	 * 로그인 후 장바구니이력 생성
	 * @param cart - 장바구니 정보
	 * @author gagamel
	 * @date 2021. 2. 24
	 */
	void createCartHistoryAfterLogin(Cart cart);

	/**
	 * 장바구니 삭제
	 * @param param - 장바구니 정보
	 * @author xodud1202
	 * @date 2021. 2. 24
	 */
	void deleteCart(Cart param);

	/**
	 * 장바구니 삭제
	 * @param param - 장바구니 정보
	 * @author xodud1202
	 * @date 2021. 03. 01
	 */
	void deleteCartDetail(Cart param);

	/**
	 * 장바구니 상품 마스터 정보 조회
	 * @param param
	 * @return
	 * @author xodud1202
	 * @date 2021. 2. 25
	 */
	Cart selectCartGoodsInfo(Cart param);

	/**
	 * 장바구니 세트 구성 상품 정보 조회
	 * @param param
	 * @return
	 * @author xodud1202
	 * @date 2021. 2. 25
	 */
	Collection<Cart> selectCartSetGoodsInfo(Cart param);

	/**
	 * 장바구니 상품 컬러 옵션 정보 조회
	 * @param param
	 * @return
	 * @author xodud1202
	 * @date 2021. 2. 26
	 */
	Collection<Cart> selectCartGoodsColorList(Cart param);

	/**
	 * 장바구니 상품 사이즈 옵션 정보 조회
	 * @param param
	 * @return
	 * @author xodud1202
	 * @date 2021. 2. 26
	 */
	Collection<Cart> selectCartGoodsSizeList(Cart param);

	/**
	 * 장바구니 자사 상품 이미지 리스트 조회
	 * @param param
	 * @return
	 * @author xodud1202
	 * @date 2021. 2. 25
	 */
	Collection<GoodsImg> selectCartSelfGoodsOptionImgList(Cart param);

	/**
	 * 장바구니 입점업체 상품 이미지 리스트 조회
	 * @param param
	 * @return
	 * @author xodud1202
	 * @date 2021. 2. 25
	 */
	Collection<GoodsImg> selectCartDelvGoodsOptionImgList(Cart param);

	/**
	 * 마이페이지 장바구니 담기 관련 정보 조회
	 * 
	 * @param Cart
	 * @return Collection<Cart>
	 * @author card007
	 * @since 2021. 03. 26
	 */
	Collection<Cart> getAddCartInfoForMypage(Cart cart);

	/**
	 * 마이페이지 장바구니 담기 관련 정보 조회
	 *
	 * @param Cart
	 * @return Collection<Cart>
	 * @author card007
	 * @since 2021. 03. 26
	 */
	Collection<Order> getCartDetailInfo(Order param);

	/**
	 * 장바구니 수량 변경
	 * @param Order
	 * @return int
	 * @author xodud1202
	 * @since 2021. 04. 04
	 */
	int updateCartGoodsQty(Cart param);

	/**
	 * 최근 등록된 상품 100개를 제외한 장바구니 시퀀스 배열
	 * @param Cart
	 * @return Cart
	 * @author yujung
	 * @since 2021. 10. 06
	 */
	String selectOldCartArr(Cart param);

	/**
	 * 최근 등록된 상품 100개를 제외한 장바구니 제거
	 * @param Cart
	 * @return void
	 * @author xodud1202
	 * @since 2021. 04. 16
	 */
	void deleteOldCart(Cart param);

	/**
	 * 최근 등록된 상품 100개를 제외한 장바구니 상세 제거
	 * @return void
	 * @author xodud1202
	 * @since 2021. 04. 16
	 */
	void deleteOldCartDetail(Cart param);

	/**
	 * 2021.05.10 주문완료 주문번호로 장바구니정보 삭제
	 * @return void
	 * @author jsh77b
	 * @since 2021. 05. 10
	 */
	void deleteCartOrdNo(Cart param);
	
	/**
	 * 2021.05.10 주문완료 주문번호로 장바구니상세정보 삭제
	 * @return void
	 * @author jsh77b
	 * @since 2021. 05. 10
	 */
	void deleteCartDetailOrdNo(Cart param);

	/**
	 * 장바구니 담긴 상품 전체 조회
	 * @param param
	 * @return
	 * @author xodud1202
	 * @since 2021. 07. 06
	 */
	Collection<Cart> getAllCartList(Cart param);
}
