Ejemplo n.º 1
0
        private async Task <IEnumerable <Flight> > GetHotelsAsync(FlightsQuery searchQuery)
        {
            var flights = new List <Flight>();

            // Filling the flights results manually just for demo purposes
            for (int i = 1; i <= 5; i++)
            {
                var    random = new Random(i);
                Flight flight = new Flight()
                {
                    Name            = $"{searchQuery.Destination} Flight {i}",
                    Source          = searchQuery.FlyFrom,
                    Destination     = searchQuery.Destination,
                    Rating          = random.Next(1, 5),
                    NumberOfReviews = random.Next(0, 5000),
                    PriceStarting   = random.Next(80, 450),
                    Image           = $"https://placeholdit.imgix.net/~text?txtsize=35&txt=Flights+{i}&w=500&h=260"
                };

                flights.Add(flight);
            }

            flights.Sort((h1, h2) => h1.PriceStarting.CompareTo(h2.PriceStarting));

            return(flights);
        }
Ejemplo n.º 2
0
        /// TODO: Populate the credit cards from the JSON
        private async Task <(IEnumerable <Card> cards, float price)> GetCards(FlightsQuery searchQuery)
        {
            CardFinder cardFinder = new CardFinder();

            cardFinder.PopulateAirports();
            cardFinder.PopulateAirlines();
            cardFinder.PopulateCards();
            DateTime departureDate = searchQuery.DepartDate;
            DateTime returnDate    = searchQuery.ReturnDate;
            Location origin        = await cardFinder.GetPlace(searchQuery.Origin);

            Location destination = await cardFinder.GetPlace(searchQuery.Destination);

            float minPrice = await cardFinder.GetFlightPriceAsync(origin, destination, departureDate, returnDate);

            List <string> fromAirports = new List <string>();
            List <string> toAirports   = new List <string>();

            cardFinder.AddAirports(fromAirports, origin, searchQuery.Origin);
            cardFinder.AddAirports(toAirports, destination, searchQuery.Destination);
            List <Card> creditCards = await cardFinder.GetAwardCreditCards(fromAirports, toAirports);

            if (minPrice > 0)
            {
                creditCards.AddRange(cardFinder.GetCashBackCreditCards(minPrice));
            }

            // Where the recommendation engine comes into play.
            // Filter for the recommended credit cards.
            List <Card> recommendedCreditCards = GenerateRecommendations(creditCards);

            return(cards : recommendedCreditCards, price : minPrice);
        }
Ejemplo n.º 3
0
        private async Task <IEnumerable <Flight> > GetFlightsAsync(FlightsQuery searchQuery)
        {
            var flights = new List <Flight>();

            // Filling in the flight details manually for demo purposes...
            for (int i = 0; i < 5; i++)
            {
                var    random = new Random(i);
                Flight flight = new Flight()
                {
                    DepartureAirport  = $"{searchQuery.DepartureCity}",
                    DepartureDateTime = DateTime.Parse(searchQuery.DepartureDate),
                    ReturnAirport     = $"{searchQuery.ReturnCity}",
                    ReturnDateTime    = DateTime.Parse(searchQuery.ReturnDate),
                    Price             = random.Next(80, 450),
                    Image             = $"https://placeholdit.imgix.net/~text?txtsize=35&txt=Flight+{i + 1}&w=200&h=100"
                };

                flights.Add(flight);
            }

            flights.Sort((f1, f2) => f1.Price.CompareTo(f2.Price));

            return(flights);
        }
Ejemplo n.º 4
0
        public async Task Search(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result)
        {
            var message = await activity;
            await context.PostAsync($"Welcome to the Flights finder! We are analyzing your message: '{message.Text}'...");

            EntityRecommendation cityEntityRecommendation;
            var flightQuery = new FlightsQuery();

            if (result.TryFindEntity(EntityGeographyCity, out cityEntityRecommendation))
            {
                cityEntityRecommendation.Type = "Destination";
            }
            var FlightFormsDialog = new FormDialog <FlightsQuery>(flightQuery, this.BuildFlightForm, FormOptions.PromptInStart, result.Entities);

            context.Call(FlightFormsDialog, this.ResumeAfterFlightFormDialog);
        }
Ejemplo n.º 5
0
        public async Task SearchFlights(IDialogContext context, IAwaitable <IMessageActivity> activity, LuisResult result)
        {
            var message = await activity;

            var flightsQuery = new FlightsQuery();

            EntityRecommendation departureCityEntityRecommendation;

            if (result.TryFindEntity(EntityDepartureCity, out departureCityEntityRecommendation))
            {
                departureCityEntityRecommendation.Type = "DepartureCity";
            }

            EntityRecommendation arrivalCityEntityRecommendation;

            if (result.TryFindEntity(EntityArrivalCity, out arrivalCityEntityRecommendation))
            {
                arrivalCityEntityRecommendation.Type = "ReturnCity";
            }

            EntityRecommendation departureDateEntityRecommendation;

            if (result.TryFindEntity(EntityDepartureDate, out departureDateEntityRecommendation))
            {
                departureDateEntityRecommendation.Type = "DepartureDate";
            }

            EntityRecommendation returnDateEntityRecommendation;

            if (result.TryFindEntity(EntityReturnDate, out returnDateEntityRecommendation))
            {
                returnDateEntityRecommendation.Type = "ReturnDate";
            }

            var searchFlightsFormDialog = new FormDialog <FlightsQuery>(flightsQuery, this.BuildSearchFlightsForm, FormOptions.PromptInStart, result.Entities);

            context.Call(searchFlightsFormDialog, this.ResumeAfterSearchFlightsFormDialog);
        }
Ejemplo n.º 6
0
        public async Task StartAsync(IDialogContext context)
        {
            this.flightsQuery = new FlightsQuery();

            PromptDialog.Text(context, this.AfterPromptDepartureCity, "Where are you flying from?", "I'm sorry, I don't understand. Please try again.", 3);
        }