コード例 #1
0
        public async Task <ItemsPage <Flight> > SearchFlightsAsync(FlightFilter filter)
        {
            FlightFilterEntity filterDal = _mapper.Map <FlightFilterEntity>(filter);

            if (filter.SearchFlightsBack)
            {
                filterDal.PageLimit = (int)Math.Floor(Convert.ToDecimal(filter.PageLimit / 2));
            }

            ItemsPageEntity <FlightEntity> flightsDal =
                await _flightRepository.SearchFlightsAsync(filterDal);

            if (filter.SearchFlightsBack)
            {
                int?fromCityIdBuff = filterDal.FromCityId;
                filterDal.FromCityId = filterDal.ToCityId;
                filterDal.ToCityId   = fromCityIdBuff;

                int?fromAirportIdBuff = filterDal.FromAirportId;
                filterDal.FromAirportId = filterDal.ToAirportId;
                filterDal.ToAirportId   = fromAirportIdBuff;

                filterDal.DepartureDate = filter.DepartureBackDate;
                filterDal.ArrivalDate   = filter.ArrivalBackDate;

                ItemsPageEntity <FlightEntity> flightsBackDal =
                    await _flightRepository.SearchFlightsAsync(filterDal);

                flightsDal.Content = flightsDal.Content.Concat(flightsBackDal.Content).ToList();
            }

            return(_mapper.Map <ItemsPage <Flight> >(flightsDal));
        }
コード例 #2
0
        public async Task <ItemsPageEntity <FlightEntity> > SearchFlightsAsync(FlightFilterEntity filter)
        {
            using SqlConnection db = new SqlConnection(_dalSettings.ConnectionString);

            IEnumerable <PaginationFlightEntity> queryResult = await db.QueryAsync <PaginationFlightEntity>(
                "SearchFlights",
                new
            {
                FromAirportId = filter.FromAirportId,
                ToAirportId   = filter.ToAirportId,
                FromCityId    = filter.FromCityId,
                ToCityId      = filter.ToCityId,
                DepartureDate = filter.DepartureDate?.Date,
                ArrivalDate   = filter.ArrivalDate?.Date,
                TicketCount   = filter.TicketCount,
                FinalBookType = BookType.Payed,
                BookExpirationTimeInSeconds        = _bookingSettings.ExpirationTime.TotalSeconds,
                TimeUntilBookingAvailableInSeconds = _bookingSettings.TimeUntilBookingAvailable.TotalSeconds,
                CurrentPage = filter.CurrentPage,
                PageLimit   = filter.PageLimit
            },
                commandType : CommandType.StoredProcedure);

            if (!queryResult.Any())
            {
                return(new ItemsPageEntity <FlightEntity>(
                           new List <FlightEntity>(),
                           0
                           ));
            }

            int totalCount = queryResult.First().TotalCount;

            List <FlightEntity> flights = queryResult.Select(_mapper.Map <FlightEntity>).ToList();

            return(new ItemsPageEntity <FlightEntity>(
                       flights,
                       totalCount
                       ));
        }
コード例 #3
0
 public Task <ItemsPageEntity <FlightEntity> > SearchFlightsAsync(FlightFilterEntity filter)
 {
     throw new NotImplementedException();
 }