Example #1
0
        public async Task <List <TripDto> > SearchFlight(SearchFlightDto searchFlight)
        {
            var search = new consultarVueloRequest(searchFlight.DepartingCity, searchFlight.ArrivingCity, searchFlight.DepartingDate, searchFlight.Cabin);

            try
            {
                var trip = await _flightService.consultarVueloAsync(search);

                return(GetTrips(trip.result));
            }
            catch (Exception)
            {
                throw new ProviderNotResponseException();
            }
        }
Example #2
0
        public async Task <List <TripDto> > Search(SearchFlightDto searchFlight, DomainModel.Dto.InformationProvider informationProvider)
        {
            //Obtiene la informaciĆ³n de metadata y la lleva al modelo de metadata
            var metadataCofig = await _repository.GetMetadata(informationProvider, IMetadataRestRepository.RequestType.search);

            if (metadataCofig.Body != null || metadataCofig.Body != "")
            {
                var metadataFieldTransport = Newtonsoft.Json.JsonConvert.DeserializeObject <Entity.Transport.SearchFlightDto>(metadataCofig.Body);
                //Convierte el objeto request en Json
                var body = Newtonsoft.Json.JsonConvert.SerializeObject(searchFlight, Newtonsoft.Json.Formatting.Indented);
                metadataCofig.Body = _fieldMapper.GetBodyMapped(metadataFieldTransport, body);
            }

            metadataCofig.Url = _fieldMapper.GetUrlMapped(searchFlight, metadataCofig.Url);
            var providerConsumer = new ProviderConsumerService(_consumer);
            var result           = await providerConsumer.Request(metadataCofig);

            if (!result.IsSuccessStatusCode)//RespondiĆ³ de manera
            {
                throw new ProviderNotResponseException();
            }

            var trips    = new List <TripDto>();
            var response = await result.Content.ReadAsStringAsync();


            var fly = _fieldMapper.GetObjetMapped <List <FlightDto> >(response, metadataCofig.Response);

            if (fly != null)
            {
                trips.Add(new TripDto {
                    Flights = fly
                });
            }

            return(trips);
        }
Example #3
0
        public async Task <ServiceResponse <DepartReturnFlightDto> > GetFilteredFlights(SearchFlightDto filter)
        {
            ServiceResponse <DepartReturnFlightDto> serviceResponse = new ServiceResponse <DepartReturnFlightDto>()
            {
                Data = new DepartReturnFlightDto()
            };

            try
            {
                List <Flight> dbFlights = await _context.Flights.Include(f => f.Seats).Include(f => f.Airline).ToListAsync();

                //kod odlaznih letova poredi se datum depart-a iz forme sa takeoffTime atributom svakog leta
                List <Flight> departingFlights = dbFlights.Where(x => x.Origin.ToLower().Equals(filter.Origin.ToLower()) &&
                                                                 x.Destination.ToLower().Equals(filter.Destination.ToLower()) &&
                                                                 x.SeatsLeft > (int.Parse(filter.NumberOfAdults) + int.Parse(filter.NumberOfChildren)) &&
                                                                 x.TakeoffTime.Date.Equals(filter.Depart.Date))
                                                 .ToList();

                serviceResponse.Data.DepartingFlights = departingFlights;

                //provera da li trazimo samo departing letove ili trazimo i departing i returning letove
                if (filter.TripType == TripType.roundtrip.ToString())    //trebaju nam i returning flights
                {
                    //kod povratnih letova poredi se datum return-a iz forme sa takeoffTime atributom svakog leta i obrcu se polaziste i odrediste
                    List <Flight> returningFlights = dbFlights.Where(x => x.Origin.ToLower().Equals(filter.Destination.ToLower()) &&
                                                                     x.Destination.ToLower().Equals(filter.Origin.ToLower()) &&
                                                                     x.SeatsLeft > (int.Parse(filter.NumberOfAdults) + int.Parse(filter.NumberOfChildren)) &&
                                                                     x.TakeoffTime.Date.Equals(filter.Return?.Date)).ToList();
                    serviceResponse.Data.ReturningFlights = returningFlights;
                }
            }
            catch (Exception ex)
            {
                serviceResponse.Success = false;
                serviceResponse.Message = ex.Message;
            }

            return(serviceResponse);
        }
 [HttpPost("GetFiltered")] //POST localhost/Flights/GetFiltered
 public async Task <IActionResult> GetFiltered(SearchFlightDto filter)
 {
     return(Ok(await _flightService.GetFilteredFlights(filter)));
 }