package com.eksad.masterdata.repository;

import com.eksad.ddms.common.util.status.DataStatus;
import com.eksad.masterdata.common.listEnum.PromoSource;
import com.eksad.masterdata.domain.ConfigPackageServicePartPromo;
import jakarta.transaction.Transactional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
@Transactional
public interface ConfigPackageServicePartPromoRepository extends GenericRepository<ConfigPackageServicePartPromo> {

    ConfigPackageServicePartPromo findOneById(Integer id);

    List<ConfigPackageServicePartPromo> findAllByConfigPackageServicePartPromoStatusOrderByIdAsc(DataStatus configPackageServicePartPromoStatus);

    ConfigPackageServicePartPromo findOneByConfigPackageServicePartID(String configPackageServicePartID);

    Page<ConfigPackageServicePartPromo> findAllByConfigPackageServicePartPromoStatus(DataStatus dataStatus, Pageable pageable);

    ConfigPackageServicePartPromo findOneByPromoIDAndReffIDAndSource(String promoID, String reffID, PromoSource source);

    ConfigPackageServicePartPromo findOneByPromoIDAndReffIDAndPackageIDAndSource(String promoID, String reffID, String packageID, PromoSource source);

    List<ConfigPackageServicePartPromo> findAllByPromoIDAndReffIDAndSource(String promoID, String reffID, PromoSource source);

    List<ConfigPackageServicePartPromo> findAllByPromoIDAndSourceOrderByIdAsc(String promoID, PromoSource source);

    List<ConfigPackageServicePartPromo> findAllByPromoIDAndSourceAndConfigPackageServicePartPromoStatusOrderByPackageIDAscWorkshopServiceNameAsc(String promoID, PromoSource source, DataStatus configPackageServicePartPromoStatus);

    List<ConfigPackageServicePartPromo> findAllByPackageIDAndSourceAndConfigPackageServicePartPromoStatusOrderByWorkshopServiceNameAsc(String packageID, PromoSource source, DataStatus configPackageServicePartPromoStatus);
}