Removed unnecessary using statements for ReC.API.Extensions and ReC.API.Models to clean up the code and improve maintainability. No functional changes were made.
67 lines
2.9 KiB
C#
67 lines
2.9 KiB
C#
using MediatR;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using ReC.Application.Common.Procedures.DeleteProcedure;
|
|
using ReC.Application.Common.Procedures.InsertProcedure;
|
|
using ReC.Application.Common.Procedures.UpdateProcedure;
|
|
using ReC.Application.Results.Commands;
|
|
using ReC.Application.Results.Queries;
|
|
|
|
namespace ReC.API.Controllers;
|
|
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class ResultController(IMediator mediator) : ControllerBase
|
|
{
|
|
/// <summary>
|
|
/// Gets output results based on the provided query parameters.
|
|
/// </summary>
|
|
/// <param name="query">The query to filter output results.</param>
|
|
/// <param name="cancel">A token to cancel the operation.</param>
|
|
/// <returns>A list of output results matching the query.</returns>
|
|
[HttpGet]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
public async Task<IActionResult> Get([FromQuery] ReadResultViewQuery query, CancellationToken cancel) => Ok(await mediator.Send(query, cancel));
|
|
|
|
/// <summary>
|
|
/// Inserts a RESULT record via the insert procedure.
|
|
/// </summary>
|
|
/// <param name="procedure">InsertResultProcedure payload.</param>
|
|
/// <param name="cancel">A token to cancel the operation.</param>
|
|
/// <returns>The created RESULT identifier.</returns>
|
|
[HttpPost]
|
|
[ProducesResponseType(StatusCodes.Status201Created)]
|
|
public async Task<IActionResult> Post([FromBody] InsertResultProcedure procedure, CancellationToken cancel)
|
|
{
|
|
var id = await mediator.ExecuteInsertProcedure(procedure, cancel: cancel);
|
|
return CreatedAtAction(nameof(Get), new { actionId = procedure.ActionId }, new { id, procedure.ActionId });
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates a RESULT record via the update procedure.
|
|
/// </summary>
|
|
/// <param name="id">RESULT identifier to update.</param>
|
|
/// <param name="procedure">UpdateResultProcedure payload.</param>
|
|
/// <param name="cancel">A token to cancel the operation.</param>
|
|
/// <returns>No content on success.</returns>
|
|
[HttpPut("{id:long}")]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
public async Task<IActionResult> Put([FromRoute] long id, [FromBody] UpdateResultProcedure procedure, CancellationToken cancel)
|
|
{
|
|
await mediator.ExecuteUpdateProcedure(procedure, id, cancel: cancel);
|
|
return NoContent();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Deletes RESULT records via the delete procedure for the specified id range.
|
|
/// </summary>
|
|
/// <param name="procedure">DeleteResultProcedure payload (Start, End, Force).</param>
|
|
/// <param name="cancel">A token to cancel the operation.</param>
|
|
/// <returns>No content on success.</returns>
|
|
[HttpDelete]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
public async Task<IActionResult> Delete([FromBody] DeleteResultProcedure procedure, CancellationToken cancel)
|
|
{
|
|
await mediator.ExecuteDeleteProcedure(procedure, cancel);
|
|
return NoContent();
|
|
}
|
|
} |