Black Rock Reporting Azure Function
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

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