public async Task <PagedResultDto <NameValueDto> > FindRolesAsync(FindOrganizationUnitRolesInput input)
        {
            var roleIdsInOrganizationUnit = (await _organizationUnitRoleRepository.FindOrganizationUnitRolesAsync(input.OrganizationUnitId).ConfigureAwait(false))
                                            .Select(uou => uou.RoleId);
            var query = _roleManager.Roles
                        .Where(u => !roleIdsInOrganizationUnit.Contains(u.Id))
                        .WhereIf(
                !input.Filter.IsNullOrWhiteSpace(),
                u =>
                u.NormalizedName.Contains(input.Filter) ||
                u.Name.Contains(input.Filter)
                );
            var roleCount = await _organizationUnitRoleRepository.GetCountAsync();

            var roles = query
                        .OrderBy(u => u.Name)
                        .PageBy(input)
                        .ToList();

            return(new PagedResultDto <NameValueDto>(
                       roleCount,
                       roles.Select(u =>
                                    new NameValueDto(
                                        u.Name,
                                        u.Id.ToString()
                                        )
                                    ).ToList()
                       ));
        }
Пример #2
0
        private async Task <OrganizationUnitDto> CreateOrganizationUnitDto(OrganizationUnit organizationUnit)
        {
            var dto = ObjectMapper.Map <OrganizationUnit, OrganizationUnitDto>(organizationUnit);

            dto.MemberCount = await _organizationUnitUserRepository.GetCountAsync(organizationUnit.Id).ConfigureAwait(false);

            dto.RoleCount = await _organizationUnitRoleRepository.GetCountAsync(organizationUnit.Id).ConfigureAwait(false);

            return(dto);
        }