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.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. //Console.WriteLine("Run function debugging");
  30. //var reportObject = JsonConvert.DeserializeObject<ClockifyReport>(myQueueItem);
  31. var reportObject = JsonConvert.DeserializeObject<Root>(myQueueItem);
  32. var reportFile = ReportGenerator.GenerateReportContent(reportObject);
  33. string connection = Environment.GetEnvironmentVariable("AzureWebJobsStorage");
  34. string containerName = "report-container";
  35. _logger.LogInformation(connection);
  36. var blobClient = new BlobContainerClient(connection, containerName);
  37. var blob = blobClient.GetBlobClient($"BlackRockReport_{DateTime.Now.ToString("f")}.xlsx");
  38. Stream memoryStream = new MemoryStream();
  39. reportFile.Save(memoryStream, new XlsxSaveOptions
  40. {
  41. Type = XlsxType.Xlsx
  42. });
  43. memoryStream.Position = 0;
  44. await blob.UploadAsync(memoryStream);
  45. _logger.LogInformation("File uploaded successfully!");
  46. }
  47. }
  48. }