public ActionResult DecisionNodeOrder(policyData vData, int id, int id2, int linkId, FormCollection collection) { DecisionNodeEntity match = new DecisionNodeEntity(id2); DecisionNodeCollection coll = new DecisionNodeCollection(); PredicateExpression pe = new PredicateExpression(DecisionNodeFields.Id != match.Id); pe.Add(DecisionNodeFields.ParentId == id); SortExpression se = null; if (collection["up"] != null) { // Find all categories with display index less than ours. pe.Add(DecisionNodeFields.Order <= match.Order); // Order by display index, highest first. se = new SortExpression(DecisionNodeFields.Order | SortOperator.Descending); } else { // Find all categories with display index greater than ours. pe.Add(DecisionNodeFields.Order >= match.Order); // Order by display index, lowest first. se = new SortExpression(DecisionNodeFields.Order | SortOperator.Ascending); } // Swap with closest one. if (coll.GetMulti(pe, 1, se) && coll.Count > 0) { int temp = coll[0].Order; coll[0].Order = match.Order; match.Order = temp; match.Save(); coll.SaveMulti(); } string action = collection["backTo"]; if (action == "EditRule") { vData.Condition = new DecisionNodeEntity(id); id = vData.Condition.Rule[0].Id; } return RedirectToAction(action, new { id = id, linkId = linkId }); }