71 lines
3.5 KiB
C#
71 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 FurnitureVariantController(
|
|
IComponentHandler<GetFurnitureVariantByIdRequest> getByIdHandler,
|
|
IComponentHandler<GetAllFurnitureVariantsByModelIdRequest> getAllHandler,
|
|
IComponentHandler<CreateFurnitureVariantRequest> createHandler,
|
|
IComponentHandler<UpdateFurnitureVariantRequest> updateHandler,
|
|
IComponentHandler<ChangeFurnitureVariantStatusRequest> changeStatusHandler,
|
|
IFurnitureVariantPort port) : ControllerBase
|
|
{
|
|
private readonly IComponentHandler<GetFurnitureVariantByIdRequest> _getByIdHandler = getByIdHandler;
|
|
private readonly IComponentHandler<GetAllFurnitureVariantsByModelIdRequest> _getAllHandler = getAllHandler;
|
|
private readonly IComponentHandler<CreateFurnitureVariantRequest> _createHandler = createHandler;
|
|
private readonly IComponentHandler<UpdateFurnitureVariantRequest> _updateHandler = updateHandler;
|
|
private readonly IComponentHandler<ChangeFurnitureVariantStatusRequest> _changeStatusHandler = changeStatusHandler;
|
|
private readonly IFurnitureVariantPort _port = port;
|
|
|
|
[HttpGet("GetAllByModelId")]
|
|
public async Task<IActionResult> GetAllAsync([FromQuery] string modelId, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(modelId)) return BadRequest("Model ID is required");
|
|
|
|
var request = new GetAllFurnitureVariantsByModelIdRequest { ModelId = modelId };
|
|
await _getAllHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
return _port.ViewModel;
|
|
}
|
|
|
|
[HttpPost("GetById")]
|
|
public async Task<IActionResult> GetByIdAsync([FromBody] GetFurnitureVariantByIdRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request?.Id)) return BadRequest("Furniture variant identifier is required");
|
|
|
|
await _getByIdHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
return _port.ViewModel;
|
|
}
|
|
|
|
[HttpPost("Create")]
|
|
public async Task<IActionResult> CreateAsync([FromBody] CreateFurnitureVariantRequest request, CancellationToken cancellationToken)
|
|
{
|
|
await _createHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
return _port.ViewModel;
|
|
}
|
|
|
|
[HttpPut("Update")]
|
|
public async Task<IActionResult> UpdateAsync([FromBody] UpdateFurnitureVariantRequest request, CancellationToken cancellationToken)
|
|
{
|
|
await _updateHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
return _port.ViewModel;
|
|
}
|
|
|
|
[HttpPatch("ChangeStatus")]
|
|
public async Task<IActionResult> ChangeStatusAsync([FromBody] ChangeFurnitureVariantStatusRequest request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrEmpty(request?.Id)) return BadRequest("Furniture variant identifier is required");
|
|
|
|
await _changeStatusHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
|
|
return _port.ViewModel;
|
|
}
|
|
}
|
|
}
|