private IQueryable <Vehicle> BuildSearchQuery(IQueryable <Vehicle> query, SearchVehiclesJsonModel search) { var queryBuilder = new SearchVehiclesQueryBuilder(search); query = queryBuilder.FilterTown(query); query = queryBuilder.FilterMake(query); query = queryBuilder.FilterModel(query); query = queryBuilder.FilterColor(query); query = queryBuilder.FilterType(query); query = queryBuilder.FilterFuelType(query); query = queryBuilder.FilterGearboxType(query); query = queryBuilder.FilterAirbags(query); query = queryBuilder.FilterABS(query); query = queryBuilder.FilterESP(query); query = queryBuilder.FilterCentralLocking(query); query = queryBuilder.FilterAirConditioning(query); query = queryBuilder.FilterAutoPilot(query); query = queryBuilder.FilterFromCubicCapacity(query); query = queryBuilder.FilterToCubicCapacity(query); query = queryBuilder.FilterFromHorsePower(query); query = queryBuilder.FilterToHorsePower(query); query = queryBuilder.FilterFromPrice(query); query = queryBuilder.FilterToPrice(query); query = queryBuilder.FilterFromProductionDate(query); query = queryBuilder.FilterToProductionDate(query); return(query); }
public IEnumerable <VehicleJsonModel> GetVehicles(int page, int size, string userId, SearchVehiclesJsonModel search = null) { var query = DbContext.Vehicles .Include(v => v.User) .Include(v => v.Images) .Include(v => v.Make) .ThenInclude(m => m.Models) .Include(v => v.Color) .Include(v => v.Type) .Include(v => v.FuelType) .Include(v => v.GearboxType) .AsNoTracking(); if (!string.IsNullOrEmpty(userId)) { query = query.Where(u => u.UserId == userId); } if (search != null) { query = BuildSearchQuery(query, search); } return(query.Skip(page * size) .Take(size) .OrderByDescending(u => u.DateCreated) .Select(v => Map(v, MapRelatedEntities(v)))); }
public SearchVehiclesQueryBuilder(SearchVehiclesJsonModel search) { _search = search; }
public IActionResult SearchVehicles(SearchVehiclesJsonModel search) { var vehicles = _vehicleService.GetVehicles(search.Page, search.Size, null, search); return(Json(new ResponseJsonModel(true, vehicles))); }