コード例 #1
0
        public IHttpActionResult GetFiltered(FlightSearchDto apiObject)
        {
            List <Flight> flights = new List <Flight>();

            apiObject.FixDates();

            if (apiObject.NoVipBool && !apiObject.VipBool)
            {
                flights = getNoVipFlights(apiObject);
            }
            else if (!apiObject.NoVipBool && apiObject.VipBool)
            {
                flights = getVipFlights(apiObject);
            }
            else
            {
                flights = getBothVipFlights(apiObject);
            }

            var flightsDto = flights.Select(Mapper.Map <Flight, FlightDto>).ToList();

            flightsDto.ForEach(dto => dto.ConvertDate());

            return(Ok(flightsDto));
        }
コード例 #2
0
 private List <Flight> getBothVipFlights(FlightSearchDto apiObject)
 {
     return(flightRepository.GetOnScheduleFlights()
            .Where(
                f => f.BasePrice >= apiObject.MinPrice &&
                f.BasePrice <= apiObject.MaxPrice &&
                f.Date <= apiObject.DateTo &&
                f.Date >= apiObject.DateFrom &&
                f.FlightPath.Destination.Name.Contains(apiObject.DestinationPlanet) &&
                f.FlightPath.Departure.Name.Contains(apiObject.DestinationPlanet)).ToList());
 }
コード例 #3
0
        public async Task <FlightSearch> GetFlights(FlightSearchDto flightSearch)
        {
            var url        = "v1.2/flights/low-fare-search";
            var parameters = new[]
            {
                new Parameter
                {
                    Name  = "apikey",
                    Type  = ParameterType.QueryString,
                    Value = Environment.GetEnvironmentVariable("apikey")
                },
                new Parameter
                {
                    Name  = "origin",
                    Type  = ParameterType.QueryString,
                    Value = flightSearch.Origin
                },
                new Parameter
                {
                    Name  = "destination",
                    Type  = ParameterType.QueryString,
                    Value = flightSearch.Destination
                },
                new Parameter
                {
                    Name  = "departure_date",
                    Type  = ParameterType.QueryString,
                    Value = flightSearch.DepartureDate.ToString("yyyy-MM-dd")
                },
                new Parameter
                {
                    Name  = "return_date",
                    Type  = ParameterType.QueryString,
                    Value = flightSearch.ReturnDate.ToString("yyyy-MM-dd")
                },
                new Parameter
                {
                    Name  = "adults",
                    Type  = ParameterType.QueryString,
                    Value = flightSearch.NumberOfPassengers
                },
                new Parameter
                {
                    Name  = "currency",
                    Type  = ParameterType.QueryString,
                    Value = flightSearch.Currency
                }
            };

            return(await GetApiResponseAsync <FlightSearch>(url, parameters));
        }
コード例 #4
0
        public async Task <IActionResult> Get([FromQuery] FlightSearchDto flightSearch)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new
                {
                    message = "Invalid or missing input parameters."
                }));
            }

            FlightSearch serviceResult;

            try
            {
                serviceResult = await service.GetFlights(flightSearch);
            }
            catch (ApiException ex)
            {
                return(StatusCode((int)ex.StatusCode,
                                  new
                {
                    message = ex.Message
                }));
            }
            catch (Exception ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError,
                                  new
                {
                    message = ex.Message
                }));
            }

            var result = serviceResult.ExportToSearchResultDtos();

            return(Ok(result));
        }