// GET: Phone/Create
        public ActionResult Create()
        {
            var vm = new CreatePhoneVM
            {
                Phone      = new Phone(),
                Brands     = db.Brands.ToList(),
                PhoneTypes = db.PhoneTypes.ToList()
            };

            return(View(vm));
        }
        public ActionResult Edit(int id)
        {
            var phone = db.Phones.FirstOrDefault(p => p.Id == id);

            if (phone == null)
            {
                return(HttpNotFound());
            }

            var vm = new CreatePhoneVM
            {
                Phone      = phone,
                Brands     = db.Brands.ToList(),
                PhoneTypes = db.PhoneTypes.ToList()
            };

            return(View("Create", vm));
        }
        public ActionResult Save(Phone phone)
        {
            var errors = ModelState.Values.SelectMany(v => v.Errors);

            // check if the form is valid - Sever side validation
            if (!ModelState.IsValid)
            {
                // return same form to user
                var vm = new CreatePhoneVM
                {
                    Phone      = phone,
                    Brands     = db.Brands.ToList(),
                    PhoneTypes = db.PhoneTypes.ToList()
                };

                return(View("Create", vm));
            }

            if (phone.Id == 0)
            {
                db.Phones.Add(phone);
            }
            else
            {
                var phoneInDB = db.Phones.Single(p => p.Id == phone.Id);

                //TryUpdateModel(phoneInDB);

                phoneInDB.PhoneName    = phone.PhoneName;
                phoneInDB.DateReleased = phone.DateReleased;
                phoneInDB.ScreenSize   = phone.ScreenSize;
                phoneInDB.ImageUrl     = phone.ImageUrl;
                phoneInDB.BrandId      = phone.BrandId;
                phoneInDB.PhoneTypeId  = phone.PhoneTypeId;
            }

            db.SaveChanges();

            return(RedirectToAction("Index"));
        }