Beispiel #1
0
        public Either <Error, DtoGridPermission> GetGridUserPermissions(DtoGridQueryUserPermission gridQuery)
        {
            var result = gridQuery.Filter.ToEither(() => Error.Exception).Bind(filter => GetGridUserRoles(new DtoGridQueryUserRole(filter, gridQuery.Pagination))).Bind(
                gridRoles =>
            {
                var(errors, permissions) = gridRoles.Rows.Select(
                    role =>
                {
                    var filter = new DtoFilterById(role.Id);
                    var query  = new DtoGridQueryRolePermission(
                        filter,
                        gridQuery.Pagination);
                    var perms = GetGridRolePermissions(query);

                    return(perms);
                }).Partition();

                if (errors.Any())
                {
                    return(Left <Error, DtoGridPermission>(errors.First()));                                             //TODO: нужна конвертацию списка ошибок в одну аггрегирующую ошибку, убрать errors.First!
                }
                var pagedPermissions = permissions.SelectMany(x => x.Rows).AsQueryable().Paginate(gridQuery.Pagination); //TODO: костыль, потому что будет все записи вытягивать из БД, а потом применять пагинацию
                var grid             = new DtoGridPermission(pagedPermissions, permissions.Count());

                return(Right <Error, DtoGridPermission>(grid));
            });

            return(result);
        }
Beispiel #2
0
        public Either <Error, DtoGridPermission> GetGridRolePermissions(DtoGridQueryRolePermission gridQuery)
        {
            var dbQuery      = _appContext.RolePermissions.AsQueryable();
            var optionFilter = gridQuery.Filter;

            optionFilter.Bind(filter => dbQuery = dbQuery.Where(rolePermission => rolePermission.Role.Id == filter.Id));

            var rows = dbQuery.Paginate(gridQuery.Pagination).Select(rolePermission =>
                                                                     _appContext.Permissions.Find(rolePermission.Permission.Id)).Where(permission => permission != null).Select(permission => new DtoRowPermission(permission.Name, permission.Id));
            var result = new DtoGridPermission(rows, _appContext.Permissions.Count());

            return(Right <Error, DtoGridPermission>(result));
        }
Beispiel #3
0
        /// <inheritdoc />
        public Either <Error, DtoGridPermission> GetGridRolePermissions(DtoGridQueryRolePermission gridQueryRole)
        {
            var result = _userService.GetGridRolePermissions(gridQueryRole);

            return(result);
        }