public IActionResult Search(CarSelectInputModel inputModel) { if (!this.ModelState.IsValid) { return(this.View(inputModel)); } try { var viewModel = this.carAddsService.GetAddsAccordingToCriteria(inputModel); return(this.View(Constants.ViewAddsView, viewModel)); } catch (ArgumentException) { var errorModel = this.carAddsService.GetErrorViewModel(Constants.CarAddInputErrorMessage); return(this.View(Constants.ErrorView, errorModel)); } }
public void GetAddsAccordingToCriteriaWorksCorrectly() { var options = new DbContextOptionsBuilder <DealershipDbContext>() .UseInMemoryDatabase(databaseName: "Get_Adds_By_Criteria") .Options; var db = new DealershipDbContext(options); var service = new CarAddsService(db); var inputModel = this.GetCarAddInputModel(); var engineType = service.GetCarEngineType(inputModel.CarEngineType); var transmission = service.GetCarTransmissionType(inputModel.CarTransmission); var category = service.GetCarCategory(inputModel.CarCategory); var extras = service.CreateCarExtras(inputModel.CarExtras); var car = service.CreateCar(inputModel, engineType, transmission, category, extras); var carAdd = service.CreateCarAdd(inputModel, car.Id, "1"); var carSelectModel = new CarSelectInputModel { Category = "Saloon", EndPrice = decimal.MaxValue, EndYear = 2019, EngineType = "Gasoline / LPG", HorsePower = 130, Location = "Nqkude", Make = "Opel", Model = "Vectra", StartingPrice = 4000m, StartingYear = 2000, Transmission = "Manual" }; var getCars = service.GetAddsAccordingToCriteria(carSelectModel); Assert.True(getCars.Count() == 1); }
public List <ViewCarAddsViewModel> GetAddsAccordingToCriteria(CarSelectInputModel inputModel) { if (inputModel.StartingPrice < PriceMinValue) { inputModel.StartingPrice = PriceMinValue; } if (inputModel.StartingYear < Constants.YearMinValue) { inputModel.StartingYear = Constants.YearMinValue; } if (inputModel.EndYear == 0) { inputModel.EndYear = DateTime.Now.Year; } if (inputModel.EndPrice == PriceMinValue) { inputModel.EndPrice = PriceMaxValue; } if (string.IsNullOrEmpty(inputModel.Location)) { return(this.db.CarAdds .Where(ca => ca.Car.Make == inputModel.Make && ca.Car.Model == inputModel.Model && ca.Car.Price >= inputModel.StartingPrice && ca.Car.Price <= inputModel.EndPrice && ca.Car.YearOfProduction >= inputModel.StartingYear && ca.Car.YearOfProduction <= inputModel.EndYear && ca.Car.HorsePower == inputModel.HorsePower && ca.Car.Transmission == this.GetCarTransmissionType(inputModel.Transmission) && ca.Car.EngineType == this.GetCarEngineType(inputModel.EngineType) && ca.Car.Category == this.GetCarCategory(inputModel.Category) && ca.Car.IsSold == false) .Select(ca => new ViewCarAddsViewModel { Id = ca.Id, Title = ca.Title, PictureUrl = this.db.CarPictures.FirstOrDefault(p => p.CarAddId == ca.Id).Url, AdditionalInfo = ca.AdditionalInfo }) .ToList()); } else { return(this.db.CarAdds .Where(ca => ca.Car.Make == inputModel.Make && ca.Car.Model == inputModel.Model && ca.Car.Price >= inputModel.StartingPrice && ca.Car.Price <= inputModel.EndPrice && ca.Car.YearOfProduction >= inputModel.StartingYear && ca.Car.YearOfProduction <= inputModel.EndYear && ca.Car.HorsePower == inputModel.HorsePower && ca.Car.Transmission == this.GetCarTransmissionType(inputModel.Transmission) && ca.Car.EngineType == this.GetCarEngineType(inputModel.EngineType) && ca.Car.Category == this.GetCarCategory(inputModel.Category) && ca.Car.Location == inputModel.Location && ca.Car.IsSold == false) .Select(ca => new ViewCarAddsViewModel { Id = ca.Id, Title = ca.Title, PictureUrl = this.db.CarPictures.FirstOrDefault(p => p.CarAddId == ca.Id).Url, AdditionalInfo = ca.AdditionalInfo }) .ToList()); } }