using System; using System.IO; using Microsoft.Azure.Functions.Worker; using Microsoft.Extensions.Logging; using Microsoft.Azure.WebJobs; using GemBox.Spreadsheet; using BlackRockReportFunction.Models; using BlackRockReportFunction.Helpers; using Azure.Storage.Blobs; using BlackRockReportFunction.Bussines; namespace BlackRockReportFunction { public class ReportGeneratorFunction { private readonly ILogger _logger; public ReportGeneratorFunction(ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger(); } [Function("ReportGeneratorFunction")] [BlobOutput("report-container/BlackRock_Report.xslx", Connection = "AzureWebJobsStorage")] public async Task Run([QueueTrigger("queue1")] string myQueueItem) { _logger.LogInformation($"C# Queue trigger function processed: {myQueueItem}, gemboxKey: {"E0YU - JKLB - WFCE - N52P"}"); var reportFile = await ReportGenerator.GenerateReportContent(); string connection = Environment.GetEnvironmentVariable("AzureWebJobsStorage"); string containerName = "report-container"; _logger.LogInformation(connection); var blobClient = new BlobContainerClient(connection, containerName); var blob = blobClient.GetBlobClient($"BlackRockReport_{DateTime.Now.ToString("f")}.xlsx"); Stream memoryStream = new MemoryStream(); reportFile.Save(memoryStream, new XlsxSaveOptions { Type = XlsxType.Xlsx }); memoryStream.Position = 0; await blob.UploadAsync(memoryStream); _logger.LogInformation("File uploaded successfully!"); } } }