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);
        }
Exemple #3
0
        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());
            }
        }
Exemple #4
0
        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}");
            }
        }