First version of DAL
This commit is contained in:
		| @@ -0,0 +1,97 @@ | ||||
| // *********************************************************************** | ||||
| // <copyright file="FurnitureVariantController.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 variant CRUD operations. | ||||
|     /// </summary> | ||||
|     [ApiVersion(MimeTypes.ApplicationVersion)] | ||||
|     [Route("api/v{api-version:apiVersion}/[controller]")] | ||||
|     [Produces(MimeTypes.ApplicationJson)] | ||||
|     [Consumes(MimeTypes.ApplicationJson)] | ||||
|     [ApiController] | ||||
|     [AllowAnonymous] | ||||
|     public class FurnitureVariantController(IFurnitureVariantProvider service) : ControllerBase | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Gets all furniture variant records. | ||||
|         /// </summary> | ||||
|         [HttpGet] | ||||
|         [ProducesResponseType(typeof(IEnumerable<FurnitureVariant>), StatusCodes.Status200OK)] | ||||
|         public async Task<IActionResult> GetAllVariantsByModelIdAsync([FromRoute] string modelId, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var result = await service.GetAllByModelIdAsync(modelId, cancellationToken).ConfigureAwait(false); | ||||
|  | ||||
|             if (result is null || !result.Any()) | ||||
|             { | ||||
|                 return NotFound($"No variants found for base model with ID '{modelId}'."); | ||||
|             } | ||||
|  | ||||
|             return Ok(result); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets a furniture variant record by ID. | ||||
|         /// </summary> | ||||
|         [HttpGet] | ||||
|         [Route("{id}")] | ||||
|         [ProducesResponseType(typeof(FurnitureVariant), 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 variant. | ||||
|         /// </summary> | ||||
|         [HttpPost] | ||||
|         [ProducesResponseType(typeof(FurnitureVariant), StatusCodes.Status201Created)] | ||||
|         public async Task<IActionResult> CreateAsync([FromBody] FurnitureVariantRequest request, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var result = await service.CreateAsync(request, cancellationToken); | ||||
|             return Created("CreatedWithIdAsync", result); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates a furniture variant record by ID. | ||||
|         /// </summary> | ||||
|         [HttpPut] | ||||
|         [Route("{id}")] | ||||
|         [ProducesResponseType(typeof(FurnitureVariant), StatusCodes.Status200OK)] | ||||
|         [ProducesResponseType(StatusCodes.Status400BadRequest)] | ||||
|         public async Task<IActionResult> UpdateAsync([FromRoute] string id, [FromBody] FurnitureVariant entity, CancellationToken cancellationToken) | ||||
|         { | ||||
|             if (id != entity.Id?.ToString()) | ||||
|                 return BadRequest("Furniture Variant ID mismatch"); | ||||
|  | ||||
|             var result = await service.UpdateAsync(id, entity, cancellationToken); | ||||
|             return Ok(result); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Changes the status of a furniture variant record. | ||||
|         /// </summary> | ||||
|         [HttpPatch] | ||||
|         [Route("{id}/{newStatus}/ChangeStatus")] | ||||
|         [ProducesResponseType(typeof(FurnitureVariant), 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); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user