public IQueryable <CarModel> GetCars(int carStoreId,
                                             [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string sessionKey)
        {
            var carsModels = this.PerformOperation <IQueryable <CarModel> >(() =>
            {
                UserValidator.ValidateSessionKey(sessionKey);

                using (var context = this.ContextFactory.Create())
                {
                    var carStore = context.Set <CarStore>().Find(carStoreId);
                    if (carStore == null)
                    {
                        throw new InvalidOperationException("Car store with provided ID does not exist!");
                    }

                    var carModels   = new List <CarModel>();
                    var carEntities = carStore.Cars;
                    foreach (var carEntity in carEntities)
                    {
                        carModels.Add(CarsMapper.ToModel(carEntity));
                    }

                    return(carModels.AsQueryable <CarModel>());
                }
            });

            return(carsModels);
        }
        public IQueryable <CarModel> GetMyRentedCars(
            [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string sessionKey)
        {
            var rentedCars = this.PerformOperation <IQueryable <CarModel> >(() =>
            {
                UserValidator.ValidateSessionKey(sessionKey);

                using (var context = this.ContextFactory.Create())
                {
                    var user = context.Set <User>().FirstOrDefault(u => u.SessionKey == sessionKey);
                    if (user == null)
                    {
                        throw new InvalidOperationException("Invalid username or password!");
                    }

                    var rentedCarModels   = new List <CarModel>();
                    var rentedCarEntities = context.Set <Car>().Where(c => c.Renter.DisplayName == user.DisplayName);
                    foreach (var carEntity in rentedCarEntities)
                    {
                        rentedCarModels.Add(CarsMapper.ToModel(carEntity));
                    }

                    return(rentedCarModels.AsQueryable <CarModel>());
                }
            });

            return(rentedCars);
        }
Exemple #3
0
        public FilterController()
        {
            _productService           = new ProductService();
            _carService               = new CarService();
            _specificationTypeService = new SpecificationTypeService();

            _productsMapper = new ProductsMapper();
            _carsMapper     = new CarsMapper();
        }
        public IQueryable <CarModel> GetAll()
        {
            var allCars = this.PerformOperation <IQueryable <CarModel> >(() =>
            {
                using (var context = this.ContextFactory.Create())
                {
                    var carModels   = new List <CarModel>();
                    var carEntities = context.Set <Car>().Include("Renter").OrderBy(c => c.Make).ThenBy(c => c.Model);
                    foreach (var carEntity in carEntities)
                    {
                        carModels.Add(CarsMapper.ToModel(carEntity));
                    }

                    return(carModels.AsQueryable <CarModel>());
                }
            });

            return(allCars);
        }
Exemple #5
0
 public CarController()
 {
     _carService          = new CarService();
     _carsMapper          = new CarsMapper();
     _specificationMapper = new SpecificationMapper();
 }