Compare commits
	
		
			No commits in common. "af5118964001bcdaddb4798096d811f71806ccf2" and "1f9bae385c244448831ecd1b6c7c938bb57f7994" have entirely different histories.
		
	
	
		
			af51189640
			...
			1f9bae385c
		
	
		
| @ -1,12 +0,0 @@ | |||||||
| **/bin |  | ||||||
| **/obj |  | ||||||
| **/out |  | ||||||
| **/.vs |  | ||||||
| **/.idea |  | ||||||
| **/.git |  | ||||||
| **/.gitignore |  | ||||||
| **/node_modules |  | ||||||
| *.user |  | ||||||
| *.swp |  | ||||||
| *.swo |  | ||||||
| .DS_Store |  | ||||||
| @ -1,231 +0,0 @@ | |||||||
| using Asp.Versioning; |  | ||||||
| using Core.Adapters.Lib.Inventory; |  | ||||||
| using Core.Blueprint.Logging; |  | ||||||
| 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 Product operations. |  | ||||||
|     /// </summary> |  | ||||||
|     [ApiVersion(MimeTypes.ApplicationVersion)] |  | ||||||
|     [Route("api/v{api-version:apiVersion}/[controller]")]
 |  | ||||||
|     [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|     [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|     [ApiController] |  | ||||||
|     [AllowAnonymous] |  | ||||||
|     public class ProductController(IProductProvider service) : ControllerBase |  | ||||||
|     { |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the Products. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <returns>The <see cref="IEnumerable{ProductAdapter}"/> found entities.</returns> |  | ||||||
|         /// <response code="200">The products found.</response> |  | ||||||
|         /// <response code="404">The products not found error.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpGet] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(IEnumerable<ProductAdapter>), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> GetAllProductsAsync(CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.GetAllProducts(cancellationToken).ConfigureAwait(false); |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the Products by Product identifiers. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="products">The list of Product identifiers.</param> |  | ||||||
|         /// <returns>The <see cref="IEnumerable{ProductAdapter}"/> found entities.</returns> |  | ||||||
|         /// <response code="200">The Products found.</response> |  | ||||||
|         /// <response code="404">The Products not found error.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpPost] |  | ||||||
|         [Route("GetProductList")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(IEnumerable<ProductAdapter>), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> GetAllProductsByList([FromBody] string[] products, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             if (products == null || !products.Any()) |  | ||||||
|             { |  | ||||||
|                 return BadRequest("Product identifiers are required."); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             var result = await service.GetAllProductsByList(products, cancellationToken).ConfigureAwait(false); |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets the Product by identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The Product identifier.</param> |  | ||||||
|         /// <returns>The <see cref="ProductAdapter"/> found entity.</returns> |  | ||||||
|         /// <response code="200">The Product found.</response> |  | ||||||
|         /// <response code="404">The Product not found error.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpGet] |  | ||||||
|         [Route("{id}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(ProductAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> GetProductByIdAsync([FromRoute] string id, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.GetProductById(id, cancellationToken).ConfigureAwait(false); |  | ||||||
| 
 |  | ||||||
|             if (result == null) |  | ||||||
|             { |  | ||||||
|                 return NotFound("Entity not found"); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Creates a new Product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="newProduct">The Product to be added.</param> |  | ||||||
|         /// <returns>The <see cref="ProductAdapter"/> created entity.</returns> |  | ||||||
|         /// <response code="201">The Product created.</response> |  | ||||||
|         /// <response code="422">The Product could not be created.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpPost] |  | ||||||
|         [ProducesResponseType(typeof(ProductAdapter), StatusCodes.Status201Created)] |  | ||||||
|         public async Task<IActionResult> CreateProductAsync([FromBody] ProductRequest newProduct, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.CreateProduct(newProduct, cancellationToken).ConfigureAwait(false); |  | ||||||
|             return Created("CreatedWithIdAsync", result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Updates a full Product by identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The Product to update.</param> |  | ||||||
|         /// <param name="id">The Product identifier.</param> |  | ||||||
|         /// <returns>The <see cref="ProductAdapter"/> updated entity.</returns> |  | ||||||
|         /// <response code="200">The Product updated.</response> |  | ||||||
|         /// <response code="404">The Product not found.</response> |  | ||||||
|         /// <response code="422">The Product could not be updated.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpPut] |  | ||||||
|         [Route("{id}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(ProductAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> UpdateProductAsync([FromRoute] string id, ProductAdapter entity, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             if (id != entity.Id?.ToString()) |  | ||||||
|             { |  | ||||||
|                 return BadRequest("Product ID mismatch"); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             var result = await service.UpdateProduct(entity, cancellationToken).ConfigureAwait(false); |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Changes the status of the Product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The Product identifier.</param> |  | ||||||
|         /// <param name="newStatus">The new status of the Product.</param> |  | ||||||
|         /// <returns>The <see cref="ProductAdapter"/> updated entity.</returns> |  | ||||||
|         /// <response code="200">The Product updates.</response> |  | ||||||
|         /// <response code="404">The Product not found.</response> |  | ||||||
|         /// <response code="422">The Product could not be deleted.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpPatch] |  | ||||||
|         [Route("{id}/{newStatus}/ChangeStatus")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(ProductAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> ChangeProductStatus([FromRoute] string id, [FromRoute] ProductStatus newStatus, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.ChangeProductStatus(id, newStatus, cancellationToken).ConfigureAwait(false); |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Adds a tag to the product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="productId">The Product identifier.</param> |  | ||||||
|         /// <param name="tagId">The Tag identifier to add.</param> |  | ||||||
|         /// <returns>The <see cref="ProductAdapter"/> updated entity.</returns> |  | ||||||
|         /// <response code="200">The tag added to product.</response> |  | ||||||
|         /// <response code="404">The Product not found.</response> |  | ||||||
|         /// <response code="422">The tag could not be added.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpPost] |  | ||||||
|         [Route("{productId}/tags/{tagId}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(ProductAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> AddTagToProduct([FromRoute] string productId, [FromRoute] string tagId, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.AddTagToProduct(productId, tagId, cancellationToken).ConfigureAwait(false); |  | ||||||
|              |  | ||||||
|             if (result == null) |  | ||||||
|             { |  | ||||||
|                 return NotFound("Product not found"); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Removes a tag from the product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="productId">The Product identifier.</param> |  | ||||||
|         /// <param name="tagId">The Tag identifier to remove.</param> |  | ||||||
|         /// <returns>The <see cref="ProductAdapter"/> updated entity.</returns> |  | ||||||
|         /// <response code="200">The tag removed from product.</response> |  | ||||||
|         /// <response code="404">The Product not found.</response> |  | ||||||
|         /// <response code="422">The tag could not be removed.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpDelete] |  | ||||||
|         [Route("{productId}/tags/{tagId}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(ProductAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> RemoveTagFromProduct([FromRoute] string productId, [FromRoute] string tagId, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.RemoveTagFromProduct(productId, tagId, cancellationToken).ConfigureAwait(false); |  | ||||||
|              |  | ||||||
|             if (result == null) |  | ||||||
|             { |  | ||||||
|                 return NotFound("Product not found"); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a Product by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The Product MongoDB identifier.</param> |  | ||||||
|         /// <returns>The result of the delete operation.</returns> |  | ||||||
|         /// <response code="200">The Product deleted successfully.</response> |  | ||||||
|         /// <response code="404">The Product not found.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpDelete] |  | ||||||
|         [Route("{id}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> DeleteProduct([FromRoute] string id, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.DeleteProduct(id, cancellationToken).ConfigureAwait(false); |  | ||||||
|              |  | ||||||
|             if (!result) |  | ||||||
|             { |  | ||||||
|                 return NotFound("Product not found"); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @ -186,27 +186,5 @@ namespace Core.Inventory.DAL.API.Controllers | |||||||
|             var result = await service.RemoveParentTag(tagId, parentTagId, cancellationToken).ConfigureAwait(false); ; |             var result = await service.RemoveParentTag(tagId, parentTagId, cancellationToken).ConfigureAwait(false); ; | ||||||
|             return Ok(result); |             return Ok(result); | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a Tag by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The Tag MongoDB identifier.</param> |  | ||||||
|         /// <returns>The result of the delete operation.</returns> |  | ||||||
|         /// <response code="200">The Tag deleted successfully.</response> |  | ||||||
|         /// <response code="404">The Tag not found.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpDelete] |  | ||||||
|         [Route("{id}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(TagAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> DeleteTag([FromRoute] string id, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.DeleteTag(id, cancellationToken).ConfigureAwait(false); |  | ||||||
| 
 |  | ||||||
|             if (result is null) return NotFound("Tag not found"); |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,176 +0,0 @@ | |||||||
| 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 TagOverride authentication. |  | ||||||
|     /// </summary> |  | ||||||
|     [ApiVersion(MimeTypes.ApplicationVersion)] |  | ||||||
|     [Route("api/v{api-version:apiVersion}/[controller]")]
 |  | ||||||
|     [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|     [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|     [ApiController] |  | ||||||
|     [AllowAnonymous] |  | ||||||
|     public class TagOverrideController(ITagOverrideProvider service) : ControllerBase |  | ||||||
|     { |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the TagOverrides. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <returns>The <see cref="IEnumerable{TagOverrideAdapter}"/> found entities.</returns> |  | ||||||
|         /// <response code="200">The TagOverrides found.</response> |  | ||||||
|         /// <response code="404">The TagOverrides not found error.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpGet] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(IEnumerable<TagOverrideAdapter>), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> GetAllTagOverridesAsync(CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.GetAllTagOverrides(cancellationToken).ConfigureAwait(false); |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the TagOverrides by TagOverride identifiers. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="TagOverrides">The list of TagOverride identifiers.</param> |  | ||||||
|         /// <returns>The <see cref="IEnumerable{TagOverrideAdapter}"/> found entities.</returns> |  | ||||||
|         /// <response code="200">The TagOverrides found.</response> |  | ||||||
|         /// <response code="404">The TagOverrides not found error.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpPost] |  | ||||||
|         [Route("GetTagOverrideList")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(IEnumerable<TagOverrideAdapter>), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> GetAllTagOverridesByList([FromBody] string[] tagOverrides, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             if (tagOverrides == null || !tagOverrides.Any()) |  | ||||||
|             { |  | ||||||
|                 return BadRequest("TagOverride identifiers are required."); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             var result = await service.GetAllTagOverridesByList(tagOverrides, cancellationToken).ConfigureAwait(false); |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets the TagOverride by identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The TagOverride identifier.</param> |  | ||||||
|         /// <returns>The <see cref="TagOverrideAdapter"/> found entity.</returns> |  | ||||||
|         /// <response code="200">The TagOverride found.</response> |  | ||||||
|         /// <response code="404">The TagOverride not found error.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpGet] |  | ||||||
|         [Route("{id}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(TagOverrideAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> GetTagOverrideByIdAsync([FromRoute] string id, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.GetTagOverrideById(id, cancellationToken).ConfigureAwait(false); |  | ||||||
| 
 |  | ||||||
|             if (result == null) |  | ||||||
|             { |  | ||||||
|                 return NotFound("Entity not found"); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Creates a new TagOverride. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="newTagOverride">The TagOverride to be added.</param> |  | ||||||
|         /// <returns>The <see cref="TagOverrideAdapter"/> created entity.</returns> |  | ||||||
|         /// <response code="201">The TagOverride created.</response> |  | ||||||
|         /// <response code="422">The TagOverride could not be created.</response> |  | ||||||
|         /// <response code="500">The service internal e|ror.</response> |  | ||||||
|         [HttpPost] |  | ||||||
|         [ProducesResponseType(typeof(TagOverrideAdapter), StatusCodes.Status201Created)] |  | ||||||
|         public async Task<IActionResult> CreateTagOverrideAsync([FromBody] TagOverrideRequest newTagOverride, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.CreateTagOverride(newTagOverride, cancellationToken).ConfigureAwait(false); |  | ||||||
|             return Created("CreatedWithIdAsync", result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Updates a full TagOverride by identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The TagOverride to update.</param> |  | ||||||
|         /// <param name="id">The TagOverride identifier.</param> |  | ||||||
|         /// <returns>The <see cref="TagOverrideAdapter"/> updated entity.</returns> |  | ||||||
|         /// <response code="200">The TagOverride updated.</response> |  | ||||||
|         /// <response code="404">The TagOverride not found.</response> |  | ||||||
|         /// <response code="422">The TagOverride could not be updated.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpPut] |  | ||||||
|         [Route("{id}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(TagOverrideAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> UpdateTagOverrideAsync([FromRoute] string id, TagOverrideAdapter entity, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             if (id != entity.Id?.ToString()) |  | ||||||
|             { |  | ||||||
|                 return BadRequest("TagOverride ID mismatch"); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             var result = await service.UpdateTagOverride(entity, cancellationToken).ConfigureAwait(false); |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Changes the status of the TagOverride. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The TagOverride identifier.</param> |  | ||||||
|         /// <param name="newStatus">The new status of the TagOverride.</param> |  | ||||||
|         /// <returns>The <see cref="TagOverrideAdapter"/> updated entity.</returns> |  | ||||||
|         /// <response code="200">The TagOverride updates.</response> |  | ||||||
|         /// <response code="404">The TagOverride not found.</response> |  | ||||||
|         /// <response code="422">The TagOverride could not be deleted.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpPatch] |  | ||||||
|         [Route("{id}/{newStatus}/ChangeStatus")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(TagOverrideAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> ChangeTagOverrideStatus([FromRoute] string id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.ChangeTagOverrideStatus(id, newStatus, cancellationToken).ConfigureAwait(false); |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a TagOverride by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The TagOverride MongoDB identifier.</param> |  | ||||||
|         /// <returns>The result of the delete operation.</returns> |  | ||||||
|         /// <response code="200">The TagOverride deleted successfully.</response> |  | ||||||
|         /// <response code="404">The TagOverride not found.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpDelete] |  | ||||||
|         [Route("{id}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(TagOverrideAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> DeleteTagOverride([FromRoute] string id, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.DeleteTagOverride(id, cancellationToken).ConfigureAwait(false); |  | ||||||
| 
 |  | ||||||
|             if (result is null) return NotFound("TagOverride not found"); |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -150,27 +150,5 @@ namespace Core.Inventory.DAL.API.Controllers | |||||||
|             var result = await service.ChangeTagTypeStatus(id, newStatus, cancellationToken).ConfigureAwait(false); |             var result = await service.ChangeTagTypeStatus(id, newStatus, cancellationToken).ConfigureAwait(false); | ||||||
|             return Ok(result); |             return Ok(result); | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a TagType by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The TagType MongoDB identifier.</param> |  | ||||||
|         /// <returns>The result of the delete operation.</returns> |  | ||||||
|         /// <response code="200">The TagType deleted successfully.</response> |  | ||||||
|         /// <response code="404">The TagType not found.</response> |  | ||||||
|         /// <response code="500">The service internal error.</response> |  | ||||||
|         [HttpDelete] |  | ||||||
|         [Route("{id}")] |  | ||||||
|         [Consumes(MimeTypes.ApplicationJson)] |  | ||||||
|         [Produces(MimeTypes.ApplicationJson)] |  | ||||||
|         [ProducesResponseType(typeof(TagTypeAdapter), StatusCodes.Status200OK)] |  | ||||||
|         public async Task<IActionResult> DeleteTagType([FromRoute] string id, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var result = await service.DeleteTagType(id, cancellationToken).ConfigureAwait(false); |  | ||||||
| 
 |  | ||||||
|             if (result is null) return NotFound("TagType not found"); |  | ||||||
| 
 |  | ||||||
|             return Ok(result); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" /> |     <PackageReference Include="Asp.Versioning.Mvc.ApiExplorer" Version="8.1.0" /> | ||||||
|     <PackageReference Include="Core.Blueprint.Logging" Version="1.0.0" /> |     <PackageReference Include="Core.Blueprint.Logging" Version="1.0.1" /> | ||||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,52 +0,0 @@ | |||||||
| using MongoDB.Bson; |  | ||||||
| using MongoDB.Bson.Serialization.Attributes; |  | ||||||
| using System.Text.Json.Serialization; |  | ||||||
| 
 |  | ||||||
| namespace Core.Inventory.Domain.Contexts.Inventory.Request |  | ||||||
| { |  | ||||||
|     /// <summary> |  | ||||||
|     /// Data transfer object (DTO) for adding product. |  | ||||||
|     /// </summary> |  | ||||||
|     public class ProductRequest |  | ||||||
|     { |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets or sets the tenantId of the product. |  | ||||||
|         /// </summary> |  | ||||||
|         [BsonElement("tenantId")] |  | ||||||
|         [BsonRepresentation(BsonType.String)] |  | ||||||
|         [JsonPropertyName("tenantId")] |  | ||||||
|         public string TenantId { get; set; } = null!; |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets or sets the name of the product. |  | ||||||
|         /// </summary> |  | ||||||
|         [BsonElement("productName")] |  | ||||||
|         [BsonRepresentation(BsonType.String)] |  | ||||||
|         [JsonPropertyName("productName")] |  | ||||||
|         public string ProductName { get; set; } = null!; |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets or sets the description of the product. |  | ||||||
|         /// </summary> |  | ||||||
|         [BsonElement("description")] |  | ||||||
|         [BsonRepresentation(BsonType.String)] |  | ||||||
|         [JsonPropertyName("description")] |  | ||||||
|         public string Description { get; set; } = null!; |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets or sets the productStatus of the product. |  | ||||||
|         /// </summary> |  | ||||||
|         [BsonElement("productStatus")] |  | ||||||
|         [BsonRepresentation(BsonType.String)] |  | ||||||
|         [JsonPropertyName("productStatus")] |  | ||||||
|         public string ProductStatus { get; set; } = null!; |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets or sets the list of Tag Ids associated with this product. |  | ||||||
|         /// </summary> |  | ||||||
|         [BsonElement("tagIds")] |  | ||||||
|         [BsonRepresentation(BsonType.ObjectId)] |  | ||||||
|         [JsonPropertyName("tagIds")] |  | ||||||
|         public List<string> TagIds { get; set; } = new List<string>(); |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @ -1,36 +0,0 @@ | |||||||
| using MongoDB.Bson; |  | ||||||
| using MongoDB.Bson.Serialization.Attributes; |  | ||||||
| using System.Text.Json.Serialization; |  | ||||||
| 
 |  | ||||||
| namespace Core.Inventory.Domain.Contexts.Inventory.Request |  | ||||||
| { |  | ||||||
|     /// <summary> |  | ||||||
|     /// Data transfer object (DTO) for adding TagOverride. |  | ||||||
|     /// </summary> |  | ||||||
|     public class TagOverrideRequest |  | ||||||
|     { |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets or sets the tenantId of the TagOverride. |  | ||||||
|         /// </summary> |  | ||||||
|         [BsonElement("tenantId")] |  | ||||||
|         [BsonRepresentation(BsonType.String)] |  | ||||||
|         [JsonPropertyName("tenantId")] |  | ||||||
|         public string TenantId { get; set; } = null!; |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets or sets the baseTagId of the TagOverride. |  | ||||||
|         /// </summary> |  | ||||||
|         [BsonElement("baseTagId")] |  | ||||||
|         [BsonRepresentation(BsonType.String)] |  | ||||||
|         [JsonPropertyName("baseTagId")] |  | ||||||
|         public string BaseTagId { get; set; } = null!; |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets or sets the overrideTagId of the TagOverride. |  | ||||||
|         /// </summary> |  | ||||||
|         [BsonElement("overrideTagId")] |  | ||||||
|         [BsonRepresentation(BsonType.String)] |  | ||||||
|         [JsonPropertyName("overrideTagId")] |  | ||||||
|         public string OverrideTagId { get; set; } = null!; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -7,7 +7,7 @@ | |||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="Lib.Architecture.BuildingBlocks" Version="1.0.0" /> |     <PackageReference Include="BuildingBlocks.Library" Version="1.0.0" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
| </Project> | </Project> | ||||||
|  | |||||||
| @ -1,85 +0,0 @@ | |||||||
| using Core.Adapters.Lib.Inventory; |  | ||||||
| using Core.Blueprint.Mongo; |  | ||||||
| using Core.Inventory.Domain.Contexts.Inventory.Request; |  | ||||||
| 
 |  | ||||||
| namespace Core.Inventory.Provider.Contracts |  | ||||||
| { |  | ||||||
|     public interface IProductProvider |  | ||||||
|     { |  | ||||||
|         /// <summary> |  | ||||||
|         /// Creates a new Product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The Product to be created.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<ProductAdapter> CreateProduct(ProductRequest newProduct, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets a Product by identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The Product identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<ProductAdapter> GetProductById(string _id, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the products. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <returns>A <see cref="{Task{IEnumerable{ProductAdapter}}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<IEnumerable<ProductAdapter>> GetAllProducts(CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the products by products identifier list. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="products">The list of products identifiers.</param> |  | ||||||
|         /// <returns>A <see cref="Task{IEnumerable{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<IEnumerable<ProductAdapter>> GetAllProductsByList(string[] products, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Changes the status of the product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The product identifier.</param> |  | ||||||
|         /// <param name="newStatus">The new status of the product.</param> |  | ||||||
|         /// <returns>The <see cref="ProductAdapter"/> updated entity.</returns> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<ProductAdapter> ChangeProductStatus(string id, ProductStatus newStatus, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Updates a Product by id. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The Product to be updated.</param> |  | ||||||
|         /// <param name="id">The Product identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<ProductAdapter> UpdateProduct(ProductAdapter entity, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Adds a tag to the product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="productId">The ID of the product.</param> |  | ||||||
|         /// <param name="tagId">The ID of the tag to add.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<ProductAdapter> AddTagToProduct(string productId, string tagId, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Removes a tag from the product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="productId">The ID of the product.</param> |  | ||||||
|         /// <param name="tagId">The ID of the tag to remove.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<ProductAdapter> RemoveTagFromProduct(string productId, string tagId, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a Product by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="productId">The Product MongoDB identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{bool}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<bool> DeleteProduct(string productId, CancellationToken cancellationToken); |  | ||||||
|     } |  | ||||||
| }  |  | ||||||
| @ -1,67 +0,0 @@ | |||||||
| using Core.Adapters.Lib; |  | ||||||
| using Core.Blueprint.Mongo; |  | ||||||
| using Core.Inventory.Domain.Contexts.Inventory.Request; |  | ||||||
| 
 |  | ||||||
| namespace Core.Inventory.Provider.Contracts |  | ||||||
| { |  | ||||||
|     public interface ITagOverrideProvider |  | ||||||
|     { |  | ||||||
|         /// <summary> |  | ||||||
|         /// Creates a new TagOverride. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The TagOverride to be created.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<TagOverrideAdapter> CreateTagOverride(TagOverrideRequest newTagOverride, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets an TagOverride by identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The TagOverride identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<TagOverrideAdapter> GetTagOverrideById(string _id, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the TagOverrides. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <returns>A <see cref="{Task{IEnumerbale{TagOverrideAdapter}}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<IEnumerable<TagOverrideAdapter>> GetAllTagOverrides(CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the TagOverrides by TagOverrides identifier list. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="TagOverrides">The list of TagOverrides identifiers.</param> |  | ||||||
|         /// <returns>A <see cref="Task{IEnumerable{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<IEnumerable<TagOverrideAdapter>> GetAllTagOverridesByList(string[] tagOverrides, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Changes the status of the TagOverride. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The TagOverride identifier.</param> |  | ||||||
|         /// <param name="newStatus">The new status of the TagOverride.</param> |  | ||||||
|         /// <returns>The <see cref="TagOverrideAdapter"/> updated entity.</returns> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<TagOverrideAdapter> ChangeTagOverrideStatus(string id, StatusEnum newStatus, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Updates a TagOverride by id. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The TagOverride to be updated.</param> |  | ||||||
|         /// <param name="id">The TagOverride identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<TagOverrideAdapter> UpdateTagOverride(TagOverrideAdapter entity, CancellationToken cancellationToken); |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a TagOverride by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="tagOverrideId">The TagOverride MongoDB identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<TagOverrideAdapter> DeleteTagOverride(string tagOverrideId, CancellationToken cancellationToken); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -71,13 +71,5 @@ namespace Core.Inventory.Provider.Contracts | |||||||
|         /// <param name="parentTagId">The identifier of the parentTag to add.</param> |         /// <param name="parentTagId">The identifier of the parentTag to add.</param> | ||||||
|         /// <returns>A <see cref="Task{TagAdapter}"/> representing the asynchronous operation, with the updated tag object.</returns> |         /// <returns>A <see cref="Task{TagAdapter}"/> representing the asynchronous operation, with the updated tag object.</returns> | ||||||
|         ValueTask<TagAdapter> RemoveParentTag(string tagId, string parentTagId, CancellationToken cancellationToken); |         ValueTask<TagAdapter> RemoveParentTag(string tagId, string parentTagId, CancellationToken cancellationToken); | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a Tag by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="TagId">The Tag MongoDB identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<TagAdapter> DeleteTag(string tagId, CancellationToken cancellationToken); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -55,13 +55,5 @@ namespace Core.Inventory.Provider.Contracts | |||||||
|         /// <returns>A <see cref="{Task{TagTypeAdapter}}"/> representing |         /// <returns>A <see cref="{Task{TagTypeAdapter}}"/> representing | ||||||
|         /// the asynchronous execution of the service.</returns> |         /// the asynchronous execution of the service.</returns> | ||||||
|         ValueTask<TagTypeAdapter> UpdateTagType(TagTypeAdapter entity, CancellationToken cancellationToken); |         ValueTask<TagTypeAdapter> UpdateTagType(TagTypeAdapter entity, CancellationToken cancellationToken); | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a TagType by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="tagTypeId">The TagType MongoDB identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagTypeAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         ValueTask<TagTypeAdapter> DeleteTagType(string tagTypeId, CancellationToken cancellationToken); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -7,9 +7,9 @@ | |||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
| 
 | 
 | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="Core.Adapters.Lib" Version="1.0.0" /> |     <PackageReference Include="Adapters.Lib" Version="1.0.10" /> | ||||||
|     <PackageReference Include="Core.Blueprint.Mongo" Version="1.0.0" /> |     <PackageReference Include="Core.Blueprint.Mongo" Version="1.0.0" /> | ||||||
|     <PackageReference Include="Core.Blueprint.Redis" Version="1.0.0" /> |     <PackageReference Include="Core.Blueprint.Redis" Version="1.0.2" /> | ||||||
|     <PackageReference Include="Mapster" Version="7.4.0" /> |     <PackageReference Include="Mapster" Version="7.4.0" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,213 +0,0 @@ | |||||||
| using Core.Adapters.Lib.Inventory; |  | ||||||
| using Core.Blueprint.Mongo; |  | ||||||
| using Core.Blueprint.Redis; |  | ||||||
| using Core.Blueprint.Redis.Helpers; |  | ||||||
| using Core.Inventory.Domain.Contexts.Inventory.Request; |  | ||||||
| using Core.Inventory.Provider.Contracts; |  | ||||||
| using Mapster; |  | ||||||
| using Microsoft.Extensions.Options; |  | ||||||
| using MongoDB.Driver; |  | ||||||
| using MongoDB.Bson; |  | ||||||
| 
 |  | ||||||
| namespace Core.Inventory.Provider.Providers.Inventory |  | ||||||
| { |  | ||||||
|     /// <summary> |  | ||||||
|     /// Handles all services and business rules related to <see cref="ProductAdapter"/>. |  | ||||||
|     /// </summary> |  | ||||||
|     public class ProductProvider : IProductProvider |  | ||||||
|     { |  | ||||||
|         private readonly CollectionRepository<ProductAdapter> repository; |  | ||||||
|         private readonly CacheSettings cacheSettings; |  | ||||||
|         private readonly IRedisCacheProvider cacheProvider; |  | ||||||
| 
 |  | ||||||
|         public ProductProvider(CollectionRepository<ProductAdapter> repository, |  | ||||||
|             IRedisCacheProvider cacheProvider, |  | ||||||
|             IOptions<CacheSettings> cacheSettings) |  | ||||||
|         { |  | ||||||
|             this.repository = repository; |  | ||||||
|             this.repository.CollectionInitialization(); |  | ||||||
|             this.cacheSettings = cacheSettings.Value; |  | ||||||
|             this.cacheProvider = cacheProvider; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Creates a new Product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The Product to be created.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<ProductAdapter> CreateProduct(ProductRequest newProduct, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var productCollection = newProduct.Adapt<ProductAdapter>(); |  | ||||||
| 
 |  | ||||||
|             await repository.InsertOneAsync(productCollection); |  | ||||||
| 
 |  | ||||||
|             return productCollection; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets a Product by identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The Product identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<ProductAdapter> GetProductById(string _id, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetProductById", _id); |  | ||||||
|             var cachedData = await cacheProvider.GetAsync<ProductAdapter>(cacheKey); |  | ||||||
| 
 |  | ||||||
|             if (cachedData is not null) { return cachedData; } |  | ||||||
| 
 |  | ||||||
|             var product = await repository.FindByIdAsync(_id); |  | ||||||
| 
 |  | ||||||
|             await cacheProvider.SetAsync(cacheKey, product); |  | ||||||
| 
 |  | ||||||
|             return product; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the Products. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <returns>A <see cref="{Task{IEnumerable{ProductAdapter}}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<IEnumerable<ProductAdapter>> GetAllProducts(CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetProducts"); |  | ||||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<ProductAdapter>>(cacheKey) ?? []; |  | ||||||
| 
 |  | ||||||
|             if (cachedData.Any()) return cachedData; |  | ||||||
| 
 |  | ||||||
|             var products = await repository.AsQueryable(); |  | ||||||
| 
 |  | ||||||
|             await cacheProvider.SetAsync(cacheKey, products); |  | ||||||
| 
 |  | ||||||
|             return products; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the Products by Products identifier list. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="products">The list of Products identifiers.</param> |  | ||||||
|         /// <returns>A <see cref="Task{IEnumerable{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<IEnumerable<ProductAdapter>> GetAllProductsByList(string[] products, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllProductsByList", products); |  | ||||||
| 
 |  | ||||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<ProductAdapter>>(cacheKey) ?? []; |  | ||||||
| 
 |  | ||||||
|             if (cachedData.Any()) return cachedData; |  | ||||||
| 
 |  | ||||||
|             var builder = Builders<ProductAdapter>.Filter; |  | ||||||
|             var filters = new List<FilterDefinition<ProductAdapter>>(); |  | ||||||
| 
 |  | ||||||
|             if (products != null || !products.Any()) |  | ||||||
|             { |  | ||||||
|                 filters.Add(builder.In(x => x._Id, products)); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             var finalFilter = filters.Count != 0 ? builder.And(filters) : builder.Empty; |  | ||||||
| 
 |  | ||||||
|             var productsList = await repository.FilterByMongoFilterAsync(finalFilter); |  | ||||||
| 
 |  | ||||||
|             await cacheProvider.SetAsync(cacheKey, productsList); |  | ||||||
| 
 |  | ||||||
|             return productsList; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Changes the status of the Product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The Product identifier.</param> |  | ||||||
|         /// <param name="newStatus">The new status of the Product.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<ProductAdapter> ChangeProductStatus(string id, ProductStatus newStatus, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var entity = await repository.FindByIdAsync(id); |  | ||||||
|             entity.ProductStatus = newStatus; |  | ||||||
| 
 |  | ||||||
|             await repository.ReplaceOneAsync(entity); |  | ||||||
| 
 |  | ||||||
|             return entity; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Updates a Product by id. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The Product to be updated.</param> |  | ||||||
|         /// <param name="id">The Product identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<ProductAdapter> UpdateProduct(ProductAdapter entity, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             await repository.ReplaceOneAsync(entity); |  | ||||||
| 
 |  | ||||||
|             return entity; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Adds a tag to the product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="productId">The ID of the product.</param> |  | ||||||
|         /// <param name="tagId">The ID of the tag to add.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<ProductAdapter> AddTagToProduct(string productId, string tagId, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var product = await repository.FindByIdAsync(productId); |  | ||||||
|              |  | ||||||
|             if (product != null) |  | ||||||
|             { |  | ||||||
|                 var objectId = ObjectId.Parse(tagId); |  | ||||||
|                 if (!product.TagIds.Contains(objectId)) |  | ||||||
|                 { |  | ||||||
|                     product.TagIds.Add(objectId); |  | ||||||
|                     await repository.ReplaceOneAsync(product); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return product; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Removes a tag from the product. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="productId">The ID of the product.</param> |  | ||||||
|         /// <param name="tagId">The ID of the tag to remove.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{ProductAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<ProductAdapter> RemoveTagFromProduct(string productId, string tagId, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var product = await repository.FindByIdAsync(productId); |  | ||||||
| 
 |  | ||||||
|             if (product != null) |  | ||||||
|             { |  | ||||||
|                 var objectId = ObjectId.Parse(tagId); |  | ||||||
|                 product.TagIds.Remove(objectId); |  | ||||||
|                 await repository.ReplaceOneAsync(product); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return product; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a Product by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="productId">The Product MongoDB identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{bool}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<bool> DeleteProduct(string productId, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             try |  | ||||||
|             { |  | ||||||
|                 await repository.DeleteByIdAsync(productId); |  | ||||||
|                 return true; |  | ||||||
|             } |  | ||||||
|             catch (Exception) |  | ||||||
|             { |  | ||||||
|                 throw; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,168 +0,0 @@ | |||||||
| using Core.Adapters.Lib; |  | ||||||
| using Core.Blueprint.Mongo; |  | ||||||
| using Core.Blueprint.Redis; |  | ||||||
| using Core.Blueprint.Redis.Helpers; |  | ||||||
| using Core.Inventory.Domain.Contexts.Inventory.Request; |  | ||||||
| using Core.Inventory.Provider.Contracts; |  | ||||||
| using Mapster; |  | ||||||
| using Microsoft.Extensions.Options; |  | ||||||
| using MongoDB.Driver; |  | ||||||
| 
 |  | ||||||
| namespace Core.Inventory.Provider.Providers.Inventory |  | ||||||
| { |  | ||||||
|     /// <summary> |  | ||||||
|     /// Handles all services and business rules related to <see cref="TagOverrideAdapter"/>. |  | ||||||
|     /// </summary> |  | ||||||
|     public class TagOverrideProvider : ITagOverrideProvider |  | ||||||
|     { |  | ||||||
|         private readonly CollectionRepository<TagOverrideAdapter> repository; |  | ||||||
|         private readonly CacheSettings cacheSettings; |  | ||||||
|         private readonly IRedisCacheProvider cacheProvider; |  | ||||||
| 
 |  | ||||||
|         public TagOverrideProvider(CollectionRepository<TagOverrideAdapter> repository, |  | ||||||
|             IRedisCacheProvider cacheProvider, |  | ||||||
|             IOptions<CacheSettings> cacheSettings) |  | ||||||
|         { |  | ||||||
|             this.repository = repository; |  | ||||||
|             this.repository.CollectionInitialization(); |  | ||||||
|             this.cacheSettings = cacheSettings.Value; |  | ||||||
|             this.cacheProvider = cacheProvider; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Creates a new TagOverride. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The TagOverride to be created.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<TagOverrideAdapter> CreateTagOverride(TagOverrideRequest newTagOverride, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var tagOverrideCollection = newTagOverride.Adapt<TagOverrideAdapter>(); |  | ||||||
| 
 |  | ||||||
|             await repository.InsertOneAsync(tagOverrideCollection); |  | ||||||
| 
 |  | ||||||
|             return tagOverrideCollection; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets an TagOverride by identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The TagOverride identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns>0 |  | ||||||
|         public async ValueTask<TagOverrideAdapter> GetTagOverrideById(string _id, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetTagOverrideById", _id); |  | ||||||
|             var cachedData = await cacheProvider.GetAsync<TagOverrideAdapter>(cacheKey); |  | ||||||
| 
 |  | ||||||
|             if (cachedData is not null) { return cachedData; } |  | ||||||
| 
 |  | ||||||
|             var TagOverride = await repository.FindByIdAsync(_id); |  | ||||||
| 
 |  | ||||||
|             await cacheProvider.SetAsync(cacheKey, TagOverride); |  | ||||||
| 
 |  | ||||||
|             return TagOverride; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the TagOverrides. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <returns>A <see cref="{Task{IEnumerbale{TagOverrideAdapter}}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<IEnumerable<TagOverrideAdapter>> GetAllTagOverrides(CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetTagOverrides"); |  | ||||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<TagOverrideAdapter>>(cacheKey) ?? []; |  | ||||||
| 
 |  | ||||||
|             if (cachedData.Any()) return cachedData; |  | ||||||
| 
 |  | ||||||
|             var TagOverrides = await repository.AsQueryable(); |  | ||||||
| 
 |  | ||||||
|             await cacheProvider.SetAsync(cacheKey, TagOverrides); |  | ||||||
| 
 |  | ||||||
|             return TagOverrides; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Gets all the TagOverrides by TagOverrides identifier list. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="TagOverrides">The list of TagOverrides identifiers.</param> |  | ||||||
|         /// <returns>A <see cref="Task{IEnumerable{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<IEnumerable<TagOverrideAdapter>> GetAllTagOverridesByList(string[] tagOverrides, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllTagOverridesByList", tagOverrides); |  | ||||||
| 
 |  | ||||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<TagOverrideAdapter>>(cacheKey) ?? []; |  | ||||||
| 
 |  | ||||||
|             if (cachedData.Any()) return cachedData; |  | ||||||
| 
 |  | ||||||
|             var builder = Builders<TagOverrideAdapter>.Filter; |  | ||||||
|             var filters = new List<FilterDefinition<TagOverrideAdapter>>(); |  | ||||||
| 
 |  | ||||||
|             if (tagOverrides != null || !tagOverrides.Any()) |  | ||||||
|             { |  | ||||||
|                 filters.Add(builder.In(x => x._Id, tagOverrides)); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             var finalFilter = filters.Any() ? builder.And(filters) : builder.Empty; |  | ||||||
| 
 |  | ||||||
|             var TagOverridesList = await repository.FilterByMongoFilterAsync(finalFilter); |  | ||||||
| 
 |  | ||||||
|             await cacheProvider.SetAsync(cacheKey, TagOverridesList); |  | ||||||
| 
 |  | ||||||
|             return TagOverridesList; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Changes the status of the TagOverride. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="id">The TagOverride identifier.</param> |  | ||||||
|         /// <param name="newStatus">The new status of the TagOverride.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<TagOverrideAdapter> ChangeTagOverrideStatus(string id, StatusEnum newStatus, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             var entity = await repository.FindByIdAsync(id); |  | ||||||
|             entity.Status = newStatus; |  | ||||||
| 
 |  | ||||||
|             await repository.ReplaceOneAsync(entity); |  | ||||||
| 
 |  | ||||||
|             return entity; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Updates a TagOverride by id. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="entity">The TagOverride to be updated.</param> |  | ||||||
|         /// <param name="id">The TagOverride identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<TagOverrideAdapter> UpdateTagOverride(TagOverrideAdapter entity, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             await repository.ReplaceOneAsync(entity); |  | ||||||
| 
 |  | ||||||
|             return entity; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a TagOverride by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="tagOverrideId">The TagOverride MongoDB identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagOverrideAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<TagOverrideAdapter> DeleteTagOverride(string tagOverrideId, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             try |  | ||||||
|             { |  | ||||||
|                 var entity = await repository.DeleteOneAsync(doc => doc._Id == tagOverrideId); |  | ||||||
|                 return entity; |  | ||||||
|             } |  | ||||||
|             catch (Exception) |  | ||||||
|             { |  | ||||||
|                 throw; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -188,24 +188,5 @@ namespace Core.Inventory.Provider.Providers.Inventory | |||||||
| 
 | 
 | ||||||
|             return tag; |             return tag; | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a Tag by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="tagId">The Tag MongoDB identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<TagAdapter> DeleteTag(string tagId, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             try |  | ||||||
|             { |  | ||||||
|                 var entity = await repository.DeleteOneAsync(doc => doc._Id == tagId); |  | ||||||
|                 return entity; |  | ||||||
|             } |  | ||||||
|             catch (Exception) |  | ||||||
|             { |  | ||||||
|                 throw; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -7,7 +7,6 @@ using Core.Inventory.Provider.Contracts; | |||||||
| using Mapster; | using Mapster; | ||||||
| using Microsoft.Extensions.Options; | using Microsoft.Extensions.Options; | ||||||
| using MongoDB.Driver; | using MongoDB.Driver; | ||||||
| using System.Security.Cryptography; |  | ||||||
| 
 | 
 | ||||||
| namespace Core.Inventory.Provider.Providers.Inventory | namespace Core.Inventory.Provider.Providers.Inventory | ||||||
| { | { | ||||||
| @ -146,24 +145,5 @@ namespace Core.Inventory.Provider.Providers.Inventory | |||||||
| 
 | 
 | ||||||
|             return entity; |             return entity; | ||||||
|         } |         } | ||||||
| 
 |  | ||||||
|         /// <summary> |  | ||||||
|         /// Deletes a TagType by its MongoDB identifier. |  | ||||||
|         /// </summary> |  | ||||||
|         /// <param name="tagTypeId">The TagType MongoDB identifier.</param> |  | ||||||
|         /// <returns>A <see cref="{Task{TagTypeAdapter}}"/> representing |  | ||||||
|         /// the asynchronous execution of the service.</returns> |  | ||||||
|         public async ValueTask<TagTypeAdapter> DeleteTagType(string tagTypeId, CancellationToken cancellationToken) |  | ||||||
|         { |  | ||||||
|             try |  | ||||||
|             { |  | ||||||
|                 var entity = await repository.DeleteOneAsync(doc => doc._Id == tagTypeId); |  | ||||||
|                 return entity; |  | ||||||
|             } |  | ||||||
|             catch (Exception) |  | ||||||
|             { |  | ||||||
|                 throw; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,4 @@ | |||||||
| using Core.Adapters.Lib.Inventory; | using Core.Adapters.Lib; | ||||||
| using Core.Adapters.Lib; |  | ||||||
| using Core.Blueprint.Mongo; | using Core.Blueprint.Mongo; | ||||||
| using Core.Inventory.Provider.Contracts; | using Core.Inventory.Provider.Contracts; | ||||||
| using Core.Inventory.Provider.Providers.Inventory; | using Core.Inventory.Provider.Providers.Inventory; | ||||||
| @ -24,12 +23,6 @@ namespace Core.Inventory.Provider | |||||||
|             services.AddScoped<ITagProvider, TagProvider>(); |             services.AddScoped<ITagProvider, TagProvider>(); | ||||||
|             services.AddScoped<CollectionRepository<TagAdapter>>(); |             services.AddScoped<CollectionRepository<TagAdapter>>(); | ||||||
| 
 | 
 | ||||||
|             services.AddScoped<ITagOverrideProvider, TagOverrideProvider>(); |  | ||||||
|             services.AddScoped<CollectionRepository<TagOverrideAdapter>>(); |  | ||||||
| 
 |  | ||||||
|             services.AddScoped<IProductProvider, ProductProvider>(); |  | ||||||
|             services.AddScoped<CollectionRepository<ProductAdapter>>(); |  | ||||||
| 
 |  | ||||||
|             return services; |             return services; | ||||||
| 
 | 
 | ||||||
|         } |         } | ||||||
|  | |||||||
							
								
								
									
										32
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								Dockerfile
									
									
									
									
									
								
							| @ -1,32 +0,0 @@ | |||||||
| # ===== Build stage ===== |  | ||||||
| FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build |  | ||||||
| WORKDIR /src |  | ||||||
| 
 |  | ||||||
| # Copia nuget.config de la raíz (con BaGet + nuget.org) |  | ||||||
| COPY nuget.config ./ |  | ||||||
| 
 |  | ||||||
| # Copia SOLO los .csproj que DAL necesita (para cache de restore) |  | ||||||
| COPY Core.Inventory.DAL.API/Core.Inventory.DAL.API.csproj Core.Inventory.DAL.API/ |  | ||||||
| COPY Core.Inventory.Domain/Core.Inventory.Domain.csproj Core.Inventory.Domain/ |  | ||||||
| COPY Core.Inventory.Provider/Core.Inventory.Provider.csproj Core.Inventory.Provider/ |  | ||||||
| 
 |  | ||||||
| # Restaura usando nuget.config |  | ||||||
| RUN dotnet restore Core.Inventory.DAL.API/Core.Inventory.DAL.API.csproj --configfile ./nuget.config |  | ||||||
| 
 |  | ||||||
| # Copia el resto del código |  | ||||||
| COPY . . |  | ||||||
| 
 |  | ||||||
| # Publica artefactos listos para runtime |  | ||||||
| RUN dotnet publish Core.Inventory.DAL.API/Core.Inventory.DAL.API.csproj \ |  | ||||||
|     -c Release -o /app/out /p:UseAppHost=false |  | ||||||
| 
 |  | ||||||
| # ===== Runtime stage ===== |  | ||||||
| FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime |  | ||||||
| WORKDIR /app |  | ||||||
| COPY --from=build /app/out . |  | ||||||
| 
 |  | ||||||
| # Configuración básica |  | ||||||
| ENV ASPNETCORE_URLS=http://+:8080 |  | ||||||
| EXPOSE 8080 |  | ||||||
| 
 |  | ||||||
| ENTRYPOINT ["dotnet", "Core.Inventory.DAL.API.dll"] |  | ||||||
| @ -1,9 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> |  | ||||||
| <configuration> |  | ||||||
|   <packageSources> |  | ||||||
|     <!-- Tu BaGet primero --> |  | ||||||
|     <add key="BaGet" value="https://nuget.dream-views.com/v3/index.json" protocolVersion="3" /> |  | ||||||
|     <!-- NuGet oficial como fallback (si quieres) --> |  | ||||||
|     <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> |  | ||||||
|   </packageSources> |  | ||||||
| </configuration> |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user