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.BrandGroup;
import com.style24.persistence.domain.Cate1;
import com.style24.persistence.domain.Cate2;
import com.style24.persistence.domain.Cate3;
import com.style24.persistence.domain.Cate4;
import com.style24.persistence.domain.Cate4Srch;
import com.style24.persistence.domain.Cate5;
import com.style24.persistence.domain.Contents;
import com.style24.persistence.domain.GnbTab;
import com.style24.persistence.domain.GoodsSearch;
import com.style24.persistence.domain.MainLayout;
import com.style24.persistence.domain.Popup;
import com.style24.persistence.domain.SearchKeyword;
import com.style24.persistence.domain.searchengine.Filter;
import com.style24.persistence.domain.searchengine.SearchEngine;

/**
 * 전시 Dao
 * 
 * @author gagamel
 * @since 2020. 12. 29
 */
@ShopDs
public interface TsfDisplayDao {

	/**
	 * GNB 브랜드그룹 목록
	 * @param contents - 컨텐츠 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 11
	 */
	Collection<BrandGroup> getGnbBrandGroupList(Contents contents);

	/**
	 * 브랜드메인의 GNB브랜드그룹 정보
	 * @param brandGroupNo - 브랜드그룹번호
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 11
	 */
	BrandGroup getGnbBrandGroup(Integer brandGroupNo);

	/**
	 * GNB탭 목록
	 * @param gnbTab - GNB탭 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 11
	 */
	Collection<GnbTab> getGnbTabList(GnbTab gnbTab);

	/**
	 * 컨텐츠 목록
	 * @param contents - 컨텐츠 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 11
	 */
	Collection<Contents> getContentsList(Contents contents);

	/**
	 * 전체 카테고리 목록
	 * @param cate - 카테고리 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 6. 3
	 */
	Collection<Cate4Srch> getAllCategoryList(Cate4Srch cate);

	/**
	 * 카테고리1 목록
	 * @param cate - 카테고리 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 11
	 */
	List<Cate1> getCategory1List(Cate4Srch cate);

	/**
	 * 카테고리2 목록
	 * @param cate - 카테고리 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 11
	 */
	List<Cate2> getCategory2List(Cate4Srch cate);

	/**
	 * 카테고리3 목록
	 * @param cate - 카테고리 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 11
	 */
	List<Cate3> getCategory3List(Cate4Srch cate);

	/**
	 * 카테고리4 목록
	 * @param cate - 카테고리 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 11
	 */
	List<Cate4> getCategory4List(Cate4Srch cate);

	/**
	 * 카테고리5 목록
	 * @param cate - 카테고리 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 3. 11
	 */
	List<Cate5> getCategory5List(Cate4Srch cate);

	/**
	 * 메인 레이아웃 목록
	 * @param cateNo - 카테고리No
	 * @return
	 * @author bin2107
	 * @date 2021. 3. 16
	 */
	Collection<MainLayout> getMainLayout(MainLayout mainLayout);

	/**
	 * 카테고리 4srch 조회
	 * @param
	 * @return
	 * @author bin2107
	 * @date 2021. 3. 16
	 */
	Cate4Srch getCate4srch(Cate4Srch cate4Srch);

	/**
	 * 팝업 목록
	 *
	 * @param keyword - 키워드정보
	 * @return
	 * @author eskim
	 * @date 2021. 3. 30
	 */
	Collection<Popup> getPopupList(Popup popup);

	/**
	 * 몰메인 브랜드픽 조회
	 * @param
	 * @return
	 * @author bin2107
	 * @date 2021. 3. 31
	 */
	Collection<Contents> getContentsBannerList(Contents contents);

	/**
	 * 상품리스트 카테고리별 필터 목록
	 * @param searchEngine - 검색엔진 정보
	 * @return
	 * @author gagamel
	 * @date 2021. 5. 3
	 */
	Collection<Filter> getGoodsListCategoryFilterList(SearchEngine searchEngine);

	/**
	 * 검색키워드를 통한 검색상품리스트 카테고리별 필터 목록
	 * @param searchEngine - 검색엔진 정보
	 * @return
	 * @author gagamel
	 * @date 2021. 5. 3
	 */
	Collection<Filter> getSearchGoodsListCategoryFilterList(SearchEngine searchEngine);

	/**
	 * 상품카테고리 필터 목록
	 * @param
	 * @return
	 * @author bin2107
	 * @date 2021. 4. 5
	 */
	Collection<GoodsSearch> getCategoryFilter(Cate4Srch cate4Srch);

	/**
	 * 상품카테고리 필터 혜택 목록
	 * @param
	 * @return
	 * @author bin2107
	 * @date 2021. 4. 7
	 */
	Collection<GoodsSearch> getCategoryFilterBenefit(Cate4Srch cate4Srch);

	/**
	 * 몰메인 BESTITEM 카테고리 목록
	 * @param
	 * @return
	 * @author bin2107
	 * @date 2021. 4. 9
	 */
	Collection<Contents> getBestItemCategoryList(Contents contents);

	/**
	 * 전체 브랜드 이미지 리스트
	 * @param
	 * @return
	 * @author bin2107
	 * @since 2021. 4. 28
	 */
	Collection<BrandGroup> getBrandImgList(BrandGroup brandGroup);

	/**
	 * 전체 브랜드
	 * @param
	 * @return
	 * @author bin2107
	 * @since 2021. 4. 12
	 */
	Collection<BrandGroup> getAllBrandList(BrandGroup brandGroup);

	/**
	 * 브랜드그룹의 기본카테고리여부 조회
	 * @param brandGroupNo - 브랜드그룹번호
	 * @return
	 * @author gagamel
	 * @date 2021. 4. 12
	 */
	String getBrandGroupDefaultCategoryYn(Integer brandGroupNo);

	/**
	 * GNB TAB 기획전배너 목록
	 * @param contents - 컨텐츠 정보
	 * @return
	 * @author bin2107
	 * @since 2021. 4. 14
	 */
	Collection<Contents> getGnbTabBannerList(Contents contents);

	/**
	 * 검색키워드 조회
	 * @param
	 * @return
	 * @throws Exception
	 * @author bin2107
	 * @since 2021. 7. 2
	 */
	Collection<SearchKeyword> getSearchKeywordList(SearchKeyword searchKeyword);

	/**
	 * 스플래시 이미지 가져오기
	 * @param siteCd - 사이트코드
	 * @return
	 * @author gagamel
	 * @since 2021. 7. 5
	 */
	String getSplashImage();

	/**
	 * 몰메인 브랜드픽 타이틀 브랜드 목록
	 * @param contents - 컨텐츠 정보
	 * @return
	 * @author bin2107
	 * @date 2021. 7. 23
	 */
	Collection<Contents> getBrandpickTitleBrandList(Contents contents);
}
