Пример #1
0
        public async Task Handle(DomainEventNotification <UpdatedClient> notification,
                                 CancellationToken cancellationToken)
        {
            var client = notification.DomainEvent.Client;

            if (client.State != ClientState.Acceptep && client.State != ClientState.Rejected)
            {
                return;
            }

            var message = client.State switch
            {
                ClientState.Acceptep => "Hemos aceptado tu solicitud de ser nuestro cliente.",
                ClientState.Rejected => "Desafortunadamente hemos rechazado tu solicitud de ser nuestro cliente.",
                _ => string.Empty
            };
            var clientNotification = new Notification
            {
                Title   = "Respuesta de solicitud de cliente",
                Message = message,
                Icon    = "question_answer",
                State   = NotificationState.Pending,
                UserId  = client.UserId
            };

            _notificationsRepository.Insert(clientNotification);
            await _unitWork.SaveAsync();

            var notificationViewModel = _mapper.Map <NotificationViewModel>(clientNotification);
            await _notificationsHub.Clients.User(client.UserId).SendAsync("OnNewNotification",
                                                                          notificationViewModel, cancellationToken);
        }
    }
        private async Task <Notification> SaveServiceRequestNotification(ServiceRequest serviceRequest,
                                                                         ApplicationUser user)
        {
            var message = serviceRequest.State switch
            {
                ServiceRequestState.Accepted =>
                "Hemos aceptado tu solicitud de servicio y agendamos las actividades a aplicar. " +
                "Consulta tu calendario.",
                ServiceRequestState.Rejected => "Desafortunadamente hemos rechazado tu solicitud de servicio.",
                ServiceRequestState.PendingSuggestedDate =>
                "Te hemos sugerido una nueva fecha de aplicación de nuestros servicios." +
                "Puedes aceptarla o sugerirnos otra.",
                _ => string.Empty
            };

            if (string.IsNullOrEmpty(message))
            {
                return(null);
            }

            var serviceRequestUrl = serviceRequest.State == ServiceRequestState.PendingSuggestedDate
                ? "/service_requests/new_date"
                : $"/service_requests/{serviceRequest.Code}";

            var notification = new Notification
            {
                Title   = "Respuesta de solicitud de servicio",
                Message = message,
                Icon    = "question_answer",
                State   = NotificationState.Pending,
                Url     = serviceRequestUrl,
                UserId  = user.Id
            };

            _notificationsRepository.Insert(notification);
            await _unitWork.SaveAsync();

            return(notification);
        }