public async Task <IActionResult> EmailCertificate([FromRoute] int regId, [FromServices] CertificatePdfRenderer writer, [FromServices] StandardEmailSender emailSender) { var c = await _certificatesService.GetForRegistrationAsync(regId); var result = await writer.RenderAsync(CertificateVM.From(c)); var memoryStream = new MemoryStream(); await result.CopyToAsync(memoryStream); var emailMessage = new EmailMessage { Email = c.RecipientEmail, Subject = $"Kursbevis for {c.Title}", Message = "Her er kursbeviset! Gratulere!", Attachment = new Attachment { Filename = "kursbevis.pdf", Bytes = memoryStream.ToArray(), ContentType = "application/pdf" } }; await emailSender.SendStandardEmailAsync(emailMessage); return(Ok()); }
public async Task <IActionResult> DownloadCertificate( [FromServices] CertificatePdfRenderer writer, [FromServices] ICertificatesService certificatesService, [FromRoute] int id) { var certificate = await certificatesService.GetAsync(id); if (certificate == null) { return(NotFound()); } var stream = await writer.RenderAsync(CertificateVM.From(certificate)); MemoryStream memoryStream = new MemoryStream(); await stream.CopyToAsync(memoryStream); return(File(memoryStream.ToArray(), "application/pdf")); }
public async Task <IActionResult> GenerateCertificatesAndSendEmails([FromRoute] int eventId, [FromServices] CertificatePdfRenderer writer, [FromServices] StandardEmailSender emailSender) { var certificates = await _certificatesService.CreateCertificatesForEvent(eventId); foreach (var certificate in certificates) { var result = await writer.RenderAsync(CertificateVM.From(certificate)); var memoryStream = new MemoryStream(); await result.CopyToAsync(memoryStream); await emailSender.SendStandardEmailAsync(new EmailMessage { Email = certificate.RecipientEmail, Subject = $"Kursbevis for {certificate.Title}", Message = "Her er kursbeviset! Gratulere!", Attachment = new Attachment { Filename = "kursbevis.pdf", Bytes = memoryStream.ToArray(), ContentType = "application/pdf" } }); } return(Ok()); }