Esempio n. 1
0
        public async Task <KeyValuePair <string, string> > BookFlight([ActivityTrigger] BookFlightMessage content, ILogger log)
        {
            log.LogInformation($"Starting BookFlight Activity");
            var result = await _bookFlightService.BookFlights(content);

            return(new KeyValuePair <string, string>("flight", result));
        }
Esempio n. 2
0
        public async Task RunOrchestrator(
            [OrchestrationTrigger] DurableOrchestrationContext context)
        {
            var myMsb          = context.GetInput <string>();
            var messageContent = JsonConvert.DeserializeObject <BookCombinationMessage>(myMsb);

            var flightModel = new BookFlightMessage
            {
                Email           = messageContent.Email,
                CurrentCity     = messageContent.CurrentCityCode,
                DestinationCity = messageContent.DestinationCode,
                OutboundDate    = messageContent.OutboundDate,
                ReturnDate      = messageContent.ReturnDate
            };

            var hotelModel = new BookHotelMessage
            {
                Email           = messageContent.Email,
                ArrivalDate     = messageContent.OutboundDate,
                DepartureDate   = messageContent.ReturnDate,
                DestinationCity = messageContent.DestinationCity,
                GuestQty        = messageContent.GuestQty,
                RoomQty         = messageContent.RoomQty,
                TravelPurpose   = messageContent.TravelPurpose
            };

            string flightContent = null;
            string hotelContent  = null;

            var parallelTasks = new List <Task <KeyValuePair <string, string> > >();

            parallelTasks.Add(context.CallActivityAsync <KeyValuePair <string, string> >("BookFlightActivity", flightModel));
            parallelTasks.Add(context.CallActivityAsync <KeyValuePair <string, string> >("BookHotelActivity", hotelModel));

            await Task.WhenAll(parallelTasks);

            parallelTasks.ForEach(t =>
            {
                var result = t.Result;
                if (result.Key.Equals("flight"))
                {
                    flightContent = result.Value;
                }
                else if (result.Key.Equals("hotel"))
                {
                    hotelContent = result.Value;
                }
            });


            await _sendGridService.SendEmailWithInformation(messageContent.Email, flightContent, hotelContent);
        }
Esempio n. 3
0
        public async Task <string> BookFlights(BookFlightMessage message)
        {
            _client.DefaultRequestHeaders.Clear();
            _client.DefaultRequestHeaders.Add("X-RapidAPI-Key", _configuration.RapidApiKey);
            var country  = Constants.Constants.Country;
            var currency = Constants.Constants.Currency;
            var locale   = Constants.Constants.Locale;



            var getRoutes = await _client.GetAsync(
                $" https://skyscanner-skyscanner-flight-search-v1.p.rapidapi.com/apiservices/browseroutes/v1.0/" +
                $"{country}/{currency}/{locale}/{message.CurrentCity}/{message.DestinationCity}/{message.OutboundDate}/{message.ReturnDate}");

            return(await getRoutes.Content.ReadAsStringAsync());
        }