package com.viettel.campaign.service;

import com.viettel.campaign.model.Campaign;
import com.viettel.campaign.web.dto.CampaignDTO;
import com.viettel.campaign.web.dto.ResultDTO;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

public interface CampaignService {
    ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto);

    ResultDTO search(CampaignRequestDTO requestDto);

    ResultDTO findByCampaignCode(CampaignRequestDTO requestDTO);

    List<Campaign> findAllCondition(Long companySiteId);

    List<Campaign> findCampaignByCompanySiteIdAndStartTimeIsLessThanEqualAndStatusIn(Long siteId, Date startTime, List<Long> status);

    List<Campaign> findCampaignByCompanySiteIdAndEndTimeIsLessThanEqualAndStatusIn(Long siteId, Date startTime, List<Long> status);

    Campaign updateProcess(Campaign c);

    ResultDTO findByCampaignId(Long campaignId);

    ResultDTO addNewCampaign(CampaignDTO campaignDTO);

    Map countRecallCustomer(Long companySiteId, Long agentId);

    ResultDTO findCampaignById(Long campaignId);

    ResultDTO changeCampaignStatus(CampaignDTO dto);

    ResultDTO checkAllowStatusToPrepare(Long campaignId);
}
