Пример #1
0
        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));
        }
Пример #2
0
        // 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 }));
        }