package com.style24.admin.biz.dao;

import java.util.Collection;

import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.Category;
import com.style24.persistence.domain.CategoryGoods;
import com.style24.persistence.domain.Contents;
import com.style24.persistence.domain.GnbTab;
import com.style24.persistence.domain.Goods;
import com.style24.persistence.domain.GoodsCategory;
import com.style24.persistence.domain.ItemkindCategory;
import com.style24.persistence.domain.MainDisplay;
import com.style24.persistence.domain.SearchKeyword;
import com.style24.persistence.domain.SplashImage;

/**
 * 전시 Dao
 *
 * @author
 * @since 2020. 12. 16
 */
@ShopDs
public interface TsaDisplayDao {

	/**
	 * 카테고리 목록
	 * @param category - 카테고리 정보
	 * @return
	 * @author gagamel
	 * @since 2021. 1. 4
	 */
	Collection<Category> getCategoryList(Category category);

	/**
	 * 카테고리1 저장
	 * @param category - 카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 4
	 */
	void saveCategory1(Category category);

	/**
	 * 카테고리2 저장
	 * @param category - 카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 4
	 */
	void saveCategory2(Category category);

	/**
	 * 카테고리3 저장
	 * @param category - 카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 4
	 */
	void saveCategory3(Category category);

	/**
	 * 카테고리4 저장
	 * @param category - 카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 4
	 */
	void saveCategory4(Category category);

	/**
	 * 카테고리5 저장
	 * @param category - 카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 4
	 */
	void saveCategory5(Category category);

	/**
	 * 상위카테고리 단말여부 "N" 처리
	 * @param category - 카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 4
	 */
	void updateUpperCategoryLeafNo(Category category);

	/**
	 * 카테고리4SRCH truncate
	 * @author gagamel
	 * @since 2021. 1. 4
	 */
	void truncateCategory4Srch();

	/**
	 * 카테고리4SRCH 생성
	 * @author gagamel
	 * @since 2021. 1. 4
	 */
	void createCategory4Srch();

	/**
	 * 카테고리구분 목록
	 * @param cateGb - 카테고리구분
	 * @return
	 * @author gagamel
	 * @since 2021. 1. 6
	 */
	Collection<Category> getCategoryGbList(String cateGb);

	/**
	 * 품목카테고리매핑 생성
	 * @param itemkindCate - 품목카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 6
	 */
	void createItemkindCategoryMapping(ItemkindCategory itemkindCate);

	/**
	 * 품목카테고리매핑에 의한 카테고리상품 생성
	 * @param itemkindCate - 품목카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 6
	 */
	void createCategoryGoodsByItemkindCategoryMapping(ItemkindCategory itemkindCate);

	/**
	 * 품목카테고리매핑 삭제
	 * @param itemkindCate - 품목카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 6
	 */
	void deleteItemkindCategoryMapping(ItemkindCategory itemkindCate);

	/**
	 * 품목카테고리매핑에 의한 카테고리상품 삭제
	 * @param itemkindCate - 품목카테고리 정보
	 * @author gagamel
	 * @since 2021. 1. 6
	 */
	void deleteCategoryGoodsByItemkindCategoryMapping(ItemkindCategory itemkindCate);

	/**
	 * 품목카테고리매핑 목록
	 * @param itemkindCd - 품목코드
	 * @return
	 * @author gagamel
	 * @since 2021. 1. 5
	 */
	Collection<ItemkindCategory> getItemkindCategoryMappingList(String itemkindCd);

	/**
	 * 상품별카테고리전시관리 목록 건수 조회
	 * @param goodsCategory
	 * @return
	 * @author bin2107
	 * @since 2021. 1. 15
	 */
	int getGoodsCategoryListCount(GoodsCategory goodsCategory);

	/**
	 * 상품별카테고리전시관리 목록 조회
	 * @param goodsCategory
	 * @return
	 * @author bin2107
	 * @since 2021. 1. 15
	 */
	Collection<Goods> getGoodsCategoryList(GoodsCategory goodsCategory);

	/**
	 * 상품별카테고리전시 저장
	 * @return
	 * @author bin2107
	 * @since 2021. 1. 17
	 */
	void saveGoodsCategory(GoodsCategory goodsCategory);

	/**
	 * 상품별카테고리 리스트 조회
	 * @return
	 * @author bin2107
	 * @since 2021. 1. 18
	 */
	Collection<GoodsCategory> getGoodsCategoryViewList(String goodsCd);

	/**
	 * 상품별카테고리 삭제
	 * @return
	 * @author bin2107
	 * @since 2021. 1. 18
	 */
	void deleteGoodsCategory(GoodsCategory goodsCategory);

	/**
	 * 카테고리별상품 건수 조회
	 * @return
	 * @author bin2107
	 * @since 2021. 1. 27
	 */
	int getCategoryGoodsListCount(CategoryGoods categoryGoods);

	/**
	 * 카테고리별상품 리스트 조회
	 * @return
	 * @author bin2107
	 * @since 2021. 1. 27
	 */
	Collection<CategoryGoods> getCategoryGoodsList(CategoryGoods categoryGoods);

	/**
	 * 전시 상품 순서변경 전시초기화
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 19
	 */
	void updateCategoryGoodsDispOrdInit(CategoryGoods categoryGoods);

