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