package com.viettel.campaign.service;

import com.viettel.campaign.model.ccms_full.ContactCustResult;
import com.viettel.campaign.web.dto.*;
import com.viettel.campaign.web.dto.request_dto.CampaignRequestDTO;
import com.viettel.econtact.filter.UserSession;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.util.List;

@Service
public interface CampaignExecuteService {
    //<editor-fold: hungtt>
    ResultDTO getComboBoxStatus(String companySiteId, String completeType);

    ResultDTO getComboCampaignType(String companySiteId);

    ResultDTO searchInteractiveResult(CampaignRequestDTO dto);

    XSSFWorkbook exportInteractiveResult(CampaignRequestDTO dto) throws IOException;

    ResultDTO searchCampaignExecute(CampaignRequestDTO requestDto, String xAuthToken);

    ResultDTO getExecuteCampaign(CampaignRequestDTO requestDto);

    ResultDTO getCustomer(CampaignCustomerDTO dto);

    ResultDTO updateCustomerResult(ContactCustResultDTO dto);

    ResultDTO getCustomerComplete(ReceiveCustLogDTO dto);

    ResultDTO getCallLog(ReceiveCustLogDTO dto);

    ResultDTO getCallStatus(CampaignRequestDTO dto);

    ResultDTO getAgentLogout(CampaignRequestDTO dto);

    ResultDTO callCustomer(ContactCustResultDTO dto, UserSession userSession);

    ResultDTO recallCustomer(ContactCustResultDTO dto);

    ResultDTO callCustomerEnd(ContactCustResultDTO dto);

    ResultDTO countRecallCustomer(Long companySiteId, Long agentId);

    ResultDTO getCustomerRecall(Long campaignId, Long customerId);

    ResultDTO getCustomerInfor(Long companySiteId, Long customerId, Long campaignId);

    ResultDTO createListContacQuestResult(List<ContactQuestResultDTO> dtoList);

    String getDialModeAtCurrent(Long campaignId, Long companySiteId);
}