	/**
	 * 전시 상품 순서변경 최상단/하단 이동
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 19
	 */
	void updateCategoryGoodsDispOrdUpdown(CategoryGoods categoryGoods);

	/**
	 * 전시 상품 순서변경 저장
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 19
	 */
	void updateCategoryGoodsDispOrd(CategoryGoods categoryGoods);

	/**
	 * 메인전시관리 카테고리 목록
	 * @param category - 카테고리 정보
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 22
	 */
	Collection<Category> getMainCategoryList(Category category);

	/**
	 * 메인전시 레이아웃 목록
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 22
	 */
	Collection<MainDisplay> getMainLayoutList(MainDisplay mainDisplay);

	/**
	 * 메인전시 레이아웃 삭제
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 22
	 */
	void deleteMainLayout(MainDisplay mainDisplay);

	/**
	 * 메인전시 레이아웃 저장
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 22
	 */
	void saveMainLayout(MainDisplay mainDisplay);

	/**
	 * 메인전시 컨텐츠 설명
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 23
	 */
	String getContentsDesc(String contentsLoc);

	/**
	 * 메인전시 컨텐츠 미리보기 리스트
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 23
	 */
	Collection<Contents> getContentsPreviewList(Contents contents);

	/**
	 * 메인전시 컨텐츠 탭영역 미리보기 리스트
	 * @return
	 * @author bin2107
	 * @since 2021. 3. 18
	 */
	Collection<Contents> getContentsTabPreviewList(Contents contents);

	/**
	 * 메인전시 컨텐츠 탭영역 카테고리 미리보기 리스트
	 * @return
	 * @author bin2107
	 * @since 2021. 3. 19
	 */
	Collection<GnbTab> getGnbtabPreviewList(GnbTab gnbTab);

	/**
	 * 메인전시 컨텐츠 탭영역 카테고리 삭제
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 23
	 */
	void deleteGnbTabContents(GnbTab gnbTab);

	/**
	 * 메인전시 컨텐츠 탭영역 카테고리 저장
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 23
	 */
	void saveGnbTabContents(GnbTab gnbTab);

	/**
	 * 메인전시 컨텐츠 미리보기 삭제
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 23
	 */
	void deleteContentsPreview(Contents contents);

	/**
	 * 메인전시 컨텐츠 미리보기 저장
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 23
	 */
	void saveContentsPreview(Contents contents);

	/**
	 * 메인전시 컨텐츠 삭제
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 23
	 */
	void deleteContents(Contents contents);

	/**
	 * 메인전시 컨텐츠 저장
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 23
	 */
	void saveContents(Contents contents);

	/**
	 * CATEGORY4SRCH 조회
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 24
	 */
	Category getCategory4srch(Category category);

	/**
	 * 메인전시 컨텐츠 임시 상품 저장
	 * @return
	 * @author bin2107
	 * @since 2021. 2. 26
	 */
	void deleteContentsGoodsTemp(Contents contents);

	void saveContentsGoodsTemp(Contents contents);

	/**
	 * 메인전시 컨텐츠 임시 상품 -> 카테고리상품 저장
	 * @return
	 * @author bin2107
	 * @since 2021. 3. 2
	 */
	void deleteContentsGoods(Contents contents);

	void saveContentsGoods(Contents contents);

	/**
	 * 메인전시 Gnb Tab 미리보기 삭제
	 * @return
	 * @author bin2107
	 * @since 2021. 3. 19
	 */
	void deleteGnbTabPreview(GnbTab gnbTab);

	/**
	 * 메인전시 Gnb Tab 미리보기 저장
	 * @return
	 * @author bin2107
	 * @since 2021. 3. 19
	 */
	void saveGnbTabPreview(GnbTab gnbTab);

	/**
	 * 메인전시 컨텐츠 미리보기 상품 리스트
	 * @return
	 * @author bin2107
	 * @since 2021. 6. 9
	 */
	Collection<Goods> getContentsForGoodsList(Contents contents);

	/**
	 * 검색키워드 등록
	 *
	 * @param searchKeyword
	 * @author bin2107
	 * @since 2021. 7. 1
	 */
	void createSearchKeyword(SearchKeyword searchKeyword);

	/**
	 * 검색키워드 수정
	 *
	 * @param searchKeyword
	 * @author bin2107
	 * @since 2021. 7. 1
	 */
	void updateSearchKeyword(SearchKeyword searchKeyword);

	/**
	 * 검색키워드 목록
	 *
	 * @param searchKeyword
	 * @return
	 * @author bin2107
	 * @since 2021. 7. 1
	 */
	Collection<SearchKeyword> getSearchKeywordList(SearchKeyword searchKeyword);

	/**
	 * 스플래시이미지 목록
	 * @return
	 * @author gagamel
	 * @since 2021. 7. 2
	 */
	Collection<SplashImage> getSplashImageList();

	/**
	 * 스플래시이미지 등록
	 * @param splashImg - 스플래시이미지 정보
	 * @author gagamel
	 * @since 2021. 7. 2
	 */
	void createSplashImage(SplashImage splashImg);

	/**
	 * 스플래시이미지 수정
	 * @param splashImage - 스플래시이미지 정보
	 * @author gagamel
	 * @since 2021. 7. 2
	 */
	void updateSplashImage(SplashImage splashImg);

}
