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