package com.style24.admin.biz.dao;

import com.gagaframework.excel.xssf.GagaExcelResultHandler;
import com.style24.core.support.annotation.ShopDs;
import com.style24.persistence.domain.*;
import org.apache.ibatis.session.ResultHandler;
import org.springframework.stereotype.Component;

import java.util.Collection;
import java.util.List;

/**
 * 마케팅 다다익선 Dao
 *
 * @author bin2107
 * @since 2021. 1. 12
 */
@ShopDs
@Component
public interface TsaMorebetterDao {
    /* CSB 진행 */
    /**
     * 다다익선 리스트 건수
     * @param moreBetter
     * @return
     * @author bin2107
     * @since 2021. 1. 26
     */
    int getMorebetterListCount(MoreBetter moreBetter);

    /**
     * 다다익선 프로모션 리스트
     * @param moreBetter
     * @return
     * @author bin2107
     * @since 2020. 12. 28
     */
    Collection<MoreBetter> getMorebetterList(MoreBetter moreBetter);

    /**
     * 다다익선 상세조회
     * @param tmtbSq
     * @return
     * @author bin2107
     * @since 2021. 1. 8
     */
    MoreBetter getMorebetterMstInfo(Integer tmtbSq);

    /**
     * 다다익선 구간 조회
     * @param tmtbSq
     * @return
     * @author bin2107
     * @since 2021. 1. 8
     */
    Collection<MoreBetterSection> getMorebetterSectionValList(Integer tmtbSq);

    /**
     * 다다익선 구간 조회
     * @param moreBetterGoods
     * @return
     * @author bin2107
     * @since 2021. 1. 8
     */
    Collection<MoreBetterGoods> getMorebetterSupplyCompList(MoreBetterGoods moreBetterGoods);

    Collection<MoreBetterGoods> getMorebetterBrandList(MoreBetterGoods moreBetterGoods);

    Collection<MoreBetterGoods> getMorebetterApplyGoodsList(MoreBetterGoods moreBetterGoods);

    Collection<MoreBetterGoods> getMorebetterExceptGoodsList(MoreBetterGoods moreBetterGoods);

    /**
     * 다다익선 구간 조회
     * @param tmtbSq
     * @return
     * @author bin2107
     * @since 2021. 1. 8
     */
    Collection<MoreBetterBurden> getMorebetterBurdenList(Integer tmtbSq);

    /**
     * 다다익선 마스터(TB_TMTB) 저장
     * @param moreBetter
     * @return
     * @author bin2107
     * @since 2020. 12. 28
     */
    void saveMorebetterMst(MoreBetter moreBetter);

    /**
     * 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
     * @param moreBetterGoods
     * @return
     * @author bin2107
     * @since 2021. 1. 7
     */
    void saveMorebetterGoods(MoreBetterGoods moreBetterGoods);

    /**
     * 다다익선 실제적용대상 설정(TB_TMTB_APPLY_GOODS) 저장
     * @param moreBetterGoods
     * @return
     * @author bin2107
     * @since 2021. 1. 20
     */
    void saveMorebetterApplyGoods(MoreBetterGoods moreBetterGoods);

    /**
     * 다다익선 할인구간설정 2차조건(TB_TMTB_SECTION) 저장
     * @param moreBetterSection
     * @return
     * @author bin2107
     * @since 2021. 1. 6
     */
    void saveMorebetterSection(MoreBetterSection moreBetterSection);

    /**
     * 다다익선 조건에 따른 할인혜택(금액할인) 설정(TB_TMTB_VAL) 저장
     * @param moreBetterSection
     * @return
     * @author bin2107
     * @since 2021. 1. 6
     */
    void saveMorebetterVal(MoreBetterSection moreBetterSection);

    /**
     * 다다익선 업체분담율(TB_TMTB_BURDEN) 저장
     * @param moreBetterBurden
     * @return
     * @author bin2107
     * @since 2020. 12. 28
     */
    void saveMorebetterBurden(MoreBetterBurden moreBetterBurden);

    /**
     * 다다익선 공급업체(TB_TMTB_GOODS) 삭제
     * @param moreBetterGoods
     * @return
     * @author bin2107
     * @since 2021. 1. 12
     */
    void deleteTmtbSupplyCompanyList(MoreBetterGoods moreBetterGoods);

