public async Task <ActionResult <IEnumerable <FETrip> > > GetAll([FromQuery] GetAllTripsRequest request) { try { return(await tripsRepository.GetAll(request)); } catch (Exception e) { return(StatusCode(500, e)); } }
public async Task <List <FETrip> > GetAll(GetAllTripsRequest request) { var allTrips = appDbContext.Trips.Include(x => x.Passengers).Include(u => u.User); var allUsers = await appDbContext.Users.ToListAsync(); var allPassengers = await appDbContext.Passengers.ToListAsync(); var tripsListQuery = allTrips.Select(item => new FETrip { ID = item.TripId, DriverID = item.DriverId, Driver = item.User.FullName, Origin = item.Origin, Destination = item.Destination, LeavingDate = item.LeavingDate, ReturnDate = item.ReturnDate, MaxSeats = item.MaxSeats, CarPlate = item.CarPlate, CarType = item.CarType, Status = item.Status, Comments = item.Comments, PhoneNumber = item.User.PhoneNumber, SlackId = item.User.SlackId, Passengers = preparePassengers(allPassengers.Where(passenger => passenger.TripId == item.TripId).ToList(), allUsers) }); if (!string.IsNullOrEmpty(request.Origin)) { tripsListQuery = tripsListQuery.Where(trip => trip.Origin == request.Origin); } if (!string.IsNullOrEmpty(request.Destination)) { tripsListQuery = tripsListQuery.Where(trip => trip.Destination == request.Destination); } if (request.Date.HasValue) { tripsListQuery = tripsListQuery.Where(trip => trip.LeavingDate.Equals(request.Date)); } if (request.DriverID.HasValue) { tripsListQuery = tripsListQuery.Where(trip => trip.DriverID == request.DriverID); } if (!string.IsNullOrEmpty(request.Status)) { tripsListQuery = tripsListQuery.Where(trip => trip.Status == request.Status); } if (!string.IsNullOrEmpty(request.CarType)) { tripsListQuery = tripsListQuery.Where(trip => trip.CarType == request.CarType); } return(await tripsListQuery.ToListAsync()); }