Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        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));
        }