Files
Core.Inventory.Service/Core.Inventory.Service.API/Controllers/FurnitureBaseController.cs

78 lines
3.5 KiB
C#

using Asp.Versioning;
using Core.Inventory.Application.UseCases.Inventory.Input;
using Core.Inventory.Application.UseCases.Inventory.Ports;
using Lib.Architecture.BuildingBlocks;
using Microsoft.AspNetCore.Mvc;
namespace Core.Inventory.Service.API.Controllers
{
[ApiVersion("1.0")]
[Route("api/v{api-version:apiVersion}/[controller]")]
[Produces("application/json")]
[ApiController]
public class FurnitureBaseController : ControllerBase
{
private readonly IComponentHandler<GetFurnitureBaseByIdRequest> _getByIdHandler;
private readonly IComponentHandler<GetAllFurnitureBaseRequest> _getAllHandler;
private readonly IComponentHandler<CreateFurnitureBaseRequest> _createHandler;
private readonly IComponentHandler<UpdateFurnitureBaseRequest> _updateHandler;
private readonly IComponentHandler<ChangeFurnitureBaseStatusRequest> _changeStatusHandler;
private readonly IFurnitureBasePort _port;
public FurnitureBaseController(
IComponentHandler<GetFurnitureBaseByIdRequest> getByIdHandler,
IComponentHandler<GetAllFurnitureBaseRequest> getAllHandler,
IComponentHandler<CreateFurnitureBaseRequest> createHandler,
IComponentHandler<UpdateFurnitureBaseRequest> updateHandler,
IComponentHandler<ChangeFurnitureBaseStatusRequest> changeStatusHandler,
IFurnitureBasePort port)
{
_getByIdHandler= getByIdHandler;
_getAllHandler= getAllHandler;
_createHandler= createHandler;
_updateHandler= updateHandler;
_changeStatusHandler= changeStatusHandler;
_port= port;
}
[HttpGet("GetAll")]
public async Task<IActionResult> GetAllAsync(CancellationToken cancellationToken)
{
await _getAllHandler.ExecuteAsync(new GetAllFurnitureBaseRequest { }, cancellationToken).ConfigureAwait(false);
return _port.ViewModel;
}
[HttpPost("GetById")]
public async Task<IActionResult> GetByIdAsync([FromBody] GetFurnitureBaseByIdRequest request, CancellationToken cancellationToken)
{
if (string.IsNullOrEmpty(request?.Id)) return BadRequest("Furniture base identifier is required");
await _getByIdHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
return _port.ViewModel;
}
[HttpPost("Create")]
public async Task<IActionResult> CreateAsync([FromBody] CreateFurnitureBaseRequest request, CancellationToken cancellationToken)
{
await _createHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
return _port.ViewModel;
}
[HttpPut("Update")]
public async Task<IActionResult> UpdateAsync([FromBody] UpdateFurnitureBaseRequest request, CancellationToken cancellationToken)
{
await _updateHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
return _port.ViewModel;
}
[HttpPatch("ChangeStatus")]
public async Task<IActionResult> ChangeStatusAsync([FromBody] ChangeFurnitureBaseStatusRequest request, CancellationToken cancellationToken)
{
if (string.IsNullOrEmpty(request?.Id)) return BadRequest("Furniture base identifier is required");
await _changeStatusHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
return _port.ViewModel;
}
}
}