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))));
        }
Beispiel #3
0
 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)));
        }