// Main Configurator page where users can configure the car of their dreams. // Input: // - (int) id: Car Id from DBContext public ActionResult Build(int id = 0) { var car = _context.Cars.SingleOrDefault(c => c.Id == id); if (car == null) { return(HttpNotFound()); } var engines = _context.Engines.ToList(); var paints = _context.Paints.ToList(); var rims = _context.Rims.ToList(); var extras = _context.Extras.ToList(); var carConfiguration = new CarConfiguration { CarID = car.Id, }; var configViewModel = new CarConfigViewModel { Car = car, Engines = engines, Paints = paints, Rims = rims, Extras = extras, CarConfiguration = carConfiguration, }; return(View(configViewModel)); }
public IActionResult CarPage(int id) { Car result = db.Cars.Where(x => x.Id == id).FirstOrDefault(); /*Models.Car result = (from kek in db.Cars * where kek.Id == id * select kek).FirstOrDefault();*/ //db.Users.FirstOrDefault().LikedConfigs = db.Configurations.ToList(); //db.SaveChanges(); if (result == null) { return(View("NotFound")); } CarConfigViewModel cfgViewModel = new CarConfigViewModel { Car = result, Configs = db.Configurations.Where(x => x.CarId == result.Id) }; foreach (var conf in cfgViewModel.Configs) { string[] arr = conf.DetailsString.Split(","); List <Detail> det = new List <Detail>(); foreach (var element in arr) { det.Add(db.Details.Where(x => x.Id == Convert.ToInt32(element)).FirstOrDefault()); } conf.Details = det; } List <int> detailsNumbers = new List <int>(); cfgViewModel.Details = new List <Detail>(); foreach (var item in cfgViewModel.Configs) { string[] arr = item.DetailsString.Split(','); for (int i = 0; i < arr.Length; i++) { if (!detailsNumbers.Contains(Convert.ToInt32(arr[i]))) { detailsNumbers.Add(Convert.ToInt32(arr[i])); cfgViewModel.Details.Add(db.Details.Where(x => x.Id == Convert.ToInt32(arr[i])).FirstOrDefault()); } } } string[] pickedDet = db.Configurations.Where(x => x.Id == cfgViewModel.Car.CurrentConfigurationId).FirstOrDefault().DetailsString.Split(','); cfgViewModel.PickedDetails = new List <int>(); foreach (var item in pickedDet) { cfgViewModel.PickedDetails.Add(Convert.ToInt32(item)); } cfgViewModel.CurrentConfig = db.Configurations.Where(x => x.Id == cfgViewModel.Car.CurrentConfigurationId).FirstOrDefault(); return(View(cfgViewModel)); }