Black Rock Reporting Azure Function
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

ReportGeneratorFunction.cs 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using System.IO;
  3. using Microsoft.Azure.Functions.Worker;
  4. using Microsoft.Extensions.Logging;
  5. using Microsoft.Azure.WebJobs;
  6. using GemBox.Spreadsheet;
  7. using BlackRockReportFunction.Models;
  8. using Azure.Storage.Blobs;
  9. using BlackRockReportFunction.Bussines;
  10. using MailKit;
  11. using MimeKit;
  12. using MimeKit.Text;
  13. using MailKit.Net.Smtp;
  14. using MailKit.Security;
  15. using Newtonsoft.Json;
  16. namespace BlackRockReportFunction
  17. {
  18. public class ReportGeneratorFunction
  19. {
  20. private readonly ILogger _logger;
  21. public ReportGeneratorFunction(ILoggerFactory loggerFactory)
  22. {
  23. _logger = loggerFactory.CreateLogger<ReportGeneratorFunction>();
  24. }
  25. [Function("ReportGeneratorFunction")]
  26. [BlobOutput("report-container/BlackRock_Report.xslx", Connection = "AzureWebJobsStorage")]
  27. public async Task Run([QueueTrigger("queue1")] string myQueueItem)
  28. {
  29. var reportObject = JsonConvert.DeserializeObject<Root>(myQueueItem);
  30. var reportFile = ReportGenerator.GenerateReportContent(reportObject);
  31. string connection = Environment.GetEnvironmentVariable("AzureWebJobsStorage");
  32. string containerName = "report-container";
  33. _logger.LogInformation(connection);
  34. var blobClient = new BlobContainerClient(connection, containerName);
  35. var blob = blobClient.GetBlobClient($"BlackRockReport_{DateTime.Now.ToString("f")}.xlsx");
  36. Stream memoryStream = new MemoryStream();
  37. reportFile.Save(memoryStream, new XlsxSaveOptions
  38. {
  39. Type = XlsxType.Xlsx
  40. });
  41. memoryStream.Position = 0;
  42. await blob.UploadAsync(memoryStream);
  43. _logger.LogInformation("File uploaded successfully!");
  44. }
  45. }
  46. }