update swagger implementation
This commit is contained in:
@@ -19,6 +19,7 @@ public class AuthController : ControllerBase
|
||||
/// Authenticates a user and returns a JWT with role claims.
|
||||
/// </summary>
|
||||
[HttpPost("login")]
|
||||
[AllowAnonymous]
|
||||
[ProducesResponseType(typeof(ApiResponse<LoginResponse>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status422UnprocessableEntity)]
|
||||
public async Task<IActionResult> Login([FromBody] LoginRequest req)
|
||||
@@ -32,16 +33,13 @@ public class AuthController : ControllerBase
|
||||
/// </summary>
|
||||
[HttpGet("me")]
|
||||
[Authorize]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ApiResponse<UserProfileResponse>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status401Unauthorized)]
|
||||
public async Task<IActionResult> Me()
|
||||
{
|
||||
var userId = Guid.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
|
||||
var user = await _auth.GetCurrentUserAsync(userId);
|
||||
return Ok(ApiResponse<object>.Ok(new
|
||||
{
|
||||
user.Id, user.Username, user.FullName,
|
||||
role = user.Role.ToDbString()
|
||||
}));
|
||||
return Ok(ApiResponse<UserProfileResponse>.Ok(new UserProfileResponse(
|
||||
user.Id, user.Username, user.FullName, user.Role.ToDbString())));
|
||||
}
|
||||
}
|
||||
@@ -30,30 +30,31 @@ public class DigitizationBatchesController : ControllerBase
|
||||
/// Uploads a scanned document and creates a new digitization batch.
|
||||
/// </summary>
|
||||
[HttpPost]
|
||||
[Consumes("multipart/form-data")]
|
||||
[ProducesResponseType(typeof(ApiResponse<BatchDetailResponse>), StatusCodes.Status201Created)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status400BadRequest)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status409Conflict)]
|
||||
[RequestSizeLimit(25 * 1024 * 1024)]
|
||||
public async Task<IActionResult> Create(
|
||||
IFormFile file,
|
||||
[FromForm] CreateBatchRequest req)
|
||||
public async Task<IActionResult> Create([FromForm] CreateBatchForm form)
|
||||
{
|
||||
if (file is null || file.Length == 0)
|
||||
if (form.File is null || form.File.Length == 0)
|
||||
return BadRequest(ApiResponse<object>.Fail(400, "File is required.", "EMPTY_FILE"));
|
||||
|
||||
if (!_allowedMimeTypes.Contains(file.ContentType))
|
||||
if (!_allowedMimeTypes.Contains(form.File.ContentType))
|
||||
return BadRequest(ApiResponse<object>.Fail(400,
|
||||
"Accepted formats: PDF, JPEG, PNG.", "INVALID_MIME_TYPE"));
|
||||
|
||||
var req = form.ToMetadata();
|
||||
var parsedBatchType = BatchTypeExtensions.FromDbString(req.BatchType.ToUpperInvariant());
|
||||
var parsedTrack = string.IsNullOrEmpty(req.Track)
|
||||
? BatchTrack.Backfill
|
||||
: BatchTrackExtensions.FromDbString(req.Track.ToUpperInvariant());
|
||||
var actorUserId = Guid.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
|
||||
|
||||
using var stream = file.OpenReadStream();
|
||||
using var stream = form.File.OpenReadStream();
|
||||
var batch = await _batches.CreateAsync(
|
||||
stream, file.ContentType, parsedBatchType, parsedTrack, req.PatientId, actorUserId);
|
||||
stream, form.File.ContentType, parsedBatchType, parsedTrack, req.PatientId, actorUserId);
|
||||
return StatusCode(201, ApiResponse<BatchDetailResponse>.Created(BatchDetailResponse.FromEntity(batch)));
|
||||
}
|
||||
|
||||
@@ -62,6 +63,7 @@ public class DigitizationBatchesController : ControllerBase
|
||||
/// </summary>
|
||||
[HttpGet("{id:guid}")]
|
||||
[ProducesResponseType(typeof(ApiResponse<BatchDetailResponse>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status404NotFound)]
|
||||
public async Task<IActionResult> Get(Guid id)
|
||||
{
|
||||
@@ -76,7 +78,8 @@ public class DigitizationBatchesController : ControllerBase
|
||||
/// Lists batches with optional filters and pagination.
|
||||
/// </summary>
|
||||
[HttpGet]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ApiResponse<BatchListResponse>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status401Unauthorized)]
|
||||
public async Task<IActionResult> List(
|
||||
[FromQuery] string? status,
|
||||
[FromQuery] string? batchType,
|
||||
@@ -90,14 +93,12 @@ public class DigitizationBatchesController : ControllerBase
|
||||
BatchTrack? parsedTrack = string.IsNullOrEmpty(track) ? null : BatchTrackExtensions.FromDbString(track.ToUpperInvariant());
|
||||
|
||||
var result = await _batches.ListAsync(parsedStatus, parsedBatchType, assignedTo, parsedTrack, page, pageSize);
|
||||
return Ok(ApiResponse<object>.Ok(new
|
||||
{
|
||||
items = result.Items,
|
||||
page = result.Page,
|
||||
pageSize = result.PageSize,
|
||||
totalCount = result.TotalCount,
|
||||
totalPages = result.TotalPages
|
||||
}));
|
||||
return Ok(ApiResponse<BatchListResponse>.Ok(new BatchListResponse(
|
||||
result.Items.Select(b => BatchDetailResponse.FromEntity(b)).ToList(),
|
||||
result.Page,
|
||||
result.PageSize,
|
||||
result.TotalCount,
|
||||
result.TotalPages)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -105,6 +106,7 @@ public class DigitizationBatchesController : ControllerBase
|
||||
/// </summary>
|
||||
[HttpPatch("{id:guid}/assign")]
|
||||
[ProducesResponseType(typeof(ApiResponse<BatchDetailResponse>), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status401Unauthorized)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status404NotFound)]
|
||||
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status409Conflict)]
|
||||
public async Task<IActionResult> Assign(Guid id, [FromBody] AssignBatchRequest req)
|
||||
|
||||
Reference in New Issue
Block a user