Black Rock Reporting Azure Function
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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. }