package com.style24.batch.biz.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.style24.batch.biz.dao.TsbDisplayDao;

import lombok.extern.slf4j.Slf4j;

/**
 * 전시 Service
 *
 * @author bin2107
 * @since 2021. 3. 15
 */
@Service
@Slf4j
public class TsbDisplayService {

	@Autowired
	private TsbDisplayDao displayDao;

	/**
	 * cate4srch 갱신
	 * @author bin2107
	 * @since 2021. 3. 15
	 */
	@Transactional("shopTxnManager")
	@CacheEvict(value = "cate", allEntries = true)
	public void refreshCate4srch() {
		// TB_CATE_4SRCH 삭제
		displayDao.deleteCate4srch();

		// TB_CATE_4SRCH 생성
		displayDao.createCate4srch();
	}

	/**
	 * 카테고리별재고 생성
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	@Transactional("shopTxnManager")
	public void createCateoryStock() {
		// 1. 카테고리별재고임시 테이블 truncate
		displayDao.truncateTemporaryCategoryStock();
		log.info("1. 카테고리별재고임시 테이블 truncate: OK");

		// 2. 카테고리별재고임시 테이블 생성
		int result = displayDao.createTemporaryCategoryStock();
		log.info("2. 카테고리별재고임시 테이블 생성: {}건", result);

		if (result > 0) {
			// 3. 카테고리별재고 삭제
			displayDao.deleteCategoryStock();
			log.info("3. 카테고리별재고 삭제: OK");

			// 4. 카테고리별재고 생성
			result = displayDao.createCategoryStock();
			log.info("2. 카테고리별재고 생성: {}건", result);
		}
	}

	/**
	 * 임시카테고리별검색필터 생성
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	@Transactional("shopTxnManager")
	public int createTemporaryCategoryFilter() {
		// 카테고리별검색필터임시 테이블 truncate
		displayDao.truncateTemporaryCategoryFilter();

		int totCnt = 0;
		int cnt = displayDao.createTemporaryCategoryFilterBrand();
		totCnt += cnt;
		log.info("1.1.임시카테고리별검색필터-브랜드 생성: {}", cnt);

		cnt = displayDao.createTemporaryCategoryFilterSize();
		totCnt += cnt;
		log.info("1.2.임시카테고리별검색필터-사이즈 생성: {}", cnt);

		cnt = displayDao.createTemporaryCategoryFilterPrice();
		totCnt += cnt;
		log.info("1.3.임시카테고리별검색필터-가격 생성: {}", cnt);

		cnt = displayDao.createTemporaryCategoryFilterAge();
		totCnt += cnt;
		log.info("1.4.임시카테고리별검색필터-연령대 생성: {}", cnt);

		cnt = displayDao.createTemporaryCategoryFilterSeason();
		totCnt += cnt;
		log.info("1.5.임시카테고리별검색필터-시즌 생성: {}", cnt);

		cnt = displayDao.createTemporaryCategoryFilterColor();
		totCnt += cnt;
		log.info("1.6.임시카테고리별검색필터-색상 생성: {}", cnt);

		cnt = displayDao.createTemporaryCategoryFilterBenefit();
		totCnt += cnt;
		log.info("1.7.임시카테고리별검색필터-혜택 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandFilterSize();
		totCnt += cnt;
		log.info("2.1.임시브랜드별검색필터-사이즈 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandFilterPrice();
		totCnt += cnt;
		log.info("2.2.임시브랜드별검색필터-가격 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandFilterAge();
		totCnt += cnt;
		log.info("2.3.임시브랜드별검색필터-연령대 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandFilterSeason();
		totCnt += cnt;
		log.info("2.4.임시브랜드별검색필터-시즌 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandFilterColor();
		totCnt += cnt;
		log.info("2.5.임시브랜드별검색필터-컬러 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandFilterBenefit();
		totCnt += cnt;
		log.info("2.6.임시브랜드별검색필터-혜택 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandForCategoryFilterSize();
		totCnt += cnt;
		log.info("3.1.임시브랜드별 카테고리검색필터-사이즈 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandForCategoryFilterPrice();
		totCnt += cnt;
		log.info("3.2.임시브랜드별 카테고리검색필터-가격 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandForCategoryFilterAge();
		totCnt += cnt;
		log.info("3.3.임시브랜드별 카테고리검색필터-연령대 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandForCategoryFilterSeason();
		totCnt += cnt;
		log.info("3.4.임시브랜드별 카테고리검색필터-시즌 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandForCategoryFilterColor();
		totCnt += cnt;
		log.info("3.5.임시브랜드별 카테고리검색필터-컬러 생성: {}", cnt);

		cnt = displayDao.createTemporaryBrandForCategoryFilterBenefit();
		totCnt += cnt;
		log.info("3.6.임시브랜드별 카테고리검색필터-혜택 생성: {}", cnt);

		return totCnt;
	}

	/**
	 * 카테고리별 검색필터 생성
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	@Transactional("shopTxnManager")
	public int createCategoryFilter() {
		displayDao.deleteCategoryFilter();
		return displayDao.createCategoryFilter();
	}

	/**
	 * 최근등록된 상품 100개 생성
	 * @return 생성건수
	 * @author gagamel
	 * @since 2021. 4. 7
	 */
	@Transactional("shopTxnManager")
	public int createRecentlyRegisterGoods() {
		displayDao.deleteRecentlyRegisterGoods();
		return displayDao.createRecentlyRegisterGoods();
	}

	/**
	 * 몰 메인 컨텐츠 상품생성
	 *
	 * @author jmh
	 * @since 2021. 8. 13
	 */
	@Transactional("shopTxnManager")
	public void createMainContentsGoods() {
		// 상품 삭제
		displayDao.deleteMainContentsGoods();

		// 상품 생성
		displayDao.createMainContentsGoods();
	}
}
