public async Task <IActionResult> Search([FromQuery] string fromCity, [FromQuery] string toCity, [FromQuery] string travelDate) { try { DateTime journeyDate; if (!DateTime.TryParseExact(travelDate, "MM-dd-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out journeyDate)) { return(BadRequest(travelDate)); } var trips = await _tripRepository.GetByTripDetailsAsync(fromCity, toCity, travelDate); if (trips == null || trips.Count() == 0) { return(NotFound()); } var tripResponse = new TripResponseModel { Trips = trips.Select(t => new TripResponseModel.Trip { TripReference = t.TripReference, TripStatus = t.Status.ToString(), FromCity = t.Details.FromCity, ToCity = t.Details.ToCity, DepartureTime = t.Details.DepartureTime, ArrivalTime = t.Details.ArrivalTime, VehicleDetails = new TripResponseModel.Vehicle { TrafficServiceProvider = t.Tsp, VehicleNumber = t.Vin }, Seats = t.Seats.Select(s => new TripResponseModel.Seat { SeatNumber = s.SeatNumber, AvailabilityStatus = s.Status.ToString(), Position = s.Position.ToString() }) }) }; return(Ok(tripResponse)); } catch (Exception ex) { _logger.LogError("{0}", ex); throw; } }
public async Task <IActionResult> GetTripDetails([FromQuery] string tripRef) { try { var trip = await _tripRepository.GetByTripReferenceAsync(tripRef); if (trip == null) { return(NotFound(tripRef)); } var tripResponse = new TripResponseModel { Trips = new List <TripResponseModel.Trip> { new TripResponseModel.Trip { TripReference = trip.TripReference, TripStatus = trip.Status.ToString(), FromCity = trip.Details.FromCity, ToCity = trip.Details.ToCity, DepartureTime = trip.Details.DepartureTime, ArrivalTime = trip.Details.ArrivalTime, VehicleDetails = new TripResponseModel.Vehicle { TrafficServiceProvider = trip.Tsp, VehicleNumber = trip.Vin }, Seats = trip.Seats.Select(s => new TripResponseModel.Seat { SeatNumber = s.SeatNumber, AvailabilityStatus = s.Status.ToString(), Position = s.Position.ToString() }) } } }; return(Ok(tripResponse)); } catch (Exception ex) { _logger.LogError("{0}", ex); throw; } }