public async Task <IEnumerable <RoleDto> > HandleAsync(RoleListQuery query,
                                                               CancellationToken cancellationToken = default(CancellationToken))
        {
            var roleDictionary = new Dictionary <Guid, RoleDto>();

            using (var conn = new SqlConnection(_configuration.HouseholdConnectionString))
            {
                await conn.OpenAsync(cancellationToken);

                var permissions = await conn.QueryAsync <RoleDto, Guid, RoleDto>(@"
                    SELECT r.Id, r.Code, r.Name, r.Version
                    FROM Roles r
                        LEFT JOIN RolePermissions p ON (p.RoleId = r.Id)
                ",
                                                                                 (role, permissionId) =>
                {
                    if (!roleDictionary.TryGetValue(role.Id, out RoleDto roleEntry))
                    {
                        roleEntry = role;
                        roleEntry.PermissionIds = new List <Guid>();
                        roleDictionary.Add(roleEntry.Id, roleEntry);
                    }
                    roleEntry.PermissionIds.Add(permissionId);
                    return(roleEntry);
                },
                                                                                 splitOn : "PermissionId");

                return(permissions);
            }
        }
Example #2
0
        public async Task <ActionResult <PaginationList <Role> > > GetRolesAsync(
            [FromServices] RoleListQuery roleQuery,
            int?page      = null,
            int?itemCount = null)
        {
            var items = await roleQuery.Paginate();

            return(items);
        }
Example #3
0
        public void Retrieve_GivenRoleListQueryAndNoItemsPresent_ContextShouldBeQueriedAndNumberOfRolesReturned()
        {
            var set = new TestDbSet <Role>();

            A.CallTo(() => _fakeContext.Set <Role>()).Returns(set);

            var query = new RoleListQuery();

            var role = _queryHandler.Retrieve(query);

            role.Items.Count().Should().Be(0);
        }
        public async Task <IEnumerable <RoleDto> > HandleAsync(RoleListQuery query, CancellationToken cancellationToken = default(CancellationToken))
        {
            var roles = await
                        _db.Roles.Select(e => new RoleDto
            {
                Id            = e.Id,
                Code          = e.Code,
                Name          = e.Name,
                PermissionIds = e.RolePermissions.Select(o => o.PermissionId).ToList(),
                Version       = e.Version
            }).AsNoTracking().ToListAsync();

            return(roles);
        }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <PageResultDto <RoleDto> > Handle(RoleListQuery request, CancellationToken cancellationToken)
        {
            var sql = @" select Id,Name,DisplayName from SystemRole;";

            var roles = await _dapper.QueryAsync <RoleDto>(sql);

            return(new PageResultDto <RoleDto>
            {
                State = 1,
                Result = new ResultPage <RoleDto>
                {
                    TotalCount = roles.Count(),
                    Data = roles.ToList()
                }
            });
        }
Example #6
0
        public void Retrieve_GivenRoleListQuery_ContextShouldBeQueriedAndRolesReturned()
        {
            var id = 1;

            var set = new TestDbSet <Role> {
                new Role {
                    RoleId = id, Description = "First"
                }
            };

            A.CallTo(() => _fakeContext.Set <Role>()).Returns(set);

            var query = new RoleListQuery {
                RoleId = id
            };

            var role = _queryHandler.Retrieve(query);

            role.Should().NotBeNull();
            role.Items.Count().Should().Be(1);
        }
Example #7
0
        public Roles GetRoles()
        {
            var roleQuery = new RoleListQuery();

            return(_queryDispatcher.Dispatch <RoleListQuery, Roles>(roleQuery));
        }