4using System.Threading.Tasks;
6using Microsoft.AspNetCore.Mvc;
7using Microsoft.EntityFrameworkCore;
8using Microsoft.Extensions.Logging;
9using Microsoft.Extensions.Options;
24using Z.EntityFramework.Plus;
50 IOptions<GeneralConfiguration> generalConfigurationOptions,
51 ILogger<UserGroupController> logger,
55 authenticationContext,
60 generalConfiguration = generalConfigurationOptions?.Value ??
throw new ArgumentNullException(nameof(generalConfigurationOptions));
75 ArgumentNullException.ThrowIfNull(model);
77 if (model.Name ==
null)
83 .CountAsync(cancellationToken);
101 Logger.LogInformation(
"Created new user group {groupName} ({groupId})", dbGroup.Name, dbGroup.Id);
103 return Created(dbGroup.ToApi(
true));
119 ArgumentNullException.ThrowIfNull(model);
124 .Where(x => x.Id == model.Id)
125 .Include(x => x.PermissionSet)
126 .Include(x => x.Users)
127 .FirstOrDefaultAsync(cancellationToken);
129 if (currentGroup ==
default)
132 if (model.PermissionSet !=
null)
134 currentGroup.PermissionSet!.AdministrationRights = model.PermissionSet.AdministrationRights ?? currentGroup.PermissionSet.AdministrationRights;
135 currentGroup.PermissionSet.InstanceManagerRights = model.PermissionSet.InstanceManagerRights ?? currentGroup.PermissionSet.InstanceManagerRights;
138 currentGroup.Name = model.Name ?? currentGroup.Name;
145 Id = currentGroup.
Id,
148 return Json(currentGroup.ToApi(
true));
163 public async ValueTask<IActionResult>
GetId(
long id, CancellationToken cancellationToken)
169 .Where(x => x.Id ==
id)
170 .Include(x => x.Users)
171 .Include(x => x.PermissionSet)
172 .FirstOrDefaultAsync(cancellationToken);
173 if (group ==
default)
175 return Json(group.ToApi(
true));
189 public ValueTask<IActionResult>
List([FromQuery]
int? page, [FromQuery]
int? pageSize, CancellationToken cancellationToken)
190 => Paginated<UserGroup, UserGroupResponse>(
191 () => ValueTask.FromResult(
196 .Include(x => x.Users)
197 .Include(x => x.PermissionSet)
198 .OrderBy(x => x.Id))),
215 [ProducesResponseType(204)]
218 public async ValueTask<IActionResult>
Delete(
long id, CancellationToken cancellationToken)
223 .Where(x => x.Id ==
id && x.Users!.Count == 0)
224 .DeleteAsync(cancellationToken);
233 .Where(x => x.Id ==
id)
234 .AnyAsync(cancellationToken);
virtual ? string Name
The name of the entity represented by the NamedEntity.
Represents a set of server permissions.
AdministrationRights? AdministrationRights
The Rights.AdministrationRights for the user.
Request to create a user group.
Request to update a user group.
Represents an error message returned by the server.
Represents a paginated set of models.
Routes to a server actions.
const string UserGroup
The user group controller.
const string List
The postfix for list operations.
General configuration options.
Base Controller for API functions.
ObjectResult Created(object payload)
Generic 201 response with a given payload .
ILogger< ApiController > Logger
The ILogger for the ApiController.
Helper for returning paginated models.
ApiController for managing UserGroupResponses.
async ValueTask< IActionResult > GetId(long id, CancellationToken cancellationToken)
Gets a specific UserGroup.
UserGroupController(IDatabaseContext databaseContext, IAuthenticationContext authenticationContext, IOptions< GeneralConfiguration > generalConfigurationOptions, ILogger< UserGroupController > logger, IApiHeadersProvider apiHeaders)
Initializes a new instance of the UserGroupController class.
async ValueTask< IActionResult > Create([FromBody] UserGroupCreateRequest model, CancellationToken cancellationToken)
Create a new UserGroup.
readonly GeneralConfiguration generalConfiguration
The GeneralConfiguration for the UserGroupController.
async ValueTask< IActionResult > Update([FromBody] UserGroupUpdateRequest model, CancellationToken cancellationToken)
Update a UserGroup.
ValueTask< IActionResult > List([FromQuery] int? page, [FromQuery] int? pageSize, CancellationToken cancellationToken)
Lists all UserGroups.
async ValueTask< IActionResult > Delete(long id, CancellationToken cancellationToken)
Delete a UserGroup.
Backend abstract implementation of IDatabaseContext.
Task Save(CancellationToken cancellationToken)
Saves changes made to the IDatabaseContext. A Task representing the running operation.
DbSet< UserGroup > Groups
The UserGroups in the DatabaseContext.
Represents a group of Users.
PermissionSet PermissionSet
The User's effective PermissionSet.
Represents the currently authenticated Models.User.
ErrorCode
Types of Response.ErrorMessageResponses that the API may return.
InstanceManagerRights
Rights for managing Models.Instances.
AdministrationRights
Administration rights for the server.