public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } string currentUserID = _userManager.GetUserId(User); var userSites = _context.Sites.Where(s => s.UserID == currentUserID); var pageToUpdate = await _context.Pages .Where(p => userSites.Any(s => s.ID == p.SiteID)) .Include(p => p.PageElements) .SingleOrDefaultAsync(page => page.ID == id); if (pageToUpdate == null) { return(NotFound()); } pageToUpdate.PageElements = pageToUpdate.PageElements.OrderBy(pe => pe.SortOrder).ToList(); var editPage = new EditPageElements { Page = pageToUpdate, PageElements = pageToUpdate.PageElements.Where(pe => pe.GroupID == null).ToList(), GroupPageElements = pageToUpdate.PageElements.Where(pe => pe.GroupID != null).ToList() }; return(View(editPage)); }
// public async Task<IActionResult> EditPage(int? id, Page page) public async Task <IActionResult> EditPage(int?id, EditPageElements editPageElements) { var page = editPageElements.Page; if (id == null) { return(NotFound()); } if (ModelState.IsValid) { try { var pageToUpdate = _context.Pages .Include(p => p.PageElements) .SingleOrDefault(p => p.ID == id); pageToUpdate.Link = page.Link; pageToUpdate.Title = page.Title; pageToUpdate.SortOrder = page.SortOrder; //only editing page direct elements, not grouped Elements var pageElementsToEdit = pageToUpdate.PageElements.Where(p => p.GroupID == null); // var editedPageElements = page.PageElements.Where(p => p.GroupID == null); _context.PageElements.RemoveRange(pageElementsToEdit); await _context.SaveChangesAsync(); if (editPageElements.PageElements != null) { for (int i = 0; i < editPageElements.PageElements.Count; i++) { pageToUpdate.PageElements.Add(editPageElements.PageElements[i]); } } _context.Update(pageToUpdate); var editPage = new EditPageElements { Page = pageToUpdate, PageElements = editPageElements.PageElements.Where(pe => pe.GroupID == null).ToList(), GroupPageElements = pageToUpdate.PageElements.Where(pe => pe.GroupID != null).ToList() }; await _context.SaveChangesAsync(); return(View(editPage)); } catch (DbUpdateException /* ex */) { //Log the error (uncomment ex variable name and write a log.) ModelState.AddModelError("", "Unable to save changes. " + "Try again, and if the problem persists, " + "see your system administrator."); } } return(RedirectToAction("Edit", new { id = id })); }