public object MoveForm(MoveFormRequest request) { // Variables. var result = default(object); var rootId = CoreConstants.System.Root.ToInvariantString(); var parentId = GuidHelper.GetGuid(request.NewParentId); // Catch all errors. try { // Declare list of anonymous type. var savedDescendants = new[] { new { Id = string.Empty, Path = new string[] { } } }.Take(0).ToList(); // Variables. var formId = GuidHelper.GetGuid(request.FormId); var form = Persistence.Retrieve(formId); var parentPath = Entities.Retrieve(parentId).Path; var oldFormPath = form.Path; var oldParentPath = oldFormPath.Take(oldFormPath.Length - 1).ToArray(); var configs = ConFormPersistence.RetrieveChildren(formId); // Move form and configurations. var path = EntityHelper.GetClientPath(Entities.MoveEntity(form, parentPath)); foreach (var config in configs) { var descendantParentPath = config.Path.Take(config.Path.Length - 1); var descendantPathEnd = descendantParentPath.Skip(oldParentPath.Length); var newParentPath = parentPath.Concat(descendantPathEnd).ToArray(); var clientPath = EntityHelper.GetClientPath( Entities.MoveEntity(config, newParentPath)); savedDescendants.Add(new { Id = GuidHelper.GetString(config.Id), Path = clientPath }); } // Success. result = new { Success = true, Id = GuidHelper.GetString(formId), Path = path, Descendants = savedDescendants.ToArray() }; } catch (Exception ex) { // Error. LogHelper.Error<FormsController>(MoveFormError, ex); result = new { Success = false, Reason = UnhandledError }; } // Return result. return result; }
public object MoveForm(MoveFormRequest request) { // Variables. var result = default(object); var rootId = CoreConstants.System.Root.ToInvariantString(); var parentId = GuidHelper.GetGuid(request.NewParentId); // Catch all errors. try { // Declare list of anonymous type. var savedDescendants = new[] { new { Id = string.Empty, Path = new string[] { } } }.Take(0).ToList(); // Variables. var formId = GuidHelper.GetGuid(request.FormId); var form = Persistence.Retrieve(formId); var parentPath = Entities.Retrieve(parentId).Path; var oldFormPath = form.Path; var oldParentPath = oldFormPath.Take(oldFormPath.Length - 1).ToArray(); var configs = ConFormPersistence.RetrieveChildren(formId); // Move form and configurations. var path = EntityHelper.GetClientPath(Entities.MoveEntity(form, parentPath)); foreach (var config in configs) { var descendantParentPath = config.Path.Take(config.Path.Length - 1); var descendantPathEnd = descendantParentPath.Skip(oldParentPath.Length); var newParentPath = parentPath.Concat(descendantPathEnd).ToArray(); var clientPath = EntityHelper.GetClientPath( Entities.MoveEntity(config, newParentPath)); savedDescendants.Add(new { Id = GuidHelper.GetString(config.Id), Path = clientPath }); } // Success. result = new { Success = true, Id = GuidHelper.GetString(formId), Path = path, Descendants = savedDescendants.ToArray() }; } catch (Exception ex) { // Error. Logger.Error <FormsController>(MoveFormError, ex); result = new { Success = false, Reason = UnhandledError }; } // Return result. return(result); }