public async Task <bool> SendForProcessing(string cartId, System.DateTimeOffset PurchasedOn, CancellationToken cancellationToken) { PurchaseItineraryMessage purchaseItineraryMessage = new PurchaseItineraryMessage() { CartId = cartId, PurchasedOn = PurchasedOn }; List <EventGridEvent> events = new List <EventGridEvent>(); events.Add(new EventGridEvent() { Id = Guid.NewGuid().ToString(), EventType = "ContosoTravel.Web.Application.Messages.PurchaseItineraryMessage", Data = new PurchaseItineraryMessage() { CartId = cartId }, EventTime = DateTime.UtcNow, Subject = "PurchaseItinerary", DataVersion = "1.0" }); var client = await _eventGridClient; await client.PublishEventsAsync(TopicHostName, events, cancellationToken); return(true); }
public async Task <bool> SendForProcessing(string cartId, System.DateTimeOffset PurchasedOn, CancellationToken cancellationToken) { PurchaseItineraryMessage purchaseItineraryMessage = new PurchaseItineraryMessage() { CartId = cartId, PurchasedOn = PurchasedOn }; var client = _serviceBusClient.Value; await client.SendAsync(new Message(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(purchaseItineraryMessage)))); return(true); }
public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] PurchaseItineraryMessage req, ILogger log, CancellationToken cancellationToken, ExecutionContext context) { log.LogInformation($"Starting to finalize purchase of {req.CartId}"); log.LogDebug("Resolving the FulfillmentServices"); var container = Setup.InitCotosoWithOneTimeLock(_configuration["KeyVaultUrl"], context.FunctionAppDirectory, _thisAssembly); var fulfillmentService = container.Resolve <FulfillmentService>(); log.LogDebug("Calling Purchase method"); string recordLocator = await fulfillmentService.Purchase(req.CartId, req.PurchasedOn, cancellationToken); if (string.IsNullOrEmpty(recordLocator)) { log.LogError($"Finalization purchase of {req.CartId} failed"); return(new BadRequestResult()); } else { log.LogInformation($"Record Locator {recordLocator} complete for cart {req.CartId}"); return(new OkResult()); } }
public static async Task Run([ServiceBusTrigger(Constants.QUEUENAME, Connection = "ServiceBusConnection")] string message, ILogger log, CancellationToken cancellationToken, Microsoft.Azure.WebJobs.ExecutionContext context) { PurchaseItineraryMessage purchaseItineraryMessage = Newtonsoft.Json.JsonConvert.DeserializeObject <PurchaseItineraryMessage>(message); log.LogInformation($"Starting to finalize purchase of {purchaseItineraryMessage.CartId}"); log.LogDebug("Resolving the FulfillmentServices"); var container = Setup.InitCotosoWithOneTimeLock(_configuration["KeyVaultUrl"], context.FunctionAppDirectory, _thisAssembly); var fulfillmentService = container.Resolve <FulfillmentService>(); log.LogDebug("Calling Purchase method"); string recordLocator = await fulfillmentService.Purchase(purchaseItineraryMessage.CartId, purchaseItineraryMessage.PurchasedOn, cancellationToken); if (string.IsNullOrEmpty(recordLocator)) { log.LogError($"Finalization purchase of {purchaseItineraryMessage.CartId} failed"); } else { log.LogInformation($"Record Locator {recordLocator} complete for cart {purchaseItineraryMessage.CartId}"); } }