generator-codedesignplus 0.0.1-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENCE.md +13 -0
- package/README.md +454 -0
- package/generators/app/index.mjs +22 -0
- package/generators/microservice/core/aggregate.mjs +25 -0
- package/generators/microservice/core/appsettings.mjs +73 -0
- package/generators/microservice/core/asyncWorker.mjs +87 -0
- package/generators/microservice/core/command.mjs +54 -0
- package/generators/microservice/core/consumer.mjs +73 -0
- package/generators/microservice/core/controller.mjs +25 -0
- package/generators/microservice/core/core.mjs +98 -0
- package/generators/microservice/core/dataTransferObject.mjs +31 -0
- package/generators/microservice/core/domainEvent.mjs +36 -0
- package/generators/microservice/core/dotnet.mjs +56 -0
- package/generators/microservice/core/entity.mjs +29 -0
- package/generators/microservice/core/errors.mjs +37 -0
- package/generators/microservice/core/grpc.mjs +97 -0
- package/generators/microservice/core/microservice.mjs +212 -0
- package/generators/microservice/core/proto.mjs +61 -0
- package/generators/microservice/core/query.mjs +59 -0
- package/generators/microservice/core/repository.mjs +41 -0
- package/generators/microservice/core/utils.mjs +196 -0
- package/generators/microservice/core/valueObject.mjs +29 -0
- package/generators/microservice/core/xml.mjs +48 -0
- package/generators/microservice/index.mjs +38 -0
- package/generators/microservice/templates/aggregate/ItemAggregate.cs +9 -0
- package/generators/microservice/templates/command/ItemCommand.cs +12 -0
- package/generators/microservice/templates/command/ItemCommandHandler.cs +9 -0
- package/generators/microservice/templates/consumer/ItemHandler.cs +14 -0
- package/generators/microservice/templates/controller/ItemController.cs +8 -0
- package/generators/microservice/templates/data-transfer-object/ItemDto.cs +6 -0
- package/generators/microservice/templates/domain-event/ItemDomainEvent.cs +15 -0
- package/generators/microservice/templates/entity/ItemEntity.cs +6 -0
- package/generators/microservice/templates/errors/Error.cs +6 -0
- package/generators/microservice/templates/grpc/ItemService.cs +6 -0
- package/generators/microservice/templates/grpc/grpc.proto +22 -0
- package/generators/microservice/templates/microservice/.dockerignore +30 -0
- package/generators/microservice/templates/microservice/CodeDesignPlus.Net.Microservice.sln +155 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/CodeDesignPlus.Net.Microservice.Application.csproj +20 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Errors.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/AddProductToOrder/AddProductToOrderCommand.cs +17 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/AddProductToOrder/AddProductToOrderCommandHandler.cs +27 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CancelOrder/CancelOrderCommand.cs +13 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CancelOrder/CancelOrderCommandHandler.cs +24 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CompleteOrder/CompleteOrderCommand.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CompleteOrder/CompleteOrderCommandHandler.cs +25 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CreateOrder/CreateOrderCommand.cs +32 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CreateOrder/CreateOrderCommandHandler.cs +24 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/RemoveProduct/RemoveProductCommand.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/RemoveProduct/RemoveProductCommandHandler.cs +22 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommand.cs +14 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandHandler.cs +24 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/AddressDto.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/ClientDto.cs +9 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/OrderDto.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/ProductDto.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/FindOrderById/FindOrderByIdQuery.cs +4 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/FindOrderById/FindOrderByIdQueryHandler.cs +23 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/GetAllOrders/GetAllOrdersQuery.cs +3 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/GetAllOrders/GetAllOrdersQueryHandler.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Setup/MapsterConfig.cs +26 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Startup.cs +15 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Usings.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/CodeDesignPlus.Net.Microservice.Domain.csproj +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/AddProductToOrderParams.cs +15 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/CancelOrderParams.cs +13 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/CompleteOrderParams.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/RemoveProductFromOrderParams.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/UpdateQuantityProductParams.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCancelledDomainEvent.cs +21 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCompletedDomainEvent.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCreatedDomainEvent.cs +44 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductAddedToOrderDomainEvent.cs +20 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductQuantityUpdatedDomainEvent.cs +20 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductRemovedFromOrderDomainEvent.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Entities/ProductEntity.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Enums/OrderStatus.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Errors.cs +28 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/OrderAggregate.cs +124 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Repositories/IOrderRepository.cs +14 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Startup.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Usings.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/ValueObjects/AddressValueObject.cs +30 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/ValueObjects/ClientValueObject.cs +27 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/CodeDesignPlus.Net.Microservice.Infrastructure.csproj +13 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Errors.cs +6 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Repositories/OrderRepository.cs +109 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Startup.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Usings.cs +15 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/CodeDesignPlus.Net.Microservice.AsyncWorker.csproj +31 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Program.cs +41 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Properties/launchSettings.json +15 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Usings.cs +10 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/appsettings.Development.json +2 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/appsettings.json +129 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/CodeDesignPlus.Net.Microservice.Rest.csproj +36 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/CodeDesignPlus.Net.Microservice.Rest.csproj.user +11 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Controllers/OrderController.cs +138 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Core/Mapster/MapsterConfig.cs +12 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Dockerfile +37 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Program.cs +52 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Properties/launchSettings.json +26 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Usings.cs +22 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/appsettings.Development.json +3 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/appsettings.json +86 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/CodeDesignPlus.Net.Microservice.gRpc.csproj +35 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/CodeDesignPlus.Net.Microservice.gRpc.csproj.user +9 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Core/Mapster/MapsterConfig.cs +13 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Program.cs +61 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Properties/launchSettings.json +23 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Protos/orders.proto +66 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Services/OrderService.cs +29 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Usings.cs +12 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/appsettings.Development.json +3 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/appsettings.json +92 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/CodeDesignPlus.Net.Microservice.AsyncWorker.Test.csproj +35 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Properties/launchSettings.json +12 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Usings.cs +8 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/CodeDesignPlus.Net.Microservice.Rest.Test.csproj +36 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Controllers/OrderControllerTest.cs +337 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Properties/launchSettings.json +12 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Usings.cs +8 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/CodeDesignPlus.Net.Microservice.gRpc.Test.csproj +46 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Protos/orders.proto +65 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Services/OrdersServiceTest.cs +64 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Usings.cs +7 -0
- package/generators/microservice/templates/microservice/tests/load/load-rest.js +63 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/CodeDesignPlus.Net.Microservice.Application.Test.csproj +34 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/AddProductToOrder/AddProductToOrderCommandHandlerTest.cs +98 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/AddProductToOrder/AddProductToOrderCommandTest.cs +84 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CancelOrder/CancelOrderCommandHandlerTest.cs +74 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CancelOrder/CancelOrderCommandTest.cs +43 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CompleteOrder/CompleteOrderCommandHandlerTest.cs +74 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CompleteOrder/CompleteOrderCommandTest.cs +32 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CreateOrder/CreateOrderCommandHandlerTest.cs +100 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CreateOrder/CreateOrderCommandTest.cs +122 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/RemoveProduct/RemoveProductCommandHandlerTest.cs +71 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/RemoveProduct/RemoveProductCommandTest.cs +33 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandHandlerTest.cs +82 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandTest.cs +51 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Queries/FindOrderById/FindOrderByIdQueryHandlerTest.cs +70 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Queries/GetAllOrders/GetAllOrdersQueryHandlerTest.cs +80 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Setup/MapsterConfigTest.cs +20 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Usings.cs +18 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/CodeDesignPlus.Net.Microservice.AsyncWorker.Test.csproj +38 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Usings.cs +9 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/CodeDesignPlus.Net.Microservice.Default.Test.csproj +35 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Usings.cs +6 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/AggregateTest.cs +37 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/CommandsTests.cs +29 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/DataTransferObjectTest.cs +47 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/DomainEventTest.cs +42 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/EntityTest.cs +25 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/ErrorsTest.cs +55 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/QueryTests.cs +29 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/StartupTest.cs +43 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/CodeDesignPlus.Net.Microservice.Domain.Test.csproj +38 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/DomainEvents/OrderCancelledDomainEventTest.cs +46 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/OrderAggregateTest.cs +518 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/Usings.cs +7 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/CodeDesignPlus.Net.Microservice.Infrastructure.Test.csproj +34 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/Repositories/OrderRepositoryTest.cs +259 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/Usings.cs +14 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/CodeDesignPlus.Net.Microservice.Rest.Test.csproj +40 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Controllers/OrderControllerTest.cs +189 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Core/Mapster/MapsterConfigTest.cs +19 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Usings.cs +14 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/CodeDesignPlus.Net.Microservice.gRpc.Test.csproj +39 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Core/Mapster/MapsterConfigTest.cs +19 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Services/OrderServiceTest.cs +72 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Usings.cs +15 -0
- package/generators/microservice/templates/microservice/tools/convert-crlf-to-lf.sh +6 -0
- package/generators/microservice/templates/microservice/tools/sonarqube/sonar.ps1 +18 -0
- package/generators/microservice/templates/microservice/tools/sonarqube/sonar.sh +18 -0
- package/generators/microservice/templates/microservice/tools/update-packages/update-packages.ps1 +10 -0
- package/generators/microservice/templates/microservice/tools/update-packages/update-packages.sh +11 -0
- package/generators/microservice/templates/microservice/tools/upgrade-dotnet/upgrade-assistant.ps1 +10 -0
- package/generators/microservice/templates/microservice/tools/upgrade-dotnet/upgrade-assistant.sh +11 -0
- package/generators/microservice/templates/microservice/tools/vault/config-vault.ps1 +178 -0
- package/generators/microservice/templates/microservice/tools/vault/config-vault.sh +152 -0
- package/generators/microservice/templates/others/MapsterConfig.cs +9 -0
- package/generators/microservice/templates/query/ItemQuery.cs +4 -0
- package/generators/microservice/templates/query/ItemQueryHandler.cs +9 -0
- package/generators/microservice/templates/repository/IItemRepository.cs +6 -0
- package/generators/microservice/templates/repository/ItemRepository.cs +7 -0
- package/generators/microservice/templates/value-object/ItemValueObject.cs +23 -0
- package/generators/microservice/types/aggregate.mjs +19 -0
- package/generators/microservice/types/appsettings.mjs +26 -0
- package/generators/microservice/types/base.mjs +24 -0
- package/generators/microservice/types/command.mjs +38 -0
- package/generators/microservice/types/consumer.mjs +21 -0
- package/generators/microservice/types/controller.mjs +20 -0
- package/generators/microservice/types/dataTransferObject.mjs +19 -0
- package/generators/microservice/types/domainEvents.mjs +22 -0
- package/generators/microservice/types/entity.mjs +21 -0
- package/generators/microservice/types/index.mjs +25 -0
- package/generators/microservice/types/proto.mjs +19 -0
- package/generators/microservice/types/query.mjs +38 -0
- package/generators/microservice/types/repository.mjs +21 -0
- package/generators/microservice/types/valueObject.mjs +23 -0
- package/package.json +70 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Order.Commands.UpdateQuantityProduct;
|
|
2
|
+
|
|
3
|
+
public class UpdateQuantityProductCommandHandler(IOrderRepository orderRepository, IUserContext user, IPubSub pubsub) : IRequestHandler<UpdateQuantityProductCommand>
|
|
4
|
+
{
|
|
5
|
+
public async Task Handle(UpdateQuantityProductCommand request, CancellationToken cancellationToken)
|
|
6
|
+
{
|
|
7
|
+
var order = await orderRepository.FindAsync(request.Id, cancellationToken);
|
|
8
|
+
|
|
9
|
+
ApplicationGuard.IsNull(order, Errors.OrderNotFound);
|
|
10
|
+
|
|
11
|
+
order.UpdateProductQuantity(request.ProductId, request.Quantity, user.IdUser);
|
|
12
|
+
|
|
13
|
+
await orderRepository.UpdateQuantityProductAsync(new UpdateQuantityProductParams()
|
|
14
|
+
{
|
|
15
|
+
Id = order.Id,
|
|
16
|
+
ProductId = request.ProductId,
|
|
17
|
+
NewQuantity = request.Quantity,
|
|
18
|
+
UpdatedAt = order.UpdatedAt,
|
|
19
|
+
UpdateBy = user.IdUser
|
|
20
|
+
}, cancellationToken);
|
|
21
|
+
|
|
22
|
+
await pubsub.PublishAsync(order.GetAndClearEvents(), cancellationToken);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Order.DataTransferObjects;
|
|
2
|
+
|
|
3
|
+
public class AddressDto
|
|
4
|
+
{
|
|
5
|
+
public required string Country { get; set; }
|
|
6
|
+
public required string State { get; set; }
|
|
7
|
+
public required string City { get; set; }
|
|
8
|
+
public required string Address { get; set; }
|
|
9
|
+
public int CodePostal { get; set; }
|
|
10
|
+
|
|
11
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Order.DataTransferObjects;
|
|
2
|
+
|
|
3
|
+
public class ClientDto : IDtoBase
|
|
4
|
+
{
|
|
5
|
+
public Guid Id { get; set; }
|
|
6
|
+
public required string Name { get; set; }
|
|
7
|
+
public required string Document { get; set; }
|
|
8
|
+
public required string TypeDocument { get; set; }
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Order.DataTransferObjects;
|
|
2
|
+
|
|
3
|
+
public class OrderDto: IDtoBase
|
|
4
|
+
{
|
|
5
|
+
public Guid Id { get; set; }
|
|
6
|
+
public long? CompletedAt { get; set; }
|
|
7
|
+
public long? CancelledAt { get; set; }
|
|
8
|
+
public ClientDto Client { get; set; } = default!;
|
|
9
|
+
public AddressDto ShippingAddress { get; set; } = default!;
|
|
10
|
+
public List<ProductDto> Products { get; set; } = [];
|
|
11
|
+
public OrderStatus Status { get; set; }
|
|
12
|
+
public string? ReasonForCancellation { get; set; }
|
|
13
|
+
public long CreatedAt { get; set; }
|
|
14
|
+
public Guid CreatedBy { get; set; }
|
|
15
|
+
public long UpdatedAt { get; set; }
|
|
16
|
+
public Guid UpdatedBy { get; set; }
|
|
17
|
+
public bool IsActive { get; set; }
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Order.DataTransferObjects;
|
|
2
|
+
|
|
3
|
+
public class ProductDto: IDtoBase
|
|
4
|
+
{
|
|
5
|
+
public Guid Id { get; set; }
|
|
6
|
+
public required string Name { get; set; }
|
|
7
|
+
public string? Description { get; set; }
|
|
8
|
+
public decimal Price { get; set; }
|
|
9
|
+
public int Quantity { get; set; }
|
|
10
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Cache.Abstractions;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Order.Queries.FindOrderById;
|
|
4
|
+
|
|
5
|
+
public class FindOrderByIdQueryHandler(IOrderRepository orderRepository, IMapper mapper, ICacheManager cacheManager) : IRequestHandler<FindOrderByIdQuery, OrderDto>
|
|
6
|
+
{
|
|
7
|
+
private readonly IOrderRepository orderRepository = orderRepository;
|
|
8
|
+
private readonly IMapper mapper = mapper;
|
|
9
|
+
|
|
10
|
+
public async Task<OrderDto> Handle(FindOrderByIdQuery request, CancellationToken cancellationToken)
|
|
11
|
+
{
|
|
12
|
+
if(await cacheManager.ExistsAsync(request.Id.ToString()))
|
|
13
|
+
return await cacheManager.GetAsync<OrderDto>(request.Id.ToString());
|
|
14
|
+
|
|
15
|
+
var result = await this.orderRepository.FindAsync(request.Id, cancellationToken);
|
|
16
|
+
|
|
17
|
+
var order = this.mapper.Map<OrderDto>(result);
|
|
18
|
+
|
|
19
|
+
await cacheManager.SetAsync(request.Id.ToString(), order);
|
|
20
|
+
|
|
21
|
+
return order;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Order.Queries.GetAllOrders;
|
|
2
|
+
|
|
3
|
+
public class GetAllOrdersQueryHandler(IOrderRepository orderRepository, IMapper mapper)
|
|
4
|
+
: IRequestHandler<GetAllOrdersQuery, List<OrderDto>>
|
|
5
|
+
{
|
|
6
|
+
|
|
7
|
+
private readonly IOrderRepository orderRepository = orderRepository;
|
|
8
|
+
private readonly IMapper mapper = mapper;
|
|
9
|
+
|
|
10
|
+
public async Task<List<OrderDto>> Handle(GetAllOrdersQuery request, CancellationToken cancellationToken)
|
|
11
|
+
{
|
|
12
|
+
var result = await this.orderRepository.MatchingAsync<OrderAggregate>(request.Criteria, cancellationToken).ConfigureAwait(false);
|
|
13
|
+
|
|
14
|
+
var data = this.mapper.Map<List<OrderDto>>(result);
|
|
15
|
+
|
|
16
|
+
return data;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Application.Setup;
|
|
4
|
+
|
|
5
|
+
public static class MapsterConfigOrder
|
|
6
|
+
{
|
|
7
|
+
public static void Configure()
|
|
8
|
+
{
|
|
9
|
+
TypeAdapterConfig<ClientDto, ClientValueObject>.NewConfig().TwoWays();
|
|
10
|
+
TypeAdapterConfig<AddressDto, AddressValueObject>.NewConfig().TwoWays();
|
|
11
|
+
TypeAdapterConfig<ProductDto, ProductDto>.NewConfig().TwoWays();
|
|
12
|
+
|
|
13
|
+
TypeAdapterConfig<OrderAggregate, OrderDto>.NewConfig()
|
|
14
|
+
.Map(dest => dest.Id, src => src.Id)
|
|
15
|
+
.Map(dest => dest.Client, src => src.Client)
|
|
16
|
+
.Map(dest => dest.Products, src => src.Products)
|
|
17
|
+
.Map(dest => dest.CompletedAt, src => src.CompletedAt)
|
|
18
|
+
.Map(dest => dest.CancelledAt, src => src.CancelledAt)
|
|
19
|
+
.Map(dest => dest.Status, src => src.Status)
|
|
20
|
+
.Map(dest => dest.CreatedAt, src => src.CreatedAt)
|
|
21
|
+
.Map(dest => dest.UpdatedAt, src => src.UpdatedAt)
|
|
22
|
+
.Map(dest => dest.CreatedBy, src => src.CreatedBy)
|
|
23
|
+
.Map(dest => dest.UpdatedBy, src => src.UpdatedBy)
|
|
24
|
+
.Map(dest => dest.ReasonForCancellation, src => src.ReasonForCancellation);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Core.Abstractions;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Application.Setup;
|
|
3
|
+
using Microsoft.Extensions.Configuration;
|
|
4
|
+
using Microsoft.Extensions.DependencyInjection;
|
|
5
|
+
|
|
6
|
+
namespace CodeDesignPlus.Net.Microservice.Application
|
|
7
|
+
{
|
|
8
|
+
public class Startup : IStartup
|
|
9
|
+
{
|
|
10
|
+
public void Initialize(IServiceCollection services, IConfiguration configuration)
|
|
11
|
+
{
|
|
12
|
+
MapsterConfigOrder.Configure();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
global using CodeDesignPlus.Net.Exceptions.Guards;
|
|
2
|
+
global using CodeDesignPlus.Net.Generator.Attributes;
|
|
3
|
+
global using CodeDesignPlus.Net.PubSub.Abstractions;
|
|
4
|
+
global using CodeDesignPlus.Net.Security.Abstractions;
|
|
5
|
+
global using FluentValidation;
|
|
6
|
+
global using Mapster;
|
|
7
|
+
global using MapsterMapper;
|
|
8
|
+
global using MediatR;
|
|
9
|
+
global using C = CodeDesignPlus.Net.Core.Abstractions.Models.Criteria;
|
|
10
|
+
global using CodeDesignPlus.Net.Core.Abstractions;
|
|
11
|
+
global using CodeDesignPlus.Net.Serializers;
|
|
12
|
+
|
|
13
|
+
global using CodeDesignPlus.Net.Microservice.Application.Order.DataTransferObjects;
|
|
14
|
+
global using CodeDesignPlus.Net.Microservice.Domain;
|
|
15
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Entities;
|
|
16
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Repositories;
|
|
17
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Enums;
|
|
18
|
+
global using CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
|
2
|
+
<PropertyGroup>
|
|
3
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
4
|
+
<ImplicitUsings>enable</ImplicitUsings>
|
|
5
|
+
<Nullable>enable</Nullable>
|
|
6
|
+
</PropertyGroup>
|
|
7
|
+
<ItemGroup>
|
|
8
|
+
<PackageReference Include="CodeDesignPlus.Net.Exceptions" Version="0.5.0-beta.60" />
|
|
9
|
+
<PackageReference Include="CodeDesignPlus.Net.Mongo" Version="0.5.0-beta.60" />
|
|
10
|
+
</ItemGroup>
|
|
11
|
+
</Project>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|
|
4
|
+
|
|
5
|
+
public class AddProductToOrderParams: IDtoBase
|
|
6
|
+
{
|
|
7
|
+
public required Guid Id { get; set; }
|
|
8
|
+
public required Guid IdProduct { get; set; }
|
|
9
|
+
public required string Name { get; set; }
|
|
10
|
+
public required string Description { get; set; }
|
|
11
|
+
public required long Price { get; set; }
|
|
12
|
+
public required int Quantity { get; set; }
|
|
13
|
+
public required long? UpdatedAt { get; set; }
|
|
14
|
+
public required Guid? UpdateBy { get; set; }
|
|
15
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|
|
4
|
+
|
|
5
|
+
public class CancelOrderParams: IDtoBase
|
|
6
|
+
{
|
|
7
|
+
public required Guid Id { get; set; }
|
|
8
|
+
public required OrderStatus OrderStatus { get; set; }
|
|
9
|
+
public required string? Reason { get; set; }
|
|
10
|
+
public required long? CancelledAt { get; set; }
|
|
11
|
+
public required long? UpdatedAt { get; set; }
|
|
12
|
+
public required Guid? UpdateBy { get; set; }
|
|
13
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|
|
4
|
+
|
|
5
|
+
public class CompleteOrderParams: IDtoBase
|
|
6
|
+
{
|
|
7
|
+
public required Guid Id { get; set; }
|
|
8
|
+
public required long? CompletedAt { get; set; }
|
|
9
|
+
public required OrderStatus OrderStatus { get; set; }
|
|
10
|
+
public required long? UpdatedAt { get; set; }
|
|
11
|
+
public required Guid? UpdateBy { get; set; }
|
|
12
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|
|
4
|
+
|
|
5
|
+
public class RemoveProductFromOrderParams: IDtoBase
|
|
6
|
+
{
|
|
7
|
+
public required Guid Id { get; set; }
|
|
8
|
+
public required Guid IdProduct { get; set; }
|
|
9
|
+
public required long? UpdatedAt { get; set; }
|
|
10
|
+
public required Guid? UpdateBy { get; set; }
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|
|
4
|
+
|
|
5
|
+
public class UpdateQuantityProductParams: IDtoBase
|
|
6
|
+
{
|
|
7
|
+
public required Guid Id { get; set; }
|
|
8
|
+
public required Guid ProductId { get; set; }
|
|
9
|
+
public required int NewQuantity { get; set; }
|
|
10
|
+
public required long? UpdatedAt { get; set; }
|
|
11
|
+
public required Guid? UpdateBy { get; set; }
|
|
12
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
|
|
2
|
+
|
|
3
|
+
[EventKey<OrderAggregate>(1, "OrderCancelled")]
|
|
4
|
+
public class OrderCancelledDomainEvent(
|
|
5
|
+
Guid aggregateId,
|
|
6
|
+
long cancelledAt,
|
|
7
|
+
string reason,
|
|
8
|
+
Guid? eventId = null,
|
|
9
|
+
DateTime? occurredAt = null,
|
|
10
|
+
Dictionary<string, object>? metadata = null
|
|
11
|
+
) : DomainEvent(aggregateId, eventId, occurredAt, metadata)
|
|
12
|
+
{
|
|
13
|
+
public long CancelledAt { get; } = cancelledAt;
|
|
14
|
+
public string Reason { get; } = reason;
|
|
15
|
+
|
|
16
|
+
public static OrderCancelledDomainEvent Create(Guid aggregateId, string reason)
|
|
17
|
+
{
|
|
18
|
+
return new OrderCancelledDomainEvent(aggregateId, DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), reason);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
|
|
2
|
+
|
|
3
|
+
[EventKey<OrderAggregate>(1, "OrderCompleted")]
|
|
4
|
+
public class OrderCompletedDomainEvent(
|
|
5
|
+
Guid aggregateId,
|
|
6
|
+
long completedAt,
|
|
7
|
+
Guid? eventId = null,
|
|
8
|
+
DateTime? occurredAt = null,
|
|
9
|
+
Dictionary<string, object>? metadata = null
|
|
10
|
+
) : DomainEvent(aggregateId, eventId, occurredAt, metadata)
|
|
11
|
+
{
|
|
12
|
+
public long CompletedAt { get; } = completedAt;
|
|
13
|
+
|
|
14
|
+
public static OrderCompletedDomainEvent Create(Guid aggregateId)
|
|
15
|
+
{
|
|
16
|
+
return new OrderCompletedDomainEvent(aggregateId, DateTimeOffset.UtcNow.ToUnixTimeMilliseconds());
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
|
|
4
|
+
|
|
5
|
+
[EventKey<OrderAggregate>(1, "OrderCreated")]
|
|
6
|
+
public class OrderCreatedDomainEvent(
|
|
7
|
+
Guid aggregateId,
|
|
8
|
+
OrderStatus orderStatus,
|
|
9
|
+
ClientValueObject client,
|
|
10
|
+
AddressValueObject shippingAddress,
|
|
11
|
+
long createdAt,
|
|
12
|
+
Guid tenant,
|
|
13
|
+
Guid createBy,
|
|
14
|
+
Guid? eventId = null,
|
|
15
|
+
DateTime? occurredAt = null,
|
|
16
|
+
Dictionary<string, object>? metadata = null
|
|
17
|
+
) : DomainEvent(aggregateId, eventId, occurredAt, metadata)
|
|
18
|
+
{
|
|
19
|
+
public ClientValueObject Client { get; } = client;
|
|
20
|
+
public AddressValueObject ShippingAddress { get; } = shippingAddress;
|
|
21
|
+
public OrderStatus OrderStatus { get; } = orderStatus;
|
|
22
|
+
public long CreatedAt { get; } = createdAt;
|
|
23
|
+
public Guid Tenant { get; private set; } = tenant;
|
|
24
|
+
public Guid CreateBy { get; private set; } = createBy;
|
|
25
|
+
|
|
26
|
+
public static OrderCreatedDomainEvent Create(
|
|
27
|
+
Guid id,
|
|
28
|
+
ClientValueObject client,
|
|
29
|
+
AddressValueObject shippingAddress,
|
|
30
|
+
Guid tenant,
|
|
31
|
+
Guid creaateBy)
|
|
32
|
+
{
|
|
33
|
+
return new OrderCreatedDomainEvent(
|
|
34
|
+
id,
|
|
35
|
+
OrderStatus.Created,
|
|
36
|
+
client,
|
|
37
|
+
shippingAddress,
|
|
38
|
+
DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
39
|
+
tenant,
|
|
40
|
+
creaateBy
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
|
|
2
|
+
|
|
3
|
+
[EventKey<ProductEntity>(1, "ProductAddedToOrder")]
|
|
4
|
+
public class ProductAddedToOrderDomainEvent(
|
|
5
|
+
Guid aggregateId,
|
|
6
|
+
int quantity,
|
|
7
|
+
ProductEntity product,
|
|
8
|
+
Guid? eventId = null,
|
|
9
|
+
DateTime? occurredAt = null,
|
|
10
|
+
Dictionary<string, object>? metadata = null
|
|
11
|
+
) : DomainEvent(aggregateId, eventId, occurredAt, metadata)
|
|
12
|
+
{
|
|
13
|
+
public int Quantity { get; } = quantity;
|
|
14
|
+
public ProductEntity Product { get; set; } = product;
|
|
15
|
+
|
|
16
|
+
public static ProductAddedToOrderDomainEvent Create(Guid aggregateId, int quantity, ProductEntity product)
|
|
17
|
+
{
|
|
18
|
+
return new ProductAddedToOrderDomainEvent(aggregateId, quantity, product);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
|
|
2
|
+
|
|
3
|
+
[EventKey<ProductEntity>(1, "ProductQuantityUpdated")]
|
|
4
|
+
public class ProductQuantityUpdatedDomainEvent(
|
|
5
|
+
Guid aggregateId,
|
|
6
|
+
Guid productId,
|
|
7
|
+
int newQuantity,
|
|
8
|
+
Guid? eventId = null,
|
|
9
|
+
DateTime? occurredAt = null,
|
|
10
|
+
Dictionary<string, object>? metadata = null
|
|
11
|
+
) : DomainEvent(aggregateId, eventId, occurredAt, metadata)
|
|
12
|
+
{
|
|
13
|
+
public Guid ProductId { get; } = productId;
|
|
14
|
+
public int NewQuantity { get; } = newQuantity;
|
|
15
|
+
|
|
16
|
+
public static ProductQuantityUpdatedDomainEvent Create(Guid aggregateId, Guid productId, int newQuantity)
|
|
17
|
+
{
|
|
18
|
+
return new ProductQuantityUpdatedDomainEvent(aggregateId, productId, newQuantity);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
|
|
2
|
+
|
|
3
|
+
[EventKey<ProductEntity>(1, "ProductRemovedFromOrder")]
|
|
4
|
+
public class ProductRemovedFromOrderDomainEvent(
|
|
5
|
+
Guid aggregateId,
|
|
6
|
+
Guid productId,
|
|
7
|
+
Guid? eventId = null,
|
|
8
|
+
DateTime? occurredAt = null,
|
|
9
|
+
Dictionary<string, object>? metadata = null
|
|
10
|
+
) : DomainEvent(aggregateId, eventId, occurredAt, metadata)
|
|
11
|
+
{
|
|
12
|
+
public Guid ProductId { get; } = productId;
|
|
13
|
+
|
|
14
|
+
public static ProductRemovedFromOrderDomainEvent Create(Guid aggregateId, Guid productId)
|
|
15
|
+
{
|
|
16
|
+
return new ProductRemovedFromOrderDomainEvent(aggregateId, productId);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.Entities;
|
|
2
|
+
|
|
3
|
+
public class ProductEntity : IEntityBase
|
|
4
|
+
{
|
|
5
|
+
public Guid Id { get; set; }
|
|
6
|
+
public required string Name { get; set; }
|
|
7
|
+
public string? Description { get; set; }
|
|
8
|
+
public long Price { get; set; }
|
|
9
|
+
public int Quantity { get; set; }
|
|
10
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain;
|
|
2
|
+
|
|
3
|
+
public class Errors: IErrorCodes
|
|
4
|
+
{
|
|
5
|
+
public const string IdOrderIsInvalid = "100 : Id is invalid.";
|
|
6
|
+
public const string TenantIsInvalid = "101 : Tenant is invalid.";
|
|
7
|
+
|
|
8
|
+
public const string ClientIsNull = "102 : Client is null.";
|
|
9
|
+
public const string IdClientIsInvalid = "103 : Id client is invalid.";
|
|
10
|
+
public const string NameClientIsInvalid = "104 : Name client is invalid.";
|
|
11
|
+
|
|
12
|
+
public const string ProductIsNull = "105 : Product is null.";
|
|
13
|
+
public const string IdProductIsInvalid = "106 : Id product is invalid.";
|
|
14
|
+
public const string NameProductIsInvalid = "107 : Name product is invalid.";
|
|
15
|
+
public const string PriceProductIsInvalid = "108 : Price product is invalid.";
|
|
16
|
+
public const string QuantityProductIsInvalid = "109 : Quantity product is invalid.";
|
|
17
|
+
|
|
18
|
+
public const string ProductNotFound = "110 : Product not found in the order.";
|
|
19
|
+
public const string OrderAlreadyCompleted = "111 : Order already completed.";
|
|
20
|
+
public const string OrderAlreadyCancelled = "112 : Order already cancelled.";
|
|
21
|
+
public const string DocumentIsNull = "113 : Document is null.";
|
|
22
|
+
public const string TypeDocumentIsNull = "114 : Type document is null.";
|
|
23
|
+
public const string CountryIsNull = "115 : Country is null.";
|
|
24
|
+
public const string StateIsNull = "116 : State is null.";
|
|
25
|
+
public const string CityIsNull = "117 : City is null.";
|
|
26
|
+
public const string AddressIsNull = "118 : Address is null.";
|
|
27
|
+
public const string CodePostalIsInvalid = "119 : Code postal is invalid.";
|
|
28
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
2
|
+
|
|
3
|
+
namespace CodeDesignPlus.Net.Microservice.Domain;
|
|
4
|
+
|
|
5
|
+
public class OrderAggregate(Guid id) : AggregateRoot(id)
|
|
6
|
+
{
|
|
7
|
+
public long? CompletedAt { get; private set; }
|
|
8
|
+
public long? CancelledAt { get; private set; }
|
|
9
|
+
public ClientValueObject Client { get; private set; } = default!;
|
|
10
|
+
public List<ProductEntity> Products { get; private set; } = [];
|
|
11
|
+
public OrderStatus Status { get; private set; }
|
|
12
|
+
public string? ReasonForCancellation { get; private set; }
|
|
13
|
+
public AddressValueObject ShippingAddress { get; private set; } = default!;
|
|
14
|
+
|
|
15
|
+
public static OrderAggregate Create(Guid id, ClientValueObject client, AddressValueObject shippingAddress, Guid tenant, Guid createBy)
|
|
16
|
+
{
|
|
17
|
+
DomainGuard.GuidIsEmpty(id, Errors.IdOrderIsInvalid);
|
|
18
|
+
DomainGuard.IsNull(client, Errors.ClientIsNull);
|
|
19
|
+
DomainGuard.GuidIsEmpty(tenant, Errors.TenantIsInvalid);
|
|
20
|
+
DomainGuard.IsNull(shippingAddress, Errors.AddressIsNull);
|
|
21
|
+
|
|
22
|
+
var @event = OrderCreatedDomainEvent.Create(id, client, shippingAddress, tenant, createBy);
|
|
23
|
+
|
|
24
|
+
var aggregate = new OrderAggregate(id)
|
|
25
|
+
{
|
|
26
|
+
Client = client,
|
|
27
|
+
ShippingAddress = shippingAddress,
|
|
28
|
+
CreatedAt = @event.CreatedAt,
|
|
29
|
+
Status = @event.OrderStatus,
|
|
30
|
+
Tenant = tenant,
|
|
31
|
+
CreatedBy = createBy
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
aggregate.AddEvent(@event);
|
|
35
|
+
|
|
36
|
+
return aggregate;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public void AddProduct(Guid id, string name, string description, long price, int quantity, Guid updateBy)
|
|
40
|
+
{
|
|
41
|
+
DomainGuard.GuidIsEmpty(id, Errors.IdProductIsInvalid);
|
|
42
|
+
DomainGuard.IsNullOrEmpty(name, Errors.NameProductIsInvalid);
|
|
43
|
+
DomainGuard.IsLessThan(price, 0, Errors.PriceProductIsInvalid);
|
|
44
|
+
DomainGuard.IsLessThan(quantity, 0, Errors.QuantityProductIsInvalid);
|
|
45
|
+
|
|
46
|
+
this.UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
47
|
+
this.UpdatedBy = updateBy;
|
|
48
|
+
|
|
49
|
+
var product = new ProductEntity
|
|
50
|
+
{
|
|
51
|
+
Id = id,
|
|
52
|
+
Name = name,
|
|
53
|
+
Description = description,
|
|
54
|
+
Price = price,
|
|
55
|
+
Quantity = quantity
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
Products.Add(product);
|
|
59
|
+
|
|
60
|
+
AddEvent(ProductAddedToOrderDomainEvent.Create(Id, quantity, product));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public void RemoveProduct(Guid productId, Guid updateBy)
|
|
64
|
+
{
|
|
65
|
+
DomainGuard.GuidIsEmpty(productId, Errors.IdProductIsInvalid);
|
|
66
|
+
|
|
67
|
+
var product = Products.SingleOrDefault(x => x.Id == productId);
|
|
68
|
+
|
|
69
|
+
DomainGuard.IsNull(product, Errors.ProductNotFound);
|
|
70
|
+
|
|
71
|
+
this.UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
72
|
+
this.UpdatedBy = updateBy;
|
|
73
|
+
|
|
74
|
+
Products.Remove(product);
|
|
75
|
+
|
|
76
|
+
AddEvent(ProductRemovedFromOrderDomainEvent.Create(Id, productId));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public void UpdateProductQuantity(Guid productId, int newQuantity, Guid updateBy)
|
|
80
|
+
{
|
|
81
|
+
DomainGuard.GuidIsEmpty(productId, Errors.IdProductIsInvalid);
|
|
82
|
+
DomainGuard.IsLessThan(newQuantity, 0, Errors.QuantityProductIsInvalid);
|
|
83
|
+
|
|
84
|
+
var product = Products.SingleOrDefault(p => p.Id == productId);
|
|
85
|
+
|
|
86
|
+
DomainGuard.IsNull(product, Errors.ProductNotFound);
|
|
87
|
+
|
|
88
|
+
this.UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
89
|
+
this.UpdatedBy = updateBy;
|
|
90
|
+
|
|
91
|
+
product.Quantity = newQuantity;
|
|
92
|
+
|
|
93
|
+
AddEvent(ProductQuantityUpdatedDomainEvent.Create(Id, productId, newQuantity));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public void CompleteOrder(Guid updateBy)
|
|
97
|
+
{
|
|
98
|
+
DomainGuard.IsTrue(Status == OrderStatus.Cancelled, Errors.OrderAlreadyCancelled);
|
|
99
|
+
DomainGuard.IsTrue(Status == OrderStatus.Completed, Errors.OrderAlreadyCompleted);
|
|
100
|
+
|
|
101
|
+
var @event = OrderCompletedDomainEvent.Create(Id);
|
|
102
|
+
|
|
103
|
+
this.UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
104
|
+
this.UpdatedBy = updateBy;
|
|
105
|
+
|
|
106
|
+
this.CompletedAt = @event.CompletedAt;
|
|
107
|
+
this.Status = OrderStatus.Completed;
|
|
108
|
+
|
|
109
|
+
AddEvent(OrderCompletedDomainEvent.Create(Id));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
public void CancelOrder(string reason, Guid updateBy)
|
|
113
|
+
{
|
|
114
|
+
DomainGuard.IsTrue(Status == OrderStatus.Cancelled, Errors.OrderAlreadyCancelled);
|
|
115
|
+
|
|
116
|
+
this.UpdatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
117
|
+
this.UpdatedBy = updateBy;
|
|
118
|
+
this.ReasonForCancellation = reason;
|
|
119
|
+
this.CancelledAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
|
120
|
+
this.Status = OrderStatus.Cancelled;
|
|
121
|
+
|
|
122
|
+
AddEvent(OrderCancelledDomainEvent.Create(Id, reason));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.Repositories;
|
|
2
|
+
|
|
3
|
+
public interface IOrderRepository : IRepositoryBase
|
|
4
|
+
{
|
|
5
|
+
Task<OrderAggregate> FindAsync(Guid id, CancellationToken cancellationToken);
|
|
6
|
+
Task<List<OrderAggregate>> GetAllOrdersAsync(CancellationToken cancellationToken);
|
|
7
|
+
Task CreateOrderAsync(OrderAggregate order, CancellationToken cancellationToken);
|
|
8
|
+
Task AddProductToOrderAsync(AddProductToOrderParams parameters, CancellationToken cancellationToken);
|
|
9
|
+
Task RemoveProductFromOrderAsync(RemoveProductFromOrderParams parameters, CancellationToken cancellationToken);
|
|
10
|
+
Task UpdateQuantityProductAsync(UpdateQuantityProductParams parameters, CancellationToken cancellationToken);
|
|
11
|
+
Task CompleteOrderAsync(CompleteOrderParams parameters, CancellationToken cancellationToken);
|
|
12
|
+
Task CancelOrderAsync(CancelOrderParams parameters, CancellationToken cancellationToken);
|
|
13
|
+
Task UpdateOrderAsync(OrderAggregate order, CancellationToken cancellationToken);
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
using Microsoft.Extensions.Configuration;
|
|
2
|
+
using Microsoft.Extensions.DependencyInjection;
|
|
3
|
+
|
|
4
|
+
namespace CodeDesignPlus.Net.Microservice.Domain;
|
|
5
|
+
|
|
6
|
+
public class Startup : IStartup
|
|
7
|
+
{
|
|
8
|
+
public void Initialize(IServiceCollection services, IConfiguration configuration)
|
|
9
|
+
{
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
global using CodeDesignPlus.Net.Core.Abstractions;
|
|
2
|
+
global using CodeDesignPlus.Net.Core.Abstractions.Attributes;
|
|
3
|
+
global using CodeDesignPlus.Net.Exceptions.Guards;
|
|
4
|
+
global using CodeDesignPlus.Net.Mongo.Abstractions;
|
|
5
|
+
global using CodeDesignPlus.Net.Serializers;
|
|
6
|
+
global using System.Text.RegularExpressions;
|
|
7
|
+
|
|
8
|
+
global using CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
|
|
9
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Entities;
|
|
10
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Enums;
|
|
11
|
+
global using CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|