static List <BillingItem> GetBillingItemsFromTable(CloudTable billingItems, InvoiceGenerationRequest request) { TableQuery <BillingItem> query = new TableQuery <BillingItem>() .Where( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, $"{request.CustomerCode}-{request.Year}-{request.Month}") ); var querySegment = billingItems.ExecuteQuerySegmentedAsync(query, null); var items = new List <BillingItem>(); foreach (BillingItem item in querySegment.Result) { items.Add(item); } return(items); }
public static void Run( [BlobTrigger("active-lists/{name}", Connection = "AzureWebJobsStorage")] Stream myBlob, string name, [Table("billingItems")] ICollector <BillingItem> billingItems, [Queue("invoice-generation-request")] out InvoiceGenerationRequest queueRequest, ILogger log) { log.LogInformation($"[GenerateBillingItemsFunc] Blob Trigger. Function processed blob: {name} Bytes"); var activeList = ActiveListParser.Parse(name, myBlob); var generator = new BillingItemGenerator(); var priceList = GetPriceList(activeList.CustomerCode); foreach (var bi in generator.Generate(activeList, priceList)) { billingItems.Add(bi); } queueRequest = InvoiceGenerationRequest.ForActiveList(activeList); }
public static InvoiceGenerationResponse GenerateInvoiceRequest(InvoiceGenerationRequest request) { var apiUrl = _configuration.FelApiUrl; var payload = JsonConvert.SerializeObject(request); var content = new StringContent(payload, Encoding.UTF8); content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); var response = _client.PostAsync(apiUrl, content).Result; var responsePayload = response.Content .ReadAsStringAsync() .Result; if (response.IsSuccessStatusCode) { return(BuildSuccessResponse(responsePayload)); } return(BuildErrorResponse(responsePayload)); }
public static void Run( [QueueTrigger("invoice-generation-request")] InvoiceGenerationRequest request, [Table("billingItems")] CloudTable billingItems, [CosmosDB("crm", "invoices", ConnectionStringSetting = "cosmosDb")] out dynamic generatedInvoice, [Queue("invoice-print-request")] out InvoicePrintRequest printRequest, [Queue("invoice-notification-request")] out InvoiceNotificationRequest notificationRequest, ILogger log) { log.LogInformation($"[GenerateInvoiceFunc] Queue trigger. Function processed: {request.CustomerCode} {request.Year} {request.Month}"); var generator = new InvoiceGenerator(); var items = GetBillingItemsFromTable(billingItems, request); var invoice = generator.Generate(request, items); generatedInvoice = invoice; printRequest = new InvoicePrintRequest { InvoiceToPrint = invoice }; notificationRequest = new InvoiceNotificationRequest { InvoiceForNotification = invoice }; }