84 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Asp.Versioning;
 | |
| using Core.Inventory.Application.UseCases.Inventory.Input.Variant;
 | |
| 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,
 | |
|         IComponentHandler<GetFurnitureVariantsByIdsRequest> getByIdsHandler,
 | |
|         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 IComponentHandler<GetFurnitureVariantsByIdsRequest> _getByIdsHandler = getByIdsHandler;
 | |
|         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?.MongoId)) return BadRequest("Furniture variant identifier is required");
 | |
| 
 | |
|             await _getByIdHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
 | |
|             return _port.ViewModel;
 | |
|         }
 | |
| 
 | |
|         [HttpPost("GetByIds")]
 | |
|         public async Task<IActionResult> GetByIdsAsync([FromBody] GetFurnitureVariantsByIdsRequest request, CancellationToken cancellationToken)
 | |
|         {
 | |
|             if (request?.Ids is null || request.Ids.Length == 0)
 | |
|                 return BadRequest("At least one furniture variant ID must be provided.");
 | |
| 
 | |
|             await _getByIdsHandler.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?.MongoId)) return BadRequest("Furniture variant identifier is required");
 | |
| 
 | |
|             await _changeStatusHandler.ExecuteAsync(request, cancellationToken).ConfigureAwait(false);
 | |
|             return _port.ViewModel;
 | |
|         }
 | |
|     }
 | |
| }
 |