Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        /// <inheritdoc />
        public Either <Error, DtoGridPermission> GetGridUserPermissions(DtoGridQueryUserPermission gridQueryUserPermission)
        {
            var result = _userService.GetGridUserPermissions(gridQueryUserPermission);

            return(result);
        }