using MapsterMapper;
using MediatR;
using Microsoft.AspNetCore.Http;
using Sharing.Notifications.HuiJu;
using Sharing.Province.Dtos.HuiJu.Send;
using Sharing.Province.Extend;
using Sharing.Repository.Province.Extend;
using Sharing.Share.Dtos.Extend;
namespace Sharing.Province.Handlers.HuiJu
{
///
/// 服务工单拓展信息
///
public class SubmitCaseExtendsHandler : INotificationHandler
{
private readonly IChannelConfigurationManager _channelConfigurationManager;
private readonly PusherProvider _pusherProvider;
private readonly IMapper _mapper;
private readonly IReceiveCaseExtendsRepository _receiveCaseExtendsRepository;
///
///
///
///
///
///
///
public SubmitCaseExtendsHandler(IChannelConfigurationManager channelConfigurationManager, PusherProvider pusherProvider, IMapper mapper, IReceiveCaseExtendsRepository receiveCaseExtendsRepository)
{
_channelConfigurationManager = channelConfigurationManager;
_pusherProvider = pusherProvider;
_mapper = mapper;
_receiveCaseExtendsRepository = receiveCaseExtendsRepository;
}
///
/// 服务工单拓展信息
///
///
///
///
public async Task Handle(SubmitCaseExtendsNotification notification, CancellationToken cancellationToken)
{
var strOrder = notification.DataOrder;
if (!string.IsNullOrEmpty(strOrder))
{
var order = System.Text.Json.JsonSerializer.Deserialize(strOrder);
if (order != null && order.Info != null)
{
var data = order.Info;
var pusher = _pusherProvider.CreatePusher(_channelConfigurationManager);
var request = new SubmitCaseExtendsRequest();
//扩展信息时间处理
switch (data.FormType.ToLower())
{
case "yl"://医疗表单
request.ForeachClass(data.FormMedical);
break;
case "zwfw"://四川政务服务网技术工单
request.ForeachClass(data.FormNetWorktec);
break;
case "th"://电视购物及商铺购买退换货工单
request.ForeachClass(data.FormReturnexChange);
break;
case "gsgl"://高速公路工单
request.ForeachClass(data.FormExpressWay);
break;
case "xjgg"://电视台虚假广告工单
request.ForeachClass(data.FormShamPub);
break;
case "swfwsq"://12366热线诉求交办
request.ForeachClass(data.FormTaxationComplaint);
break;
case "swfwzx"://12366热线咨询交办
request.ForeachClass(data.FormTaxationConsulting);
break;
case "jtfwjd"://12328服务监督
request.ForeachClass(data.FormTraffic);
break;
case "yzxf"://邮政业消费者申诉
request.ForeachClass(data.FormPost);
break;
case "hbjb"://环保举报业务
request.ForeachClass(data.FormEnvironMent);
break;
case "scjgj"://12315个性化表单
request.ForeachClass(data.FormMarket);
break;
default:
break;
}
request.SetData(data);
var response = await pusher.PushSubmitCaseExtendsAsync(request, cancellationToken);
//如果推送成功修改数据状态
if (response != null)
{
var caseInfo = await _receiveCaseExtendsRepository.GetAsync(p => p.Id == order.Id);
if (caseInfo != null)
{
if (response.Code == "1")
caseInfo.SyncState = "1";
else
caseInfo.SyncState = "2";
caseInfo.ReturnResult = Newtonsoft.Json.JsonConvert.SerializeObject(response);
await _receiveCaseExtendsRepository.UpdateAsync(caseInfo);
}
}
}
}
}
}
}