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