feature: Degraded Operations Visibility

This commit is contained in:
voltsrage
2026-06-23 23:18:31 +08:00
parent 940e27c0ac
commit 4399996448
81 changed files with 3949 additions and 323 deletions
@@ -0,0 +1,48 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
/// <summary>
/// Clinical user account management for hospital IT administrators.
/// </summary>
[ApiController]
[Route("api/v1/users")]
[Produces("application/json")]
[Authorize]
public class UsersController : ControllerBase
{
private readonly IUserService _users;
public UsersController(IUserService users) => _users = users;
/// <summary>Lists all clinical user accounts.</summary>
[HttpGet]
[AuthorizePermission(ClinicalPermissions.UsersAdmin)]
[ProducesResponseType(typeof(ApiResponse<List<ClinicalUserResponse>>), StatusCodes.Status200OK)]
public async Task<IActionResult> List()
{
var users = await _users.ListAsync();
return Ok(ApiResponse<List<ClinicalUserResponse>>.Ok(users));
}
/// <summary>Creates a new clinical user account.</summary>
[HttpPost]
[AuthorizePermission(ClinicalPermissions.UsersAdmin)]
[ProducesResponseType(typeof(ApiResponse<ClinicalUserResponse>), StatusCodes.Status201Created)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status409Conflict)]
public async Task<IActionResult> Create([FromBody] CreateUserRequest req)
{
var user = await _users.CreateAsync(req);
return StatusCode(201, ApiResponse<ClinicalUserResponse>.Created(user));
}
/// <summary>Updates role, display name, or active status for a user.</summary>
[HttpPatch("{id:guid}")]
[AuthorizePermission(ClinicalPermissions.UsersAdmin)]
[ProducesResponseType(typeof(ApiResponse<ClinicalUserResponse>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status404NotFound)]
public async Task<IActionResult> Update(Guid id, [FromBody] UpdateUserRequest req)
{
var user = await _users.UpdateAsync(id, req);
return Ok(ApiResponse<ClinicalUserResponse>.Ok(user));
}
}