    /**
     * 다다익선 브랜드(TB_TMTB_GOODS) 삭제
     * @param moreBetterGoods
     * @return
     * @author bin2107
     * @since 2021. 1. 12
     */
    void deleteTmtbBrandList(MoreBetterGoods moreBetterGoods);

    /**
     * 다다익선 적용상품(TB_TMTB_GOODS) 삭제
     * @param moreBetterGoods
     * @return
     * @author bin2107
     * @since 2021. 1. 12
     */
    void deleteTmtbApplyGoodsList(MoreBetterGoods moreBetterGoods);

    /**
     * 다다익선 제외상품(TB_TMTB_GOODS) 삭제
     * @param moreBetterGoods
     * @return
     * @author bin2107
     * @since 2021. 1. 12
     */
    void deleteTmtbExceptGoodsList(MoreBetterGoods moreBetterGoods);

    /**
     * 다다익선 할인구간설정(TB_TMTB_SECTION) 삭제
     * @param moreBetterSection
     * @return
     * @author bin2107
     * @since 2021. 1. 6
     */
    void deleteTmtbSectionList(MoreBetterSection moreBetterSection);

    /**
     * 다다익선 조건에 따른 할인혜택(금액할인) 설정(TB_TMTB_VAL) 삭제
     * @param moreBetterSection
     * @return
     * @author bin2107
     * @since 2021. 1. 6
     */
    void deleteTmtbValList(MoreBetterSection moreBetterSection);

    /**
     * 다다익선 업체분담율(TB_TMTB_BURDEN) 삭제
     * @param moreBetterBurden
     * @return
     * @author bin2107
     * @since 2021. 1. 12
     */
    void deleteTmtbBurdenList(MoreBetterBurden moreBetterBurden);

    /**
     * 다다익선 중복 상품 조회
     * @param moreBetterGoods
     * @return
     * @author bin2107
     * @since 2021. 1. 12
     */
    Collection<MoreBetterGoods> getMorebetterDuplicateList(MoreBetterGoods moreBetterGoods);

    /**
     * 다다익선 진행 상태 변경
     * @param
     * @return
     * @author bin2107
     * @since 2021. 1. 26
     */
    void updateMorebetterStat(MoreBetter moreBetter);

    /**
     * 다다익선 업체,브랜드,상품 (TB_TMTB_GOODS) 삭제
     * @param moreBetter
     * @return
     * @author bin2107
     * @since 2021. 2. 8
     */
    void deleteTmtbGoods(MoreBetter moreBetter);

    /**
     * 다다익선 분담율 (TB_TMTB_BURDEN) 삭제
     * @param moreBetter
     * @return
     * @author bin2107
     * @since 2021. 2. 8
     */
    void deleteTmtbBurden(MoreBetter moreBetter);

    /**
     * 다다익선 할인 구간 (TB_TMTB_SECTION) 삭제
     * @param moreBetter
     * @return
     * @author bin2107
     * @since 2021. 2. 8
     */
    void deleteTmtbSection(MoreBetter moreBetter);

    /**
     * 다다익선 할인값 (TB_TMTB_VAL) 삭제
     * @param moreBetter
     * @return
     * @author bin2107
     * @since 2021. 2. 8
     */
    void deleteTmtbVal(MoreBetter moreBetter);

    /**
     * 다다익선 임시 적용상품 (TB_TMTB_APPLY_GOODS_TEMP) 삭제
     * @param moreBetter
     * @return
     * @author bin2107
     * @since 2021. 2. 8
     */
    void deleteTmtbApplyGoods(MoreBetter moreBetter);

    /**
     * 다다익선 공급업체 & 브랜드 적용상품 (TB_TMTB_APPLY_GOODS) 저장
     * @param moreBetter
     * @return
     * @author bin2107
     * @since 2021. 3. 22
     */
    void insertMorebetterApplyGoods(MoreBetterGoods moreBetterGoods);

    /**
     * 다다익선 적용상품 temp
     * @param
     * @return
     * @author bin2107
     * @since 2021. 3. 23
     */
    void deleteMorebetterApplyGoodsTemp(MoreBetter moreBetter);
    void insertMorebetterApplyGoodsTemp(MoreBetter moreBetter);
    /* // CSB 진행 */
}
