Refactored update (PUT) endpoints in multiple controllers to accept the record id as a route parameter and the update data as a DTO in the request body. Updated method signatures, XML documentation, and imports to align with RESTful conventions and improve API clarity. Controller methods now construct command objects using the id and DTO before sending to MediatR.
82 lines
3.4 KiB
C#
82 lines
3.4 KiB
C#
using MediatR;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using ReC.Application.Common.Procedures.UpdateProcedure.Dto;
|
|
using ReC.Application.RecActions.Commands;
|
|
using ReC.Application.RecActions.Queries;
|
|
|
|
namespace ReC.API.Controllers;
|
|
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class RecActionController(IMediator mediator) : ControllerBase
|
|
{
|
|
/// <summary>
|
|
/// Invokes a batch of RecActions for a given profile.
|
|
/// </summary>
|
|
/// <param name="command">The command containing the profile ID.</param>
|
|
/// <param name="cancel">A token to cancel the operation.</param>
|
|
/// <returns>An HTTP 202 Accepted response indicating the process has been started.</returns>
|
|
[HttpPost("invoke/{command}")]
|
|
[ProducesResponseType(StatusCodes.Status202Accepted)]
|
|
public async Task<IActionResult> Invoke([FromRoute] InvokeBatchRecActionViewsCommand command, CancellationToken cancel)
|
|
{
|
|
await mediator.Send(command, cancel);
|
|
return Accepted();
|
|
}
|
|
|
|
#region CRUD
|
|
/// <summary>
|
|
/// Gets all RecActions for a given profile.
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <param name="cancel">A token to cancel the operation.</param>
|
|
/// <returns>A list of RecActions for the specified profile.</returns>
|
|
[HttpGet]
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
public async Task<IActionResult> Get([FromQuery] ReadRecActionViewQuery query, CancellationToken cancel) => Ok(await mediator.Send(query, cancel));
|
|
|
|
/// <summary>
|
|
/// Creates a new RecAction.
|
|
/// </summary>
|
|
/// <param name="command">The command containing the details for the new RecAction.</param>
|
|
/// <param name="cancel">A token to cancel the operation.</param>
|
|
/// <returns>An HTTP 201 Created response.</returns>
|
|
[HttpPost]
|
|
[ProducesResponseType(StatusCodes.Status201Created)]
|
|
public async Task<IActionResult> Create([FromBody] InsertActionCommand command, CancellationToken cancel)
|
|
{
|
|
await mediator.Send(command, cancel);
|
|
|
|
return StatusCode(StatusCodes.Status201Created);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates a RecAction via the ACTION update procedure.
|
|
/// </summary>
|
|
/// <param name="id">The identifier of the ACTION record to update.</param>
|
|
/// <param name="data">UpdateActionProcedure 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> Update([FromRoute] long id, [FromBody] UpdateActionDto data, CancellationToken cancel)
|
|
{
|
|
await mediator.Send(new UpdateActionCommand() { Id = id, Data = data }, cancel);
|
|
return NoContent();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Deletes RecActions via the ACTION delete procedure for the specified id range.
|
|
/// </summary>
|
|
/// <param name="command">DeleteActionProcedure payload (Start, End, Force).</param>
|
|
/// <param name="cancel">A token to cancel the operation.</param>
|
|
/// <returns>An HTTP 204 No Content response upon successful deletion.</returns>
|
|
[HttpDelete]
|
|
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
|
public async Task<IActionResult> Delete([FromQuery] DeleteActionCommand command, CancellationToken cancel)
|
|
{
|
|
await mediator.Send(command, cancel);
|
|
return NoContent();
|
|
}
|
|
#endregion CRUD
|
|
} |