using Hotline.Share.Dtos.Order;

namespace DataSharing.Police110
{
    public interface IPoliceService
    {
        /// <summary>
        /// 组装110数据，12345警情工单推送到110
        /// </summary>
        /// <param name="orderDto"></param>
        /// <returns></returns>
        Task InitPoliceSendChainAlarmAsync(OrderDto orderDto, CancellationToken cancellationToken);

        /// <summary>
        /// 110的非警情工单获取办理信息
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task InitPoliceSendChainDealAsync(OrderFlowDto dto, CancellationToken cancellationToken);

        /// <summary>
        /// 110警情工单退回
        /// </summary>
        /// <param name="orderDto"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task ReturnPoliceAsync(OrderDto orderDto, CancellationToken cancellationToken);

        /// <summary>
        /// 110回访数据
        /// </summary>
        /// <param name="dto"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task Visit(PublishVisitDto dto, CancellationToken cancellationToken);

        /// <summary>
        /// 签收状态
        /// </summary>
        /// <param name="orderDto"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task SingForPoliceAsync(Hotline.Share.Dtos.Order.OrderDto orderDto, CancellationToken cancellationToken);

        /// <summary>
        /// 结果签收
        /// </summary>
        /// <param name="orderDto"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task FileEndPoliceAsync(Hotline.Share.Dtos.Order.OrderDto orderDto, CancellationToken cancellationToken);

        /// <summary>
        /// 给110推送行政审批工单（自贡独有）
        /// </summary>
        /// <param name="orderDto"></param>
        /// <returns></returns>
        Task InitPoliceAdministrativeApproval(Hotline.Share.Dtos.Order.OrderDto orderDto, CancellationToken cancellationToken);

        /// <summary>
        /// 泸州110回访
        /// </summary>
        /// <param name="dto"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        Task InitVisitData(PublishVisitAllDto dto, CancellationToken cancellationToken);
    }
}
