Esempio n. 1
0
        public JsonResult ChangeNodePosition(int currentNode, int?parentNode, int position)
        {
            using (BatiFrenDBEntities db = new BatiFrenDBEntities())
            {
                var location         = db.Menus.First(x => x.MenuID == currentNode);
                var newSiblingsBelow = db.Menus.Where(l => l.ParentID == parentNode && l.OrderNumber >= position);
                foreach (var sibling in newSiblingsBelow)
                {
                    sibling.OrderNumber = sibling.OrderNumber + 1;
                }

                var oldSiblingsBelow = db.Menus.Where(l => l.ParentID == parentNode && l.OrderNumber > location.OrderNumber);
                foreach (var sibling in oldSiblingsBelow)
                {
                    sibling.OrderNumber = sibling.OrderNumber - 1;
                }

                location.ParentID    = parentNode;
                location.OrderNumber = position;
                db.SaveChanges();
            }
            return(this.Json(true));
        }