From 542df8a203a9230c3d4d99c0965843f3677c7158 Mon Sep 17 00:00:00 2001 From: Ignacio Gomez Date: Fri, 27 Jun 2025 23:11:01 -0600 Subject: [PATCH] Final fixes for demo --- .../Input/Base/UpdateFurnitureBaseRequest.cs | 4 +++- .../Variant/CreateFurnitureVariantRequest.cs | 10 ++++----- .../Variant/UpdateFurnitureVariantRequest.cs | 10 +++++---- .../UseCases/Inventory/InventoryHandler.cs | 13 ++++++++---- .../Base/UpdateFurnitureBaseValidator.cs | 6 ++++++ .../CreateFurnitureVariantValidator.cs | 4 ++-- .../UpdateFurnitureVariantValidator.cs | 7 +++++-- .../Clients/Adapters/FurnitureBaseAdapter.cs | 19 +++++++++++++++++ .../Adapters/FurnitureVariantAdapter.cs | 21 +++++++++++++++++++ .../Clients/IInventoryServiceClient.cs | 5 +++-- .../Requests/FurnitureVariantRequest.cs | 6 +++--- .../Core.Inventory.External.csproj | 2 +- 12 files changed, 82 insertions(+), 25 deletions(-) create mode 100644 Core.Inventory.External/Clients/Adapters/FurnitureBaseAdapter.cs create mode 100644 Core.Inventory.External/Clients/Adapters/FurnitureVariantAdapter.cs diff --git a/Core.Inventory.Application/UseCases/Inventory/Input/Base/UpdateFurnitureBaseRequest.cs b/Core.Inventory.Application/UseCases/Inventory/Input/Base/UpdateFurnitureBaseRequest.cs index 9918674..8653be9 100644 --- a/Core.Inventory.Application/UseCases/Inventory/Input/Base/UpdateFurnitureBaseRequest.cs +++ b/Core.Inventory.Application/UseCases/Inventory/Input/Base/UpdateFurnitureBaseRequest.cs @@ -13,6 +13,7 @@ namespace Core.Inventory.Application.UseCases.Inventory.Input.Base /// public class UpdateFurnitureBaseRequest : Notificator, ICommand { + public string _Id { get; set; } = null!; public string Id { get; set; } = null!; public string ModelName { get; set; } = null!; public string Material { get; set; } = null!; @@ -26,7 +27,8 @@ namespace Core.Inventory.Application.UseCases.Inventory.Input.Base public List? VariantIds { get; set; } public bool Validate() { - return !string.IsNullOrWhiteSpace(Id) + return !string.IsNullOrWhiteSpace(_Id) + && !string.IsNullOrWhiteSpace(Id) && !string.IsNullOrWhiteSpace(ModelName) && !string.IsNullOrWhiteSpace(Material) && !string.IsNullOrWhiteSpace(Condition); diff --git a/Core.Inventory.Application/UseCases/Inventory/Input/Variant/CreateFurnitureVariantRequest.cs b/Core.Inventory.Application/UseCases/Inventory/Input/Variant/CreateFurnitureVariantRequest.cs index 62188ba..68a2c59 100644 --- a/Core.Inventory.Application/UseCases/Inventory/Input/Variant/CreateFurnitureVariantRequest.cs +++ b/Core.Inventory.Application/UseCases/Inventory/Input/Variant/CreateFurnitureVariantRequest.cs @@ -18,10 +18,10 @@ namespace Core.Inventory.Application.UseCases.Inventory.Input.Variant public string Currency { get; set; } = "USD"; public int Stock { get; set; } - public Guid CategoryId { get; set; } - public Guid ProviderId { get; set; } + public string CategoryId { get; set; } = string.Empty; + public string ProviderId { get; set; } = string.Empty; - public Dictionary Attributes { get; set; } = []; + public Dictionary Attributes { get; set; } = []; public bool Validate() { @@ -29,9 +29,7 @@ namespace Core.Inventory.Application.UseCases.Inventory.Input.Variant && !string.IsNullOrWhiteSpace(Name) && !string.IsNullOrWhiteSpace(Color) && Price >= 0 - && Stock >= 0 - && CategoryId != Guid.Empty - && ProviderId != Guid.Empty; + && Stock >= 0; } } } diff --git a/Core.Inventory.Application/UseCases/Inventory/Input/Variant/UpdateFurnitureVariantRequest.cs b/Core.Inventory.Application/UseCases/Inventory/Input/Variant/UpdateFurnitureVariantRequest.cs index d6e3d60..66a61ad 100644 --- a/Core.Inventory.Application/UseCases/Inventory/Input/Variant/UpdateFurnitureVariantRequest.cs +++ b/Core.Inventory.Application/UseCases/Inventory/Input/Variant/UpdateFurnitureVariantRequest.cs @@ -13,6 +13,7 @@ namespace Core.Inventory.Application.UseCases.Inventory.Input.Variant /// public class UpdateFurnitureVariantRequest : Notificator, ICommand { + public string _Id { get; set; } = null!; public string Id { get; set; } = null!; public string ModelId { get; set; } = null!; public string Name { get; set; } = null!; @@ -23,14 +24,15 @@ namespace Core.Inventory.Application.UseCases.Inventory.Input.Variant public decimal Price { get; set; } public string Currency { get; set; } = "USD"; - public Guid CategoryId { get; set; } - public Guid ProviderId { get; set; } + public string CategoryId { get; set; } = string.Empty!; + public string ProviderId { get; set; } = string.Empty!; - public Dictionary Attributes { get; set; } = []; + public Dictionary Attributes { get; set; } = []; public bool Validate() { - return !string.IsNullOrWhiteSpace(Id) && + return !string.IsNullOrWhiteSpace(_Id) && + !string.IsNullOrWhiteSpace(Id) && !string.IsNullOrWhiteSpace(ModelId) && !string.IsNullOrWhiteSpace(Name) && !string.IsNullOrWhiteSpace(Color) && diff --git a/Core.Inventory.Application/UseCases/Inventory/InventoryHandler.cs b/Core.Inventory.Application/UseCases/Inventory/InventoryHandler.cs index 81bba52..a96feae 100644 --- a/Core.Inventory.Application/UseCases/Inventory/InventoryHandler.cs +++ b/Core.Inventory.Application/UseCases/Inventory/InventoryHandler.cs @@ -3,6 +3,7 @@ using Core.Inventory.Application.UseCases.Inventory.Input.Variant; using Core.Inventory.Application.UseCases.Inventory.Ports; using Core.Inventory.Application.UseCases.Inventory.Validator.Variant; using Core.Inventory.External.Clients; +using Core.Inventory.External.Clients.Adapters; using Core.Inventory.External.Clients.Requests; using FluentValidation; using Lib.Architecture.BuildingBlocks; @@ -116,8 +117,10 @@ namespace Core.Inventory.Application.UseCases.Inventory return; } - var request = new FurnitureBaseRequest + var request = new FurnitureBaseAdapter { + _Id = command._Id, + Id = command.Id, BaseDescription = command.BaseDescription, Condition = command.Condition, MaintenanceNotes = command.MaintenanceNotes, @@ -133,7 +136,7 @@ namespace Core.Inventory.Application.UseCases.Inventory } }; - var result = await _inventoryDALService.UpdateFurnitureBaseAsync(request, command.Id, cancellationToken); + var result = await _inventoryDALService.UpdateFurnitureBaseAsync(command.Id, request, cancellationToken); _basePort.Success(result); } catch (Exception ex) @@ -244,8 +247,10 @@ namespace Core.Inventory.Application.UseCases.Inventory _variantPort.ValidationErrors(command.Notifications); return; } - var request = new FurnitureVariantRequest + var request = new FurnitureVariantAdapter { + _Id = command._Id, + Id = command.Id, Stock = command.Stock, Attributes= command.Attributes, CategoryId = command.CategoryId, @@ -257,7 +262,7 @@ namespace Core.Inventory.Application.UseCases.Inventory Price = command.Price, ProviderId = command.ProviderId }; - var result = await _inventoryDALService.UpdateFurnitureVariantAsync(request, command.Id, cancellationToken); + var result = await _inventoryDALService.UpdateFurnitureVariantAsync(command.Id, request, cancellationToken); _variantPort.Success(result); } catch (Exception ex) diff --git a/Core.Inventory.Application/UseCases/Inventory/Validator/Base/UpdateFurnitureBaseValidator.cs b/Core.Inventory.Application/UseCases/Inventory/Validator/Base/UpdateFurnitureBaseValidator.cs index 5c7c546..0528b23 100644 --- a/Core.Inventory.Application/UseCases/Inventory/Validator/Base/UpdateFurnitureBaseValidator.cs +++ b/Core.Inventory.Application/UseCases/Inventory/Validator/Base/UpdateFurnitureBaseValidator.cs @@ -8,6 +8,12 @@ namespace Core.Inventory.Application.UseCases.Inventory.Validator.Base { public UpdateFurnitureBaseValidator() { + RuleFor(x => x._Id) + .NotEmpty().WithMessage("_Id is required."); + + RuleFor(x => x.Id) + .NotEmpty().WithMessage("Id is required."); + RuleFor(x => x.ModelName) .NotEmpty().WithMessage("Model name is required."); diff --git a/Core.Inventory.Application/UseCases/Inventory/Validator/Variant/CreateFurnitureVariantValidator.cs b/Core.Inventory.Application/UseCases/Inventory/Validator/Variant/CreateFurnitureVariantValidator.cs index 2d7c6f9..1490bd2 100644 --- a/Core.Inventory.Application/UseCases/Inventory/Validator/Variant/CreateFurnitureVariantValidator.cs +++ b/Core.Inventory.Application/UseCases/Inventory/Validator/Variant/CreateFurnitureVariantValidator.cs @@ -23,10 +23,10 @@ namespace Core.Inventory.Application.UseCases.Inventory.Validator.Variant .GreaterThanOrEqualTo(0).WithMessage("Stock must be a non-negative value."); RuleFor(x => x.CategoryId) - .NotEqual(Guid.Empty).WithMessage("CategoryId is required."); + .NotEmpty().WithMessage("CategoryId is required."); RuleFor(x => x.ProviderId) - .NotEqual(Guid.Empty).WithMessage("ProviderId is required."); + .NotEmpty().WithMessage("ProviderId is required."); RuleFor(x => x.Currency) .NotEmpty().WithMessage("Currency is required."); diff --git a/Core.Inventory.Application/UseCases/Inventory/Validator/Variant/UpdateFurnitureVariantValidator.cs b/Core.Inventory.Application/UseCases/Inventory/Validator/Variant/UpdateFurnitureVariantValidator.cs index 473b533..c8cecc5 100644 --- a/Core.Inventory.Application/UseCases/Inventory/Validator/Variant/UpdateFurnitureVariantValidator.cs +++ b/Core.Inventory.Application/UseCases/Inventory/Validator/Variant/UpdateFurnitureVariantValidator.cs @@ -7,6 +7,9 @@ namespace Core.Inventory.Application.UseCases.Inventory.Validator.Variant { public UpdateFurnitureVariantValidator() { + RuleFor(x => x._Id) + .NotEmpty().WithMessage("_Id is required."); + RuleFor(x => x.Id) .NotEmpty().WithMessage("Id is required."); @@ -29,10 +32,10 @@ namespace Core.Inventory.Application.UseCases.Inventory.Validator.Variant .NotEmpty().WithMessage("Currency is required."); RuleFor(x => x.CategoryId) - .NotEqual(Guid.Empty).WithMessage("CategoryId is required."); + .NotEmpty().WithMessage("CategoryId is required."); RuleFor(x => x.ProviderId) - .NotEqual(Guid.Empty).WithMessage("ProviderId is required."); + .NotEmpty().WithMessage("ProviderId is required."); } } } diff --git a/Core.Inventory.External/Clients/Adapters/FurnitureBaseAdapter.cs b/Core.Inventory.External/Clients/Adapters/FurnitureBaseAdapter.cs new file mode 100644 index 0000000..d84511e --- /dev/null +++ b/Core.Inventory.External/Clients/Adapters/FurnitureBaseAdapter.cs @@ -0,0 +1,19 @@ +using Core.Adapters.Lib; + +namespace Core.Inventory.External.Clients.Adapters +{ + public class FurnitureBaseAdapter + { + public string _Id { get; set; } = null!; + public string Id { get; init; } = null!; + public string ModelName { get; set; } = null!; + public string Material { get; set; } = null!; + public string Condition { get; set; } = null!; + public string? BaseDescription { get; set; } + public string? Representation { get; set; } + public string? MaintenanceNotes { get; set; } + + public Dimensions Dimensions { get; set; } = new(); + public List? VariantIds { get; set; } + } +} diff --git a/Core.Inventory.External/Clients/Adapters/FurnitureVariantAdapter.cs b/Core.Inventory.External/Clients/Adapters/FurnitureVariantAdapter.cs new file mode 100644 index 0000000..e9c25ec --- /dev/null +++ b/Core.Inventory.External/Clients/Adapters/FurnitureVariantAdapter.cs @@ -0,0 +1,21 @@ +namespace Core.Inventory.External.Clients.Adapters +{ + public class FurnitureVariantAdapter + { + public string _Id { get; set; } = null!; + public string Id { get; init; } = null!; + public string ModelId { get; set; } = null!; + public string Name { get; set; } = null!; + public string Color { get; set; } = null!; + public string? Line { get; set; } + + public decimal Price { get; set; } + public string Currency { get; set; } = "USD"; + public int Stock { get; set; } + + public string CategoryId { get; set; } = string.Empty!; + public string ProviderId { get; set; } = string.Empty!; + + public Dictionary Attributes { get; set; } = []; + } +} diff --git a/Core.Inventory.External/Clients/IInventoryServiceClient.cs b/Core.Inventory.External/Clients/IInventoryServiceClient.cs index 08b5807..1a5eb34 100644 --- a/Core.Inventory.External/Clients/IInventoryServiceClient.cs +++ b/Core.Inventory.External/Clients/IInventoryServiceClient.cs @@ -1,5 +1,6 @@ using Core.Adapters.Lib; using Core.Blueprint.Mongo; +using Core.Inventory.External.Clients.Adapters; using Core.Inventory.External.Clients.Requests; using Microsoft.AspNetCore.Mvc; using Refit; @@ -20,7 +21,7 @@ namespace Core.Inventory.External.Clients Task CreateFurnitureBaseAsync([FromBody] FurnitureBaseRequest request, CancellationToken cancellationToken = default); [Put("/api/v1/FurnitureBase/{id}")] - Task UpdateFurnitureBaseAsync([FromBody] FurnitureBaseRequest request, [FromRoute] string id, CancellationToken cancellationToken = default); + Task UpdateFurnitureBaseAsync([FromRoute] string id, [FromBody] FurnitureBaseAdapter request, CancellationToken cancellationToken = default); [Patch("/api/v1/FurnitureBase/{mongoId}/{newStatus}/ChangeStatus")] Task ChangeFurnitureBaseStatusAsync([FromRoute] string mongoId, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken = default); @@ -42,7 +43,7 @@ namespace Core.Inventory.External.Clients Task CreateFurnitureVariantAsync([FromBody] FurnitureVariantRequest request, CancellationToken cancellationToken = default); [Put("/api/v1/FurnitureVariant/{id}")] - Task UpdateFurnitureVariantAsync([FromBody] FurnitureVariantRequest request, [FromRoute] string id, CancellationToken cancellationToken = default); + Task UpdateFurnitureVariantAsync([FromRoute] string id, [FromBody] FurnitureVariantAdapter request, CancellationToken cancellationToken = default); [Patch("/api/v1/FurnitureVariant/{mongoId}/{newStatus}/ChangeStatus")] Task ChangeFurnitureVariantStatusAsync([FromRoute] string mongoId, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken = default); diff --git a/Core.Inventory.External/Clients/Requests/FurnitureVariantRequest.cs b/Core.Inventory.External/Clients/Requests/FurnitureVariantRequest.cs index eecb1aa..a65aef4 100644 --- a/Core.Inventory.External/Clients/Requests/FurnitureVariantRequest.cs +++ b/Core.Inventory.External/Clients/Requests/FurnitureVariantRequest.cs @@ -11,9 +11,9 @@ public string Currency { get; set; } = "USD"; public int Stock { get; set; } - public Guid CategoryId { get; set; } - public Guid ProviderId { get; set; } + public string CategoryId { get; set; } = string.Empty!; + public string ProviderId { get; set; } = string.Empty!; - public Dictionary Attributes { get; set; } = []; + public Dictionary Attributes { get; set; } = []; } } diff --git a/Core.Inventory.External/Core.Inventory.External.csproj b/Core.Inventory.External/Core.Inventory.External.csproj index f8d46c4..c7d4c05 100644 --- a/Core.Inventory.External/Core.Inventory.External.csproj +++ b/Core.Inventory.External/Core.Inventory.External.csproj @@ -7,7 +7,7 @@ - +