public async Task GetAllOrgUnitInTenant_Test()
        {
            CreateTenantDto createTenantDto = new CreateTenantDto()
            {
                TenancyName      = "TestTenant",
                Name             = "TestTenant",
                AdminPhoneNumber = "13851400000",
                IsActive         = true
            };
            var tenantDto = await _tenantAppService.CreateAsync(createTenantDto);

            CreateOrgUnitDto createOrgUnit1Dto = new CreateOrgUnitDto()
            {
                ParentId    = null,
                DisplayName = "Ou1"
            };
            var orgUnit1Dto = await _omOrgUnitAppService.CreateOrgUnitInTenantAsync(tenantDto.Id, createOrgUnit1Dto);

            CreateOrgUnitDto createOrgUnit2Dto = new CreateOrgUnitDto()
            {
                ParentId    = null,
                DisplayName = "Ou2"
            };
            var orgUnit2Dto = await _omOrgUnitAppService.CreateOrgUnitInTenantAsync(tenantDto.Id, createOrgUnit2Dto);

            GetOrgUnitsInput getOrgUnitsInput = new GetOrgUnitsInput()
            {
                Role = string.Empty
            };
            var orgUnits = await _omOrgUnitAppService.GetAllOrgUnitInTenantAsync(tenantDto.Id, getOrgUnitsInput);

            orgUnits.Items.Count.ShouldBe(3);  // 2 new created + 1 admin
        }
Exemplo n.º 2
0
        /// <summary>
        /// 运维专用:获取特定租户下的所有组织
        /// </summary>
        /// <param name="tenantId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <ListResultDto <OrgUnitDto> > GetAllOrgUnitInTenantAsync(int tenantId, GetOrgUnitsInput input)
        {
            using (CurrentUnitOfWork.SetTenantId(tenantId))
            {
                var allOrgUnits = await _orgUnitRepository.GetAll().ToListAsync();

                if (!string.IsNullOrEmpty(input.Role))
                {
                    var role = await _roleManager.GetRoleByNameAsync(input.Role);

                    var orgUnitRoles = _orgUnitRoleRepository.GetAll()
                                       .Where(our => our.RoleId == role.Id);

                    var excludeOrgUnitIds = await orgUnitRoles.Select(our => our.OrganizationUnitId).ToListAsync();

                    var excludeOrgUnits = allOrgUnits.Where(ou => excludeOrgUnitIds.Contains(ou.Id)).ToList();

                    foreach (OrganizationUnit orgUnit in excludeOrgUnits)
                    {
                        allOrgUnits.Remove(orgUnit);
                    }
                }

                List <OrgUnitDto> orgUnitDtos = new List <OrgUnitDto>();
                foreach (OrganizationUnit orgUnit in allOrgUnits)
                {
                    orgUnitDtos.Add(await GenerateOrgUnitDtoAsync(orgUnit));
                }

                return(new ListResultDto <OrgUnitDto>(orgUnitDtos));
            }
        }
        public async Task GetAllOrgUnitInTenant_FilterWithRole_Test()
        {
            CreateTenantDto createTenantDto = new CreateTenantDto()
            {
                TenancyName      = "TestTenant",
                Name             = "TestTenant",
                AdminPhoneNumber = "13851400000",
                IsActive         = true
            };
            var tenantDto = await _tenantAppService.CreateAsync(createTenantDto);

            // Prepare roles
            var createRoleDto1 = new CreateRoleDto()
            {
                Name               = "Role1",
                DisplayName        = "Test role1",
                Description        = "Role1 for test",
                GrantedPermissions = new List <string>()
                {
                    PermissionNames.Pages_Roles
                }
            };
            var role1Dto = await _omRoleAppService.CreateRoleInTenantAsync(tenantDto.Id, createRoleDto1);

            var createRoleDto2 = new CreateRoleDto()
            {
                Name               = "Role2",
                DisplayName        = "Test role2",
                Description        = "Role2 for test",
                GrantedPermissions = new List <string>()
                {
                    PermissionNames.Pages_Users
                }
            };
            var role2Dto = await _omRoleAppService.CreateRoleInTenantAsync(tenantDto.Id, createRoleDto2);

            // Prepare organization units
            CreateOrgUnitDto createOrgUnit1Dto = new CreateOrgUnitDto()
            {
                ParentId    = null,
                DisplayName = "Ou1"
            };
            var orgUnit1Dto = await _omOrgUnitAppService.CreateOrgUnitInTenantAsync(tenantDto.Id, createOrgUnit1Dto);

            await _omOrgUnitAppService.AddRoleToOrgUnitInTenantAsync(tenantDto.Id, new SetOrgUnitRoleDto()
            {
                OrgUnitId = orgUnit1Dto.Id,
                RoleId    = role1Dto.Id
            });

            CreateOrgUnitDto createOrgUnit2Dto = new CreateOrgUnitDto()
            {
                ParentId    = null,
                DisplayName = "Ou2"
            };
            var orgUnit2Dto = await _omOrgUnitAppService.CreateOrgUnitInTenantAsync(tenantDto.Id, createOrgUnit2Dto);

            await _omOrgUnitAppService.AddRoleToOrgUnitInTenantAsync(tenantDto.Id, new SetOrgUnitRoleDto()
            {
                OrgUnitId = orgUnit2Dto.Id,
                RoleId    = role2Dto.Id
            });

            // Query
            GetOrgUnitsInput getOrgUnitsInput = new GetOrgUnitsInput()
            {
                Role = "Role2"
            };
            var orgUnits = await _omOrgUnitAppService.GetAllOrgUnitInTenantAsync(tenantDto.Id, getOrgUnitsInput);

            orgUnits.Items.Count.ShouldBe(2);  // 1 new created + 1 admin
        }