using Hotline.CallCenter.BlackLists;
using Hotline.CallCenter.Calls;
using Hotline.CallCenter.Tels;
using Hotline.Share.Dtos;
using Hotline.Share.Dtos.CallCenter;
using Hotline.Share.Dtos.Order;
using Hotline.Share.Dtos.TrCallCenter;
using Hotline.Share.Enums.CallCenter;
using Hotline.Share.Enums.Order;
using SqlSugar;
namespace Hotline.Application.CallCenter
{
public interface ICallApplication
{
///
/// 记录分机结束动作时间
///
///
///
Task EndActionAsync(EndActionInDto inDto);
///
/// 查询分机
///
Task<(int, IList)> QueryTelsAsync(QueryTelsInDto dto, CancellationToken cancellationToken);
///
/// 查询分机组
///
Task> QueryTelGroupsAsync(CancellationToken cancellationToken);
#region 黑名单
///
/// 新增黑名单
///
Task AddBlackListAsync(AddBlacklistDto dto, CancellationToken cancellationToken);
///
/// 删除黑名单
///
Task RemoveBlackListAsync(string id, CancellationToken cancellationToken);
///
/// 查询黑名单
///
Task> QueryBlackListsAsync(CancellationToken cancellationToken);
#endregion
///
/// 签入
///
Task SignInAsync(SignInDto dto, CancellationToken cancellationToken);
///
/// 签出
///
Task SingOutAsync(CancellationToken cancellationToken);
///
/// 签出
///
Task SingOutAsync(string telNo, CancellationToken cancellationToken);
///
/// 查询当前用户的分机状态
///
///
///
Task GetTelStateAsync(CancellationToken cancellationToken);
///
/// 定量查询通话记录
///
ISugarQueryable QueryCallsFixedAsync(QueryCallsFixedDto dto, CancellationToken cancellationToken);
///
/// 查询分机操作记录(定量)
///
ISugarQueryable QueryTelOperationsAsync(QueryTelOperationsFixedDto dto);
///
/// 依据通话记录编号获取映射后的callId
///
Task GetOrSetCallIdAsync(string? callNo, CancellationToken cancellationToken);
///
/// 发送延迟消息让回访去关联通话记录
///
///
///
Task PublishVisitRelevanceCallIdAsync(OrderRelevanceCallIdDto dto, CancellationToken cancellationToken);
Task GetRelationAsync(string callNo, CancellationToken cancellation);
Task AddRelationAsync(CallidRelation relation, CancellationToken cancellation);
///
/// 乐观并发更新映射关系
///
Task UpdateRelationOptLockAsync(CallidRelation relation, CancellationToken cancellationToken);
///
/// 查询通话记录列表
///
Task> GetCallListAsync(string callId, CancellationToken cancellationToken);
///
/// 查询通话记录
///
///
///
///
Task GetCallAsync(string callId, CancellationToken cancellationToken);
///
/// 查询通话记录
/// 因为自贡的系统中有回访和通话记录未关联的异常数据, 使用此方法查询通话记录
///
Task GetCallByTimeAndToNoAsync(string toNo, DateTime time, CancellationToken cancellationToken);
///
/// 查询通话记录
/// 因为自贡的系统中有回访和通话记录未关联的异常数据, 使用此方法查询通话记录
///
Task GetCallByCallNoAsync(string callNo, CancellationToken cancellationToken);
///
/// 查询通话记录
///
Task> QueryCallsAsync(
string? phone = null,
ECallDirection? direction = null,
DateTime? callStartTimeStart = null,
DateTime? callStartTimeEnd = null,
CancellationToken cancellationToken = default);
#region tianrun
Task GetTianrunCallAsync(string callId, CancellationToken cancellationToken);
///
/// 根据转写ID获取通话信息
///
///
Task GetTianrunCallTransliterationAsync(string transliterationId, CancellationToken cancellationToken);
///
/// 修改转写状态
///
///
Task EditTransliterationStateAsync(string callId, ECallTransliterationState state,string transliterationId, CancellationToken cancellationToken);
///
/// 关联通话记录与order(添润)
///
Task RelateTianrunCallWithOrderAsync(string callId, string orderId, CancellationToken cancellationToken);
///
/// 处理工单和通话记录关联问题
///
///
///
///
Task OrderRelateCallHandlerAsync(string orderId, CancellationToken cancellationToken);
///
/// 查询通话记录
///
Task> QueryTianrunCallsAsync(
string? phone = null,
ECallDirection? direction = null,
DateTime? callStartTimeStart = null,
DateTime? callStartTimeEnd = null,
CancellationToken cancellationToken = default);
#endregion
///
/// 查询分机操作选项
///
///
List GetTelOperationOptions();
///
/// 查询语音评价内容
///
///
///
Task GetReplyVoiceOrDefaultByOrderIdAsync(string orderId);
///
/// 保存回访详情时发送延迟消息同步通话记录
/// 如果回访通话记录有多条, 需要关联通话时长最长的那条
///
Task OrderVisitRelevanceCallIdAsync(VisitDto dto, CancellationToken cancellationToken);
///
/// 根据 OrderId 返回用户电话评价枚举
///
///
///
Task GetSeatDefaultByOrderIdAsync(string orderId);
Task ChangeTelModel(bool isCallOut, CancellationToken requestAborted);
}
}