using Hotline.Caching.Services;
using Hotline.Share.Dtos.Realtime;

namespace Hotline.Realtimes
{
    public interface IRealtimeService
    {
        #region 话机状态通知
        Task AlertAsync(string userId, AlertDto dto, CancellationToken cancellationToken);

        Task RingAsync(string userId, RingDto dto, CancellationToken cancellationToken);

        Task AnsweredAsync(string userId, AnsweredDto dto, CancellationToken cancellationToken);

        Task ByeAsync(string userId, ByeDto dto, CancellationToken cancellationToken);

        Task RestApplyPassAsync(string userId, CancellationToken cancellationToken);

        Task CallQueueAsync(List<CallCacheManager.CallDtoRedis> list, CancellationToken cancellationToken);

        Task IdleAsync(string userId, CancellationToken cancellationToken);

        #endregion

        #region 系统消息通知

        Task CircularRecoordAsync(string id, string title, string sendContent, CancellationToken cancellationToken);

        #endregion

        #region 大屏.数据展示

        Task BsDataShowChanged1Async(object obj, CancellationToken cancellationToken);
        Task BsDataShowChanged2Async(object obj, CancellationToken cancellationToken);
        Task BsDataShowChanged3Async(object obj, CancellationToken cancellationToken);
        Task BsDataShowChanged4Async(object obj, CancellationToken cancellationToken);
        Task BsDataShowChanged5Async(object obj, CancellationToken cancellationToken);
        Task BsDataShowChanged6Async(object obj, CancellationToken cancellationToken);
        Task BsDataShowChanged7Async(object obj, CancellationToken cancellationToken);
        Task BsDataShowChanged8Async(object obj, CancellationToken cancellationToken);

        #endregion

        #region 大屏坐席数据

        Task BsSeatStateDataShowChangedAsync1(object obj, CancellationToken cancellationToken);
        Task BsSeatStateDataShowChangedAsync2(object obj, CancellationToken cancellationToken);
        Task BsSeatStateDataShowChangedAsync3(object obj, CancellationToken cancellationToken);
        Task BsSeatStateDataShowChangedAsync4(object obj, CancellationToken cancellationToken);
        #endregion

        #region 大屏数据
        /// <summary>
        /// 推送年月日工单量数据
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task OrderCountStatisticsAsync(object obj, CancellationToken cancellationToken);

        Task OrderHandlingDetailAsync(object obj, CancellationToken cancellationToken);

        Task OrderSecondaryHandlingDetailAsync(object obj, CancellationToken cancellationToken);

        /// <summary>
        /// 推送110来源工单
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task OrderSourePoliceDetailAsync(object obj, CancellationToken cancellationToken);
        #endregion

        #region 司法大屏

        Task EnforcementOrderHandlingDetailAsync(object obj, CancellationToken cancellationToken);
        #endregion

        #region 话务排队信息
        /// <summary>
        /// 今日排队
        /// </summary>
        /// <param name="count"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task TodayWaitNumAsync(int count, CancellationToken cancellationToken);
        /// <summary>
        /// 当前等待
        /// </summary>
        /// <param name="count"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task CurrentWaitNumAsync(int count, CancellationToken cancellationToken);

        #endregion

    }
}