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)); }
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); }
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()); }