92 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| // ***********************************************************************
 | |
| // <copyright file="FurnitureBaseController.cs">
 | |
| //     Core.Inventory
 | |
| // </copyright>
 | |
| // ***********************************************************************
 | |
| using Asp.Versioning;
 | |
| using Core.Adapters.Lib;
 | |
| using Core.Blueprint.Logging;
 | |
| using Core.Blueprint.Mongo;
 | |
| using Core.Inventory.Domain.Contexts.Inventory.Request;
 | |
| using Core.Inventory.Provider.Contracts;
 | |
| using Microsoft.AspNetCore.Authorization;
 | |
| using Microsoft.AspNetCore.Mvc;
 | |
| 
 | |
| namespace Core.Inventory.DAL.API.Controllers
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Handles all requests for furniture base CRUD operations.
 | |
|     /// </summary>
 | |
|     [ApiVersion(MimeTypes.ApplicationVersion)]
 | |
|     [Route("api/v{api-version:apiVersion}/[controller]")]
 | |
|     [Produces(MimeTypes.ApplicationJson)]
 | |
|     [Consumes(MimeTypes.ApplicationJson)]
 | |
|     [ApiController]
 | |
|     [AllowAnonymous]
 | |
|     public class FurnitureBaseController(IFurnitureBaseProvider service) : ControllerBase
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// Gets all furniture base records.
 | |
|         /// </summary>
 | |
|         [HttpGet]
 | |
|         [ProducesResponseType(typeof(IEnumerable<FurnitureBase>), StatusCodes.Status200OK)]
 | |
|         public async Task<IActionResult> GetAllAsync(CancellationToken cancellationToken)
 | |
|         {
 | |
|             var result = await service.GetAllAsync(cancellationToken);
 | |
|             return Ok(result);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets a furniture base record by ID.
 | |
|         /// </summary>
 | |
|         [HttpGet]
 | |
|         [Route("{_id}")]
 | |
|         [ProducesResponseType(typeof(FurnitureBase), StatusCodes.Status200OK)]
 | |
|         [ProducesResponseType(StatusCodes.Status404NotFound)]
 | |
|         public async Task<IActionResult> GetByIdAsync([FromRoute] string _id, CancellationToken cancellationToken)
 | |
|         {
 | |
|             var result = await service.GetByIdAsync(_id, cancellationToken);
 | |
|             return result is not null ? Ok(result) : NotFound("Entity not found");
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Creates a new furniture base record.
 | |
|         /// </summary>
 | |
|         [HttpPost]
 | |
|         [ProducesResponseType(typeof(FurnitureBase), StatusCodes.Status201Created)]
 | |
|         public async Task<IActionResult> CreateAsync([FromBody] FurnitureBaseRequest request, CancellationToken cancellationToken)
 | |
|         {
 | |
|             var result = await service.CreateAsync(request, cancellationToken);
 | |
|             return Created("CreatedWithIdAsync", result);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Updates a furniture base record by ID.
 | |
|         /// </summary>
 | |
|         [HttpPut]
 | |
|         [Route("{id}")]
 | |
|         [ProducesResponseType(typeof(FurnitureBase), StatusCodes.Status200OK)]
 | |
|         [ProducesResponseType(StatusCodes.Status400BadRequest)]
 | |
|         public async Task<IActionResult> UpdateAsync([FromRoute] string id, [FromBody] FurnitureBase entity, CancellationToken cancellationToken)
 | |
|         {
 | |
|             if (id != entity.Id?.ToString())
 | |
|                 return BadRequest("Furniture ID mismatch");
 | |
| 
 | |
|             var result = await service.UpdateAsync(id, entity, cancellationToken);
 | |
|             return Ok(result);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Changes the status of a furniture base record.
 | |
|         /// </summary>
 | |
|         [HttpPatch]
 | |
|         [Route("{_id}/{newStatus}/ChangeStatus")]
 | |
|         [ProducesResponseType(typeof(FurnitureBase), StatusCodes.Status200OK)]
 | |
|         public async Task<IActionResult> ChangeStatusAsync([FromRoute] string _id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken)
 | |
|         {
 | |
|             var result = await service.ChangeStatusAsync(_id, newStatus, cancellationToken);
 | |
|             return Ok(result);
 | |
|         }
 | |
|     }
 | |
| }
 | 
