public ActionResult ChangeOrderedProduct(int id) { ChangeOrderViewModel changeOrderViewModel = new ChangeOrderViewModel { OrderedProduct = _orderedProductRepository.GetOrderedProductWithId(id) }; return(View(changeOrderViewModel)); }
public async Task <IActionResult> ChangeOrder([FromBody] ChangeOrderViewModel p) { UserStoryEntity story = await _context.UserStories.SingleAsync(m => m.Id == p.ItemID); if (story == null) { return(HttpNotFound()); } //跨列表 if (p.NewListID != p.OldListID && p.NewListID != "" && p.OldListID != "") { story.SortCode = p.NewIndex; story.ListID = p.NewListID; //分割位置下面的向上移动 //处理新列表。下移动新列表的分割条目后面的项目 var downItems = _context.UserStories.Where(t => t.SortCode >= p.NewIndex && t.ListID == p.NewListID).OrderBy(t => t.SortCode).ToList(); for (int i = 0; i < downItems.Count; i++) { var item = downItems[i]; item.SortCode = i + 1 + p.NewIndex; } //处理源列表移出位置上移 var oldListItems = _context.UserStories.Where(t => t.SortCode > p.OldIndex && t.ListID == p.OldListID).OrderBy(t => t.SortCode).ToList(); for (int i = 0; i < oldListItems.Count; i++) { var item = oldListItems[i]; item.SortCode = p.OldIndex + i; } } else { //同列表 if (p.NewIndex > p.OldIndex) { //向下移动 //找到在旧列表中 分割的位置上边的内容 var upItems = _context.UserStories.Where(t => t.SortCode <= p.NewIndex && t.SortCode > p.OldIndex && t.ListID == p.OldListID && t.SortCode != p.OldIndex).OrderBy(t => t.SortCode).ToList(); story.SortCode = p.NewIndex; for (int i = 0; i < upItems.Count; i++) { var item = upItems[i]; item.SortCode = i + p.OldIndex; } } else { //向上移动 //找到在旧列表中 分割的位置下边的内容 var downItems = _context.UserStories.Where(t => t.SortCode >= p.NewIndex && t.SortCode < p.OldIndex && t.ListID == p.OldListID && t.SortCode != p.OldIndex).OrderBy(t => t.SortCode).ToList(); story.SortCode = p.NewIndex; for (int i = 0; i < downItems.Count; i++) { var item = downItems[i]; item.SortCode = i + 1 + p.NewIndex; } } } _context.SaveChanges(); return(RedirectToAction("Index")); }