public static async System.Threading.Tasks.Task RunAsync([QueueTrigger("eventqueue", Connection = "AzureWebJobsStorage")] CreateReportRequested request,
                                                                 [Table("downloads", Connection = "AzureWebJobsStorage")] IAsyncCollector <UserReportRecord> download,
                                                                 [Blob("user-reports", Connection = "AzureWebJobsStorage")] CloudBlobContainer container,
                                                                 ILogger log)
        {
            if (await container.CreateIfNotExistsAsync())
            {
                var permissions = await container.GetPermissionsAsync();

                permissions.PublicAccess = BlobContainerPublicAccessType.Blob;
                await container.SetPermissionsAsync(permissions);
            }

            var blob = container.GetBlockBlobReference($"{request.Id}.pdf");

            var pdfFile = PDFGenerator.GeneratePDF(request);

            await blob.UploadFromByteArrayAsync(pdfFile, 0, pdfFile.Length);

            var url = blob.Uri.AbsoluteUri;

            await download.AddAsync(new UserReportRecord
            {
                PartitionKey = "UserReport",
                RowKey       = request.Id.ToString(),
                Name         = $"{request.FirstName} {request.LastName}",
                Url          = url
            });
        }
        public static void Run(
            [QueueTrigger("eventqueue", Connection = "AzureWebJobsStorage")] CreateReportRequested request,
            [Table("downloads", Connection = "AzureWebJobsStorage")] out UserReportRecord download,
            [Blob("user-reports", Connection = "AzureWebJobsStorage")] CloudBlobContainer container,
            TraceWriter log)
        {
            if (container.CreateIfNotExists())
            {
                var permissions = container.GetPermissions();
                permissions.PublicAccess = BlobContainerPublicAccessType.Blob;
                container.SetPermissions(permissions);
            }

            var blob = container.GetBlockBlobReference($"{request.Id}.pdf");

            var pdfFile = PDFGenerator.GeneratePDF(request);

            blob.UploadFromByteArray(pdfFile, 0, pdfFile.Length);

            var url = blob.Uri.AbsoluteUri;

            download = new UserReportRecord
            {
                PartitionKey = "UserReport",
                RowKey       = request.Id.ToString(),
                Name         = $"{request.FirstName} {request.LastName}",
                Url          = url
            };
        }
        public static byte[] GeneratePDF(CreateReportRequested request)
        {
            var content = $@"
                            First Name: {request.FirstName}<br/>
                            Middle Name: {request.MiddleName}<br/>
                            Last Name: {request.LastName}<br/>
                            Date of Birth: {request.DateOfBirth:dd/mm/yyyy}<br/>
                            Joined us on: {request.JoinedOn:dd/mm/yyyy}";

            var Renderer = new IronPdf.HtmlToPdf();
            var pdfDoc   = Renderer.RenderHtmlAsPdf(content);

            byte[] result = pdfDoc.BinaryData;

            return(result);
        }
Example #4
0
        public static byte[] GeneratePDF(CreateReportRequested request)
        {
            var content = $@"
                            First Name: {request.FirstName}<br/>
                            Middle Name: {request.MiddleName}<br/>
                            Last Name: {request.LastName}<br/>
                            Date of Birth: {request.DateOfBirth:dd/mm/yyyy}<br/>
                            Joined us on: {request.JoinedOn:dd/mm/yyyy}";

            byte[] result = null;

            using (var ms = new MemoryStream())
            {
                PdfDocument pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(content, PageSize.A4);
                pdf.Save(ms);
                result = ms.ToArray();
            }
            return(result);
        }
        public async Task <IActionResult> Post([FromForm] NewUserDetailReportViewModel model)
        {
            if (ModelState.IsValid)
            {
                var @event = new CreateReportRequested
                {
                    Id          = Guid.NewGuid(),
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    MiddleName  = model.MiddleName,
                    DateOfBirth = model.DateOfBirth,
                    JoinedOn    = model.JoinedOn
                };

                await _eventPublisher.Publish(@event);

                return(Redirect("/Downloads"));
            }

            return(View("Index"));
        }