diff --git a/src/ReC.API/Controllers/EndpointAuthController.cs b/src/ReC.API/Controllers/EndpointAuthController.cs new file mode 100644 index 0000000..af767f3 --- /dev/null +++ b/src/ReC.API/Controllers/EndpointAuthController.cs @@ -0,0 +1,56 @@ +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.EndpointAuth.Commands; + +namespace ReC.API.Controllers; + +[Route("api/[controller]")] +[ApiController] +public class EndpointAuthController(IMediator mediator, IConfiguration config) : ControllerBase +{ + /// + /// Inserts an endpoint authentication record via the ENDPOINT_AUTH insert procedure. + /// + /// InsertEndpointAuthProcedure payload. + /// A token to cancel the operation. + /// The created ENDPOINT_AUTH identifier. + [HttpPost] + [ProducesResponseType(StatusCodes.Status201Created)] + public async Task Post([FromBody] InsertEndpointAuthProcedure procedure, CancellationToken cancel) + { + var id = await mediator.ExecuteInsertProcedure(procedure, config["AddedWho"], cancel); + return StatusCode(StatusCodes.Status201Created, id); + } + + /// + /// Updates an endpoint authentication record via the ENDPOINT_AUTH update procedure. + /// + /// ENDPOINT_AUTH identifier to update. + /// UpdateEndpointAuthProcedure payload. + /// A token to cancel the operation. + /// No content on success. + [HttpPut("{id:long}")] + [ProducesResponseType(StatusCodes.Status204NoContent)] + public async Task Put([FromRoute] long id, [FromBody] UpdateEndpointAuthProcedure procedure, CancellationToken cancel) + { + await mediator.ExecuteUpdateProcedure(procedure, id, cancel: cancel); + return NoContent(); + } + + /// + /// Deletes endpoint authentication records via the ENDPOINT_AUTH delete procedure for the specified id range. + /// + /// DeleteEndpointAuthProcedure payload (Start, End, Force). + /// A token to cancel the operation. + /// No content on success. + [HttpDelete] + [ProducesResponseType(StatusCodes.Status204NoContent)] + public async Task Delete([FromBody] DeleteEndpointAuthProcedure procedure, CancellationToken cancel) + { + await mediator.ExecuteDeleteProcedure(procedure, cancel); + return NoContent(); + } +}