Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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"));
        }
Ejemplo n.º 3
0
        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());
        }