Exemple #1
0
        public async Task <KeyValuePair <string, string> > BookHotel([ActivityTrigger] BookHotelMessage content, ILogger log)
        {
            log.LogInformation($"Starting BookHotel Activity");
            var result = await _bookHotelService.BookHotels(content);

            return(new KeyValuePair <string, string>("hotel", result));
        }
Exemple #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);
        }
Exemple #3
0
        public async Task <string> BookHotels(BookHotelMessage message)
        {
            _client.DefaultRequestHeaders.Clear();
            _client.DefaultRequestHeaders.Add("X-RapidAPI-Key", _configuration.RapidApiKey);
            var currency = Constants.Constants.Currency;

            var getPlaces = await _client.GetAsync(
                $"https://apidojo-booking-v1.p.rapidapi.com/locations/auto-complete?text={message.DestinationCity}");

            var placeResult = await getPlaces.Content.ReadAsStringAsync();

            var placesData = JsonConvert.DeserializeObject <HotelPlaceResult[]>(placeResult);

            var getHotels = await _client.GetAsync(
                $"https://apidojo-booking-v1.p.rapidapi.com/properties/list?search_type=city&offset=0&dest_ids={placesData[0].DestId}&" +
                $"guest_qty={message.GuestQty}&arrival_date={message.ArrivalDate}&departure_date={message.DepartureDate}" +
                $"&room_qty={message.RoomQty}" +
                $"&price_filter_currencycode={currency}&travel_purpose={message.TravelPurpose}");

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