package com.style24.scm.biz.service;

import java.util.Collection;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.style24.core.support.message.TscMessageByLocale;
import com.style24.persistence.domain.Brand;
import com.style24.persistence.domain.BrandMd;
import com.style24.persistence.domain.DeliveryLoc;
import com.style24.persistence.domain.DelvFeePolicy;
import com.style24.persistence.domain.SupplyCompany;
import com.style24.scm.biz.dao.TssBusinessDao;
import com.style24.scm.support.security.session.TssSession;

import lombok.extern.slf4j.Slf4j;

/**
 * 영업관리 Service
 *
 * @author gagamel
 * @since 2020. 10. 14
 */
@Service
@Slf4j
public class TssBusinessService {

	@Autowired
	private TscMessageByLocale message;

	@Autowired
	private TssBusinessDao businessDao;

	/**
	 * 공급업체 목록
	 * @param supplyComp - 공급업체 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 10. 14
	 */
	public Collection<SupplyCompany> getSupplyCompanyList(SupplyCompany supplyComp) {
		return businessDao.getSupplyCompanyList(supplyComp);
	}

	/**
	 * 공급업체 수정 처리
	 * @param supplyComp - 공급업체 정보
	 * @author gagamel
	 * @since 2020. 10. 14
	 */
	public void updateSupplyCompany(SupplyCompany supplyComp) {
		businessDao.updateSupplyCompany(supplyComp);
	}

	/**
	 * 배송비정책 목록
	 * @param delvFeePolicy - 배송비정책 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 11. 24
	 */
	public Collection<DelvFeePolicy> getDeliveryFeePolicyList(DelvFeePolicy delvFeePolicy) {
		return businessDao.getDeliveryFeePolicyList(delvFeePolicy);
	}

	/**
	 * 배송비정책 저장 처리
	 * @param supplyComp - 공급업체 정보
	 * @author gagamel
	 * @since 2020. 10. 14
	 */
	public void saveDeliveryFeePolicyList(Collection<DelvFeePolicy> delvFeePolicyList) {
		for (DelvFeePolicy delvFeePolicy : delvFeePolicyList) {
			delvFeePolicy.setRegNo(TssSession.getInfo().getUserNo());
			delvFeePolicy.setUpdNo(TssSession.getInfo().getUserNo());

			if (!StringUtils.isEmpty(delvFeePolicy.getDelvFeeCd())) {
				businessDao.updateDeliveryFeePolicy(delvFeePolicy);
			} else {
				businessDao.createDeliveryFeePolicy(delvFeePolicy);
			}
		}
	}

	/**
	 * 출고처 목록
	 * @param delvLoc - 출고처 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 10. 16
	 **/
	public Collection<DeliveryLoc> getDeliveryLocList(DeliveryLoc delvLoc) {
		return businessDao.getDeliveryLocList(delvLoc);
	}

	/**
	 * 출고처 Update
	 * @param delvLoc - 출고처 정보
	 * @author gagamel
	 * @since 2020. 10. 16
	 */
	@Transactional("shopTxnManager")
	public void saveDeliveryLoc(DeliveryLoc delvLoc) {
		delvLoc.setSupplyCompCd(TssSession.getInfo().getSupplyCompCd());
		delvLoc.setRegNo(TssSession.getInfo().getUserNo());
		delvLoc.setUpdNo(TssSession.getInfo().getUserNo());
		businessDao.saveDeliveryLoc(delvLoc);
	}

	/**
	 * 브랜드 목록
	 * @param brand - 브랜드 정보
	 * @return
	 * @author eskim
	 * @since 2020. 10. 22
	 */
	public Collection<Brand> getBrandList(Brand brand) {
		return businessDao.getBrandList(brand);
	}

	/**
	 * 담당MD 목록
	 * @param brandMd - 담당MD 정보
	 * @return
	 * @author gagamel
	 * @since 2020. 11. 4
	 */
	public Collection<BrandMd> getMdList(BrandMd brandMd) {
		return businessDao.getMdList(brandMd);
	}

