12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- using Hotline.CallCenter.Calls;
- using Hotline.Share.Enums.CallCenter;
- using Hotline.Share.Notifications.NewRockCallCenter;
- using MediatR;
- namespace Hotline.Application.Handlers.CallCenter.FlowControl
- {
- public class ByeOuterAndOuterNotificationHandler:INotificationHandler<ByeOuterAndOuterNotification>
- {
- private readonly ICallRepository _callRepository;
- private readonly ICallDetailRepository _callDetailRepository;
- public ByeOuterAndOuterNotificationHandler(ICallRepository callRepository, ICallDetailRepository callDetailRepository)
- {
- _callRepository = callRepository;
- _callDetailRepository = callDetailRepository;
- }
- public async Task Handle(ByeOuterAndOuterNotification notification, CancellationToken cancellationToken)
- {
- var model = await _callRepository.GetAsync(x =>
- x.ConversationId == notification.Outer.Id && x.FromNo == notification.Outer.From &&
- x.ToNo == notification.Outer.To && x.CreationTime >= DateTime.Now.AddHours(-2),true,x=>x.CreationTime,cancellationToken);
- if (model!=null)
- {
- model.CallStatus = ECallStatus.Bye;
- model.RingOffType = ERingOffType.Normal;
- model.ByeTime = DateTime.Now;
- await _callRepository.UpdateAsync(model, cancellationToken);
- var detail = new CallDetail()
- {
- CallId = model.Id,
- CallStatus = ECallStatus.Answered,
- ConversationId = notification.Outer.Id,
- OMCallId = notification.Outer.CallId,
- EventName = notification.Attribute,
- AnswerNo = notification.Outer.To,
- FromNo = notification.Outer.From,
- ToNo = notification.Outer.To,
- Recording = notification.Recording,
- };
- await _callDetailRepository.AddAsync(detail, cancellationToken);
- }
- }
- }
- }
|