public void Load_An_Existing_Template_Without_Params() { string template = _mailTemplate.LoadTemplate("Test.html"); Assert.IsNotNull(template); Assert.IsTrue(template.Length > 0); }
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 Handle(DomainEventNotification <SavedActivity> notification, CancellationToken cancellationToken) { Activity activity = notification.DomainEvent.Activity; Client client = activity.Client; string emailMessage = _mailTemplate.LoadTemplate("NewActivity.html", $"{client.LastName} {client.FirstName}", activity.Date.ToString("yyyy/MM/dd hh:mm tt")); await _mailService.SendEmailAsync(client.User.Email, "Solicitud de servicios", emailMessage, true); }
public async Task <bool> SendPasswordResetTokenAsync(ApplicationUser user, string resetPasswordLink) { if (user is null) { return(false); } string mailTemplate = _mailTemplate.LoadTemplate("ResetPassword.html", resetPasswordLink); await _mailService.SendEmailAsync(user.Email, "Contraseña olvidada", mailTemplate, true); return(true); }
private async Task SendPendingActivityEmail(Activity activity) { string activityConfirmationLink = GetActivityLink("ConfirmActivity", activity.Code); string activityRejectLink = GetActivityLink("RejectActivity", activity.Code); string changeDateLink = GetActivityLink("ChangeDate", activity.Code); string mailMessage = _mailTemplate.LoadTemplate("PendingActivityToBeConfirmed.html", $"{activity.Client.FirstName} {activity.Client.SecondName} {activity.Client.LastName} {activity.Client.SecondLastName}", $"{activity.Date}", activityConfirmationLink, activityRejectLink, changeDateLink); await _mailService.SendEmailAsync(activity.Client.User.Email, "Actividad pendiente a confirmación", mailMessage, true); }
public async Task DoWork(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { IEnumerable <Employee> employees = await _employeesRepository.EmployeesWithContractCloseToExpiration(); foreach (Employee employee in employees) { string mailMessage = _mailTemplate.LoadTemplate("ContractCloseToExpiration.html", $"{employee.LastName} {employee.FirstName}", employee.ContractCode, employee.EmployeeContract.EndDate.ToShortDateString()); await _mailService.SendEmailAsync(employee.User.Email, "Contrato a punto de vencer", mailMessage, true); } await Task.Delay(DelayTime, cancellationToken); } }
public async Task Handle(DomainEventNotification <SavedPerson> notification, CancellationToken cancellationToken) { Client client = notification.DomainEvent.Client; string emailConfirmationToken = await _applicationUserRepository.GenerateEmailConfirmationTokenAsync(client.User); UriBuilder uriBuilder = new UriBuilder(KaizenHttpContext.BaseUrl) { Path = "user/ConfirmEmail", Query = $"token={emailConfirmationToken.Base64ForUrlEncode()}&email={client.User.Email}" }; string emailConfirmationLink = uriBuilder.ToString(); string emailMessage = _mailTemplate.LoadTemplate("NewClient.html", $"{client.FirstName} {client.LastName}", $"{client.TradeName}", $"{client.ClientAddress.City}", $"{client.ClientAddress.Neighborhood}", $"{client.ClientAddress.Street}", $"{emailConfirmationLink}"); await _mailService.SendEmailAsync(client.User.Email, "Cliente Registrado", emailMessage, true); }