public virtual async Task MoveAsync(long id, long?parentId) { var organizationUnit = await OrganizationUnitRepository.GetAsync(id); if (organizationUnit.ParentId == parentId) { return; } //Should find children before Code change var children = await FindChildrenAsync(id, true); //Store old code of OU var oldCode = organizationUnit.Code; //Move OU organizationUnit.Code = await GetNextChildCodeAsync(parentId); organizationUnit.ParentId = parentId; await ValidateOrganizationUnitAsync(organizationUnit); //Update Children Codes foreach (var child in children) { child.Code = OrganizationUnit.AppendCode(organizationUnit.Code, OrganizationUnit.GetRelativeCode(child.Code, oldCode)); } }
public virtual void Move(long id, long?parentId) { var organizationUnit = OrganizationUnitRepository.Get(id); if (organizationUnit.ParentId == parentId) { return; } //Should find children before Code change var children = FindChildren(id, true); //Store old code of OU var oldCode = organizationUnit.Code; //Move OU organizationUnit.Code = GetNextChildCode(parentId); organizationUnit.ParentId = parentId; ValidateOrganizationUnit(organizationUnit); //Update Children Codes foreach (var child in children) { child.Code = OrganizationUnit.AppendCode(organizationUnit.Code, OrganizationUnit.GetRelativeCode(child.Code, oldCode)); } }