	/**
	 * 브랜드담당MD 목록
	 * @param brandCd - 브랜드코드
	 * @return
	 * @author gagamel
	 * @since 2020. 11. 4
	 */
	public Collection<BrandMd> getBrandMdList(String brandCd) {
		return businessDao.getBrandMdList(brandCd);
	}

//	/**
//	 * 브랜드담당MD 목록 등록/수정 처리
//	 * @param brandMdList - 브랜드담당MD 목록
//	 * @author gagamel
//	 * @since 2020. 11. 4
//	 */
//	@Transactional("shopTxnManager")
//	public void saveBrandMdList(Collection<BrandMd> brandMdList) {
//		businessDao.deleteBrandMd(brandMdList.iterator().next().getBrandCd());
//
//		for (BrandMd brandMd : brandMdList) {
//			brandMd.setRegNo(TsaSession.getInfo().getUserNo());
//			brandMd.setUpdNo(TsaSession.getInfo().getUserNo());
//			businessDao.createBrandMd(brandMd);
//		}
//	}
//
//	/**
//	 * 브랜드 노출사이트 목록
//	 * @param brandCd - 브랜드코드
//	 * @author gagamel
//	 * @since 2020. 11. 4
//	 */
//	public Collection<SiteBrand> getBrandSiteList(String brandCd) {
//		return businessDao.getBrandSiteList(brandCd);
//	}
//
//	/**
//	 * 브랜드 노출사이트 등록/수정 처리
//	 * @param siteBrandList - 브랜드사이트 목록
//	 * @author gagamel
//	 * @since 2020. 11. 4
//	 */
//	@Transactional("shopTxnManager")
//	public void saveBrandSiteList(Collection<SiteBrand> siteBrandList) {
//		for (SiteBrand siteBrand : siteBrandList) {
//			siteBrand.setRegNo(TsaSession.getInfo().getUserNo());
//			siteBrand.setUpdNo(TsaSession.getInfo().getUserNo());
////			siteBrand.setTcateCd(businessDao.getTcateCdByBrand(siteBrand));
//			businessDao.saveBrandSite(siteBrand);
//		}
//	}
//
//	/**
//	 * 브랜드 등록/수정
//	 * @param brand - 브랜드 정보
//	 * @author gagamel
//	 * @since 2020. 11. 5
//	 */
//	@Transactional("shopTxnManager")
//	public void saveBrand(Brand brand) {
//		if (brand.getMode().equals("N")) { // 신규
//			businessDao.createBrand(brand);
//		} else { // 수정
//			businessDao.updateBrand(brand);
//		}
//	}
//
//	/**
//	 * 재고연계관리 - 출고처 목록
//	 * @param delvLoc - 출고처 정보
//	 * @return
//	 * @author gagamel
//	 * @since 2020. 11. 7
//	 */
//	public Collection<DeliveryLoc> getStockSyncDeliveryLocList(DeliveryLoc delvLoc) {
//		return businessDao.getStockSyncDeliveryLocList(delvLoc);
//	}
//
//	/**
//	 * 재고연계관리 - 재고연계기준 목록
//	 * @param stockSyncBase - 재고연계기준 정보
//	 * @return
//	 * @author gagamel
//	 * @since 2020. 11. 7
//	 */
//	public Collection<StockSyncBase> getStockSyncBaseList(StockSyncBase stockSyncBase) {
//		return businessDao.getStockSyncBaseList(stockSyncBase);
//	}
//
//	/**
//	 * 재고연계관리 - 재고연계기준 저장
//	 * @param stockSyncBase - 재고연계기준 정보
//	 * @author gagamel
//	 * @since 2020. 11. 7
//	 */
//	public void saveStockSyncBaseList(Collection<StockSyncBase> stockSyncBaseList) {
//		for (StockSyncBase stockSyncBase : stockSyncBaseList) {
//			stockSyncBase.setRegNo(TsaSession.getInfo().getUserNo());
//			stockSyncBase.setUpdNo(TsaSession.getInfo().getUserNo());
//			businessDao.saveStockSyncBase(stockSyncBase);
//		}
//	}
//
//	/**
//	 * 판매매장 목록
//	 * @param sellStore - 판매매장 정보
//	 * @return
//	 * @author gagamel
//	 * @since 2020. 10. 20
//	 */
//	public Collection<SellStore> getSellStoreList(SellStore sellStore) {
//		return businessDao.getSellStoreList(sellStore);
//	}
//
//	/**
//	 * 판매매장 목록 저장 처리
//	 * @param sellStoreList - 판매매장 목록
//	 * @return
//	 * @author gagamel
//	 * @since 2020. 10. 20
//	 */
//	@Transactional("shopTxnManager")
//	public void saveSellStoreList(Collection<SellStore> sellStoreList) {
//		for (SellStore sellStore : sellStoreList) {
//			sellStore.setRegNo(TsaSession.getInfo().getUserNo());
//			sellStore.setUpdNo(TsaSession.getInfo().getUserNo());
//			businessDao.saveSellStore(sellStore);
//		}
//	}
//
//	/**
//	 * 제휴링크 목록
//	 * @param aflink - 제휴링크 정보
//	 * @return
//	 * @author gagamel
//	 * @since 2020. 10. 20
//	 */
//	public Collection<Aflink> getAflinkList(Aflink aflink) {
//		return businessDao.getAflinkList(aflink);
//	}
//
//	/**
//	 * 제휴링크 등록/수정
//	 * @param aflink - 제휴링크 정보
//	 * @return
//	 * @author gagamel
//	 * @since 2020. 10. 20
//	 */
//	@Transactional("shopTxnManager")
//	public void saveAflink(Aflink aflink) {
//		aflink.setRegNo(TsaSession.getInfo().getUserNo());
//		aflink.setUpdNo(TsaSession.getInfo().getUserNo());
//		businessDao.saveAflink(aflink);
//	}
//
//	/**
//	 * 제휴링크 목록 삭제 처리
//	 * @param aflinkList - 제휴링크 목록
//	 * @author gagamel
//	 * @since 2020. 10. 20
//	 */
//	@Transactional("shopTxnManager")
//	public void deleteAflinkList(Collection<Aflink> aflinkList) {
//		for (Aflink aflink : aflinkList) {
//			aflink.setUpdNo(TsaSession.getInfo().getUserNo());
//			businessDao.deleteAflink(aflink);
//		}
//	}
//
//	/**
//	 * 배송업체 목록
//	 * @return
//	 * @author gagamel
//	 * @since 2020. 10. 20
//	 */
//	public Collection<ShipCompany> getShipCompanyList() {
//		return businessDao.getShipCompanyList();
//	}
//
//	/**
//	 * 배송업체 목록 저장
//	 * @param shipCompList - 배송업체 목록
//	 * @return
//	 * @author gagamel
//	 * @since 2020. 10. 20
//	 */
//	@Transactional("shopTxnManager")
//	public void saveShipCompanyList(Collection<ShipCompany> shipCompList) {
//		for (ShipCompany shipComp : shipCompList) {
//			shipComp.setRegNo(TsaSession.getInfo().getUserNo());
//			shipComp.setUpdNo(TsaSession.getInfo().getUserNo());
//			businessDao.saveShipCompany(shipComp);
//		}
//	}
//
//	/**
//	 * 배송업체 목록 삭제
//	 * @param shipCompList - 배송업체 목록
//	 * @return
//	 * @author gagamel
//	 * @since 2020. 10. 20
//	 */
//	@Transactional("shopTxnManager")
//	public void deleteShipCompanyList(Collection<ShipCompany> shipCompList) {
//		for (ShipCompany shipComp : shipCompList) {
//			shipComp.setUpdNo(TsaSession.getInfo().getUserNo());
//			businessDao.deleteShipCompany(shipComp);
//		}
//	}

	/**
	 * 브랜드 공급업체 목록
	 * @param brandCd - 브랜드코드
	 * @author eskim
	 * @since 2021. 01. 21
	 */
	public Collection<Brand> getBrandSupplyList(String brandCd) {
		return businessDao.getBrandSupplyList(brandCd);
	}
}
