// 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));
        }
Example #2
0
        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));
        }