package com.style24.front.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.Goods;
import com.style24.persistence.domain.Point;
import com.style24.persistence.domain.Review;
import com.style24.persistence.domain.ReviewAttach;

/**
 * 상품평 Dao
 * 
 * @author gagamel
 * @since 2020. 12. 29
 */
@ShopDs
public interface TsfReviewDao {

	/**
	 * 상품 리뷰 목록 건수
	 * @param review
	 * @return 
	 * @author eskim
	 * @since 2021. 3. 16
	 */
	int getReviewTotalCount(Review review);
	
	/**
	 * 상품 리뷰 목록
	 * @param review
	 * @return 
	 * @author eskim
	 * @since 2021. 3. 15
	 */
	Collection<Review> getReviewList(Review review);
	
	/**
	 * 상품평 첨부파일 목록
	 * @param review
	 * @return 
	 * @author eskim
	 * @since 2021. 3. 15
	 */
	Collection<ReviewAttach> getReviewAttachList(Review review);
	
	/**
	 * 상품평 상품 옵션 목록
	 * @param review
	 * @return 
	 * @author eskim
	 * @since 2021. 3. 15
	 */
	Collection<Goods> getReviewGoodsOptionList(Review review);
	
	/**
	 * 상품평 옵션 목록 - 입점용
	 * @param review
	 * @return 
	 * @author eskim
	 * @since 2021. 3. 26
	 */
	Collection<Goods> getReviewOption1List(String goodsCd);
	
	/**
	 * 상품평 옵션 목록  - 자사용
	 * @param review
	 * @return 
	 * @author eskim
	 * @since 2021. 3. 19
	 */
	Collection<Goods> getReviewOption2List(String goodsCd);
	
	/**
	 * 마이페이지 작성가능한 리뷰 건수
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 25
	 */
	int getCompleteReviewCount(Review review);
	
	/**
	 * 마이페이지 작성가능한 리뷰 목록
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 25
	 */
	Collection<Review> getCompleteReviewList(Review review);
	
	/**
	 * 마이페이지 리뷰작성 상품 데이타
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 25
	 */
	Review getReviewGoodsInfo(Review review);
	
	/**
	 * 마이페이지 리뷰 등록
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 25
	 */
	void saveMypageReview(Review review);
	
	/**
	 * 마이페이지 리뷰 업데이트
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 25
	 */
	void updateMypageReview(Review review);
	
	/**
	 * 마이페이지 작성한 리뷰 건수
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 26
	 */
	int getAlreadyReviewCount(Review review);
	
	/**
	 * 마이페이지 작성한 리뷰 목록
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 26
	 */
	Collection<Review> getAlreadyReviewList(Review review);
	
	/**
	 * 마이페이지 작성한 리뷰 이미지 목록 
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 26
	 */
	Collection<Review> getReviewAttach(Review review);
	
	/**
	 * 마이페이지 어드민이 댓글 단 리뷰 건수
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 26
	 */
	Review getAdminConfirmCount(Review review);
	
	/**
	 * 마이페이지 댓글 삭제
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 26
	 */
	void reviewDelete(Review review);
	
	/**
	 * 마이페이지 댓글 관련 첨부파일 삭제
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 26
	 */
	void reviewAttachDelete(Review review);
	
	/**
	 * 마이페이지 댓글 삭제건이 있는지 확인
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 3. 28
	 */
	Review reviewDeleteConfirm(Review review);
	
	/**
	 * 마이페이지 어드민댓글 확인
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 4. 15
	 */
	void reviewCustomerConfirm(Review review);
	
	/**
	 * 마이페이지 이미지/동영상등록
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 4. 26
	 */
	void saveReviewAttach(ReviewAttach reviewAttach);
	
	/**
	 * 2021.08.11 포인트 지급 이번달 1일부터 31일 사이의 포인트지급 카운트
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 8. 11
	 */
	int getReviewPointGiveMonthCount(Review review);
	
	/**
	 * 2021.08.11 포인트 지급은 한개의 상품만 가능
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 4. 28
	 */
	int getReviewPointGiveCount(Review review);
	
	
	/**
	 * 리뷰 포인트 생성
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 4. 28
	 */
	void createReviewPoint(Point point);
	
	/**
	 * 리뷰 포인트 이력 생성
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 4. 28
	 */
	void createReviewPointHst(Point point);
	
	/**
	 * 마이페이지 CONFIRM_YN 업데이트
	 * @param review
	 * @return 
	 * @author sowon
	 * @since 2021. 5. 10
	 */
	void updateMypageReviewConfimYn(Review review);
	


	
	
	
}
