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); }
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); }