public async Task Handle(DomainEventNotification <UpdatedServiceRequest> notification, CancellationToken cancellationToken) { var serviceRequest = notification.DomainEvent.ServiceRequest; if (serviceRequest.State == ServiceRequestState.Pending) { return; } var client = await _clientsRepository.GetClientWithUser(serviceRequest.ClientId); string responseMessage = serviceRequest.State switch { ServiceRequestState.Accepted => "Hemos aceptado tu solicitud de servicio y agendamos las actividades a aplicar.", ServiceRequestState.Rejected => "Desafortunadamente hemos rechazado tu solicitud de servicio.", ServiceRequestState.PendingSuggestedDate => "Te hemos sugerido una nueva fecha de aplicación de nuestros servicios.", _ => "Tu solicitud aún está pendiente" }; var responseUrl = new UriBuilder(KaizenHttpContext.BaseUrl) { Path = serviceRequest.State switch { ServiceRequestState.Accepted => "/activity_schedule/client_schedule", ServiceRequestState.Rejected => "/service_requests/register", ServiceRequestState.PendingSuggestedDate => "/service_requests/new_date", _ => $"/service_requests/{serviceRequest.Code}" } }; var responseButtonMessage = serviceRequest.State switch { ServiceRequestState.Accepted => "Ver mi calendario de actividades", ServiceRequestState.Rejected => "Intentar hacer otra solicitud", ServiceRequestState.PendingSuggestedDate => "Ver fecha sugerida", _ => "Ver solicitud" }; string emailMessage = _mailTemplate.LoadTemplate("ServiceRequestResponse.html", $"{client.FirstName} {client.LastName}", responseMessage, responseUrl.ToString(), responseButtonMessage); await _mailService.SendEmailAsync( client.User.Email, "Respuesta de solicitud de servicio", emailMessage, true); } } }
public async Task <ActionResult <ActivityViewModel> > PostActivity([FromBody] ActivityInputModel activityModel) { Client client = await _clientsRepository.GetClientWithUser(activityModel.ClientId); if (client is null) { return(NotFound($"El cliente con identificación {activityModel.ClientId} no se encuentra registrado.")); } Activity activity = _mapper.Map <Activity>(activityModel); activity.Client = client; _activitiesRepository.Insert(activity); activity.PublishEvent(new SavedActivity(activity)); await _unitWork.SaveAsync(); return(_mapper.Map <ActivityViewModel>(activity)); }
public async Task Handle(DomainEventNotification <UpdatedServiceRequest> notification, CancellationToken cancellationToken) { var serviceRequest = notification.DomainEvent.ServiceRequest; if (serviceRequest.State == ServiceRequestState.Pending) { return; } var client = await _clientsRepository.GetClientWithUser(serviceRequest.ClientId); var clientNotification = await SaveServiceRequestNotification(serviceRequest, client.User); if (clientNotification is null) { return; } await SendServiceRequestNotification(clientNotification, client.User.Id, cancellationToken); }