public async Task <IActionResult> GetTrips([FromQuery] TripPaginationParams tripPaginationParams) { var trips = await database.SchoolRepository.GetTrips(tripPaginationParams); var tripsToReturn = mapper.Map <ICollection <TripDetailsDto> >(trips); return(Ok(tripsToReturn)); }
public async Task <IEnumerable <Trip> > GetTrips(TripPaginationParams tripPaginationParams) { var trips = await GetWhere <Trip>(t => t.StartDate > tripPaginationParams.StartDate && !t.School.Owner.IsBlocked); trips = trips.OrderBy(t => t.StartDate); if (tripPaginationParams.FinishDate != null) { trips = trips.Where(t => (t.FinishDate != null && t.FinishDate >= tripPaginationParams.FinishDate) || (t.FinishDate == null)); } if (!string.IsNullOrEmpty(tripPaginationParams.FromCity)) { trips = trips.Where(t => t.FromCity.ToLower().Contains(tripPaginationParams.FromCity.ToLower())); } if (!string.IsNullOrEmpty(tripPaginationParams.ToCountry)) { trips = trips.Where(t => t.ToCountry.ToLower().Contains(tripPaginationParams.ToCountry.ToLower())); } if (!string.IsNullOrEmpty(tripPaginationParams.OrderBy)) { switch (tripPaginationParams.OrderBy) { case "StartDateAscending": break; case "StartDateDescending": trips = trips.OrderByDescending(t => t.StartDate); break; case "PriceAscending": trips = trips.OrderBy(t => t.Price); break; case "PriceDescending": trips = trips.OrderByDescending(t => t.Price); break; default: break; } } return(trips); }