public virtual async Task <OrganizationUnitDto> CreateAsync(OrganizationUnitCreateDto input) { var parentOrganizationUnit = input.ParentId.HasValue ? await OrganizationUnitRepository.GetAsync(input.ParentId.Value, false) : null; if (parentOrganizationUnit != null) { await AuthorizationService.CheckAsync(parentOrganizationUnit, CommonOperations.Create); } else { await AuthorizationService.CheckAsync(OrganizationUnitPermissions.OrganizationUnits.SuperAuthorization); } var children = await OrganizationUnitRepository.GetChildrenAsync(input.ParentId, false); await RepairPosition(children);// var ou = new OrganizationUnit( GuidGenerator.Create(), input.DisplayName, input.ParentId, CurrentTenant.Id); ou.SetProperty(OrganizationUnitExtraPropertyNames.IsActiveName, input.IsActive); ou.SetProperty(OrganizationUnitExtraPropertyNames.PositionName, children.Select(c => c.GetProperty <int>(OrganizationUnitExtraPropertyNames.PositionName)) .DefaultIfEmpty(0).Max() + 1); foreach (var roleId in input.RoleIds) { ou.AddRole(roleId); } await OrganizationUnitManager.CreateAsync(ou); //remove cache await CacheOrganizationUnits.RemoveAsync(AllOrganizationUnitsListCacheName); return(ObjectMapper.Map <OrganizationUnit, OrganizationUnitDto>(ou)); }
public async Task <OrganizationUnitDto> CreateAsync(OrganizationUnitCreateDto input) { return(await _organizationUnitAppService.CreateAsync(input)); }