/// <summary> /// Move category and update all relative paths /// </summary> /// <param name="model">Category move model</param> /// <returns><param name="StatusResult">Simple result struct</param></returns> public async Task <StatusResult> MoveAsync(FolderMovelViewModel model) { var oldParent = _db.Folder.Find(model.OldParId); var current = _db.Folder.Find(model.Id); var newParent = _db.Folder.Find(model.NewParId); if (oldParent == null || current == null || newParent == null) { return(new StatusResult(false, StatusCode.CategoryNotFound, "Connot find all directories for the move")); } string oldParentPath = oldParent.Path; string newParentPath = newParent.IsRoot ? "" : newParent.Path; try { current.Parent = newParent; current.Pid = newParent.Id; await _db.SaveChangesAsync(); } catch (Exception e) { return(new StatusResult(false, StatusCode.ExceptionThrown, e.InnerException.Message)); } try { await UpdatePathAsync(model.Id, newParentPath); } catch (Exception e) { return(new StatusResult(false, StatusCode.ExceptionThrown, e.InnerException.Message)); } return(new StatusResult(true, StatusCode.Success, current.Name + " succesfully moved from " + oldParent.Name + " to " + newParent.Name)); }
public async Task <JsonResult> Move([Bind(Include = "Id,OldParId,NewParId")] FolderMovelViewModel model) { if (!ModelState.IsValid) { return(Json(new { success = false, responseText = "Invalid model state" }, JsonRequestBehavior.AllowGet)); } // Move var result = await _cs.MoveAsync(model); return(Json(new { success = result.Success, responseText = result.Message }, JsonRequestBehavior.AllowGet)); }