Esempio n. 1
0
        public IEnumerable <CarViewModel> Get(CarSearchQueryViewModel queryViewModel)
        {
            var query = new CarSearchQuery()
            {
                FromEnginePower     = queryViewModel.FromEnginePower,
                FromLuggageCapacity = queryViewModel.FromLuggageCapacity,
                FromProduction      = queryViewModel.FromProduction,
                Gearbox             = queryViewModel.Gearbox,
                MakeId            = queryViewModel.MakeId,
                MaxSeatsCount     = queryViewModel.MaxSeatsCount,
                MinSeatsCount     = queryViewModel.MinSeatsCount,
                ModelId           = queryViewModel.ModelId,
                ToEnginePower     = queryViewModel.ToEnginePower,
                ToLuggageCapacity = queryViewModel.ToLuggageCapacity,
                ToProduction      = queryViewModel.ToProduction
            };

            return(warehouseService.GetCars(query)
                   .Select(model => new CarViewModel()
            {
                Id = model.Id,
                ModelId = model.ModelId,
                MakeId = model.MakeId,
                Description = model.Description,
                EnginePower = model.EnginePower,
                Gearbox = model.Gearbox,
                LuggageCapacity = model.LuggageCapacity,
                Photo = model.Photo,
                Production = model.Production,
                SeatsCount = model.SeatsCount
            }));
        }
Esempio n. 2
0
        public IEnumerable <Car> GetCars(CarSearchQuery searchQuery)
        {
            var query = new DBContract.CarSearchQuery()
            {
                FromEnginePower     = searchQuery.FromEnginePower,
                FromLuggageCapacity = searchQuery.FromLuggageCapacity,
                FromProduction      = searchQuery.FromProduction,
                Gearbox             = searchQuery.Gearbox,
                MakeId            = searchQuery.MakeId,
                MaxSeatsCount     = searchQuery.MaxSeatsCount,
                MinSeatsCount     = searchQuery.MinSeatsCount,
                ModelId           = searchQuery.ModelId,
                ToEnginePower     = searchQuery.ToEnginePower,
                ToLuggageCapacity = searchQuery.ToLuggageCapacity,
                ToProduction      = searchQuery.ToProduction
            };

            return(carRepository.GetCarsByQuery(query)
                   .Select(model => new Car()
            {
                Id = model.Id,
                ModelId = model.ModelId,
                MakeId = model.MakeId,
                Description = model.Description,
                EnginePower = model.EnginePower,
                Gearbox = model.Gearbox,
                LuggageCapacity = model.LuggageCapacity,
                Photo = model.Photo,
                Production = model.Production,
                SeatsCount = model.SeatsCount
            }));
        }
Esempio n. 3
0
        public QueryResult <CarModelWithDrivers> Where(CarSearchQuery searchQuery)
        {
            var result = new QueryResult <CarModelWithDrivers>(_carRep.All.Count());

            bool hasModel           = !string.IsNullOrWhiteSpace(searchQuery.Model),
                 hasColor           = !string.IsNullOrWhiteSpace(searchQuery.Color),
                 hasDriverName      = !string.IsNullOrWhiteSpace(searchQuery.DriverName),
                 hasGarageNumber    = !string.IsNullOrWhiteSpace(searchQuery.GarageNumber),
                 hasGovermentNumber = !string.IsNullOrWhiteSpace(searchQuery.GovermentNumber);

            var query = _carRep.Where(c => !searchQuery.YearFrom.HasValue || c.Year >= searchQuery.YearFrom,
                                      c => !searchQuery.YearTo.HasValue || c.Year <= searchQuery.YearTo,
                                      c => !searchQuery.Status.HasValue || c.Status == searchQuery.Status,
                                      c => !hasModel || c.Model.ToLower().Contains(searchQuery.Model.ToLower()),
                                      c => !hasGovermentNumber ||
                                      c.GovermentNumber.ToLower().Contains(searchQuery.GovermentNumber.ToLower()),
                                      c => !hasGarageNumber || c.GarageNumber.ToString().Contains(searchQuery.GarageNumber),
                                      c => !hasDriverName ||
                                      c.Drivers.Any(d => (d.FirstName + " " + d.LastName + " " + d.Patronymic).
                                                    ToLower().Contains(searchQuery.DriverName.ToLower())) ||
                                      c.Drivers.Any(d => (d.LastName + " " + d.FirstName).ToLower().
                                                    Contains(searchQuery.DriverName.ToLower())),
                                      c => !hasColor || c.Color.ToLower().Contains(searchQuery.Color.ToLower()));

            result.TotalFiltered = query.Count();

            query = query.OrderBy(searchQuery.OrderBy.ToString())
                    .Skip(searchQuery.Paging.Skip)
                    .Take(searchQuery.Paging.Length);

            result.Data   = query.ProjectTo <CarModelWithDrivers>().ToList();
            result.Paging = searchQuery.Paging;

            return(result);
        }
Esempio n. 4
0
        public IEnumerable <Car> GetCarsByQuery(CarSearchQuery query)
        {
            var sqlQuery = searchCarQuery;

            List <string> conditions = new List <string>
            {
                query.FromEnginePower != null ? $"[EnginePower] >= {query.FromEnginePower}" : string.Empty,
                query.ToEnginePower != null ? $"[EnginePower] <= {query.ToEnginePower}" : string.Empty,

                query.FromLuggageCapacity != null ? $"[LuggageCapacity] >= {query.FromLuggageCapacity}" : string.Empty,
                query.ToLuggageCapacity != null ? $"[LuggageCapacity] <= {query.ToLuggageCapacity}" : string.Empty,

                query.FromProduction != null ? $"[Production] >= {query.FromProduction}" : string.Empty,
                query.ToProduction != null ? $"[Production] <= {query.ToProduction}" : string.Empty,

                query.MinSeatsCount != null ? $"[SeatsCount] >= {query.MinSeatsCount}" : string.Empty,
                query.MaxSeatsCount != null ? $"[SeatsCount] <= {query.MaxSeatsCount}" : string.Empty,

                query.MakeId != null ? $"[MakeId] = '{query.MakeId}'" : string.Empty,

                query.ModelId != null ? $"[ModelId] = '{query.ModelId}'" : string.Empty,

                //query.Gearbox.Count() > 0 ? $"[Gearbox] IN ({String.Join(',', query.Gearbox.Select(x => x.ToString()))})" : string.Empty
            };

            conditions = conditions.Where(subquery => subquery != string.Empty).ToList();

            if (conditions.Count > 0)
            {
                sqlQuery += " WHERE " + String.Join(" AND ", conditions);
            }

            using (var connection = new SqlConnection(connectionString.CommonDatabase))
            {
                return(connection.Query <Car>(sqlQuery));
            }
        }