Ejemplo n.º 1
0
        // GET: Adventures/Edit/5
        public ActionResult Edit(int?id, bool showDetail)
        {
            // [email protected]  [email protected] [email protected]
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Adventure adventure = db.Adventures.Find(id);

            if (adventure == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ContributorID = adventure.ContributorID;   // new SelectList(db.Contributors, "ContributorID", "FirstName", adventure.ContributorID);
            ViewBag.ShowDetail    = showDetail;

            AdventureCategoriesViewModel adventureCategoriesViewModel = new AdventureCategoriesViewModel();

            adventureCategoriesViewModel.Adventure             = adventure;
            adventureCategoriesViewModel.Categories            = GetAllCategories();
            adventureCategoriesViewModel.SelectedCategoriesIds = db.AdventureCategories.Where(a => a.AdventureID == adventure.AdventureID).Select(a => a.CategoryID).ToArray();

            //return View(adventure);
            return(View(adventureCategoriesViewModel));
        }
Ejemplo n.º 2
0
        //public ActionResult Edit(Adventure adventure, bool showDetail)
        public ActionResult Edit(AdventureCategoriesViewModel adventureCategoriesViewModel)
        {
            // [email protected]  [email protected] [email protected]
            ViewBag.ContributorID = adventureCategoriesViewModel.Adventure.ContributorID;
            if (ModelState.IsValid)
            {
                db.Entry(adventureCategoriesViewModel.Adventure).State = EntityState.Modified;
                db.SaveChanges();

                // If the selected categories are different from what's in the db, update the db
                var existingSelectedCategories = db.AdventureCategories.Where(a => a.AdventureID == adventureCategoriesViewModel.Adventure.AdventureID).Select(a => a.CategoryID).ToArray();
                if (adventureCategoriesViewModel.SelectedCategoriesIds != existingSelectedCategories)
                {
                    var listExistingSelectedCategories = existingSelectedCategories.ToList();
                    // if no categories are selected, delete all records from AdventureCategories;
                    // else check for categories to add & delete
                    if (adventureCategoriesViewModel.SelectedCategoriesIds == null)
                    {
                        // [email protected]  [email protected] [email protected]
                        db.Database.ExecuteSqlCommand($"DELETE FROM AdventureCategories WHERE AdventureID = {adventureCategoriesViewModel.Adventure.AdventureID};");
                    }
                    else
                    {
                        // Check for categories to add/insert
                        foreach (int thisCategoryId in adventureCategoriesViewModel.SelectedCategoriesIds)
                        {
                            if (!listExistingSelectedCategories.Contains(thisCategoryId))
                            {
                                db.Database.ExecuteSqlCommand($"INSERT INTO AdventureCategories VALUES ({adventureCategoriesViewModel.Adventure.AdventureID}, {thisCategoryId});");
                            }
                        }
                        // Check for categories to delete
                        foreach (int thisCategoryId in listExistingSelectedCategories)
                        {
                            if (!adventureCategoriesViewModel.SelectedCategoriesIds.Contains(thisCategoryId))
                            {
                                db.Database.ExecuteSqlCommand($"DELETE FROM AdventureCategories WHERE AdventureID = {adventureCategoriesViewModel.Adventure.AdventureID} AND CategoryID = {thisCategoryId};");
                            }
                        }
                    }
                }
                return(RedirectToAction("Details", new { id = adventureCategoriesViewModel.Adventure.AdventureID, showDetail = adventureCategoriesViewModel.ShowDetail }));
            }
            ViewBag.ShowDetail = adventureCategoriesViewModel.ShowDetail;
            return(View(adventureCategoriesViewModel.Adventure));
        }