From baa0c1449c0e295d91d7253b369fe4ea182a4e95 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Thu, 20 Nov 2025 00:56:58 +0330 Subject: [PATCH] Refactor ShopingCart references and add UserCarts integration --- .../Interfaces/IApplicationContractContext.cs | 2 ++ .../GetAllUserCartQueryHandler.cs | 20 +++++++++++++++++-- .../FrontOffice.BFF.Domain.csproj | 2 +- .../Services/ApplicationContractContext.cs | 2 ++ .../FrontOffice.BFF.WebApi.csproj | 1 + .../Services/ShopingCartService.cs | 3 ++- src/FrontOffice.BFF.sln | 7 +++++++ .../AddNewUserCartRequestValidator.cs | 2 +- .../UpdateUserCartRequestValidator.cs | 2 +- 9 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/FrontOffice.BFF.Application/Common/Interfaces/IApplicationContractContext.cs b/src/FrontOffice.BFF.Application/Common/Interfaces/IApplicationContractContext.cs index 956f229..f2ed78f 100644 --- a/src/FrontOffice.BFF.Application/Common/Interfaces/IApplicationContractContext.cs +++ b/src/FrontOffice.BFF.Application/Common/Interfaces/IApplicationContractContext.cs @@ -3,6 +3,7 @@ using CMSMicroservice.Protobuf.Protos.Package; using CMSMicroservice.Protobuf.Protos.Products; using CMSMicroservice.Protobuf.Protos.User; using CMSMicroservice.Protobuf.Protos.UserAddress; +using CMSMicroservice.Protobuf.Protos.UserCarts; using CMSMicroservice.Protobuf.Protos.UserContract; using CMSMicroservice.Protobuf.Protos.UserOrder; using PYMSMicroservice.Protobuf.Protos.Transaction; @@ -20,6 +21,7 @@ public interface IApplicationContractContext #region CMS PackageContract.PackageContractClient Package { get; } ProductsContract.ProductsContractClient Product { get; } + UserCartsContract.UserCartsContractClient UserCart { get; } UserContract.UserContractClient User { get; } UserContractContract.UserContractContractClient UserContract { get; } UserAddressContract.UserAddressContractClient UserAddress { get; } diff --git a/src/FrontOffice.BFF.Application/ShopingCartCQ/Queries/GetAllUserCart/GetAllUserCartQueryHandler.cs b/src/FrontOffice.BFF.Application/ShopingCartCQ/Queries/GetAllUserCart/GetAllUserCartQueryHandler.cs index 696a477..89dd193 100644 --- a/src/FrontOffice.BFF.Application/ShopingCartCQ/Queries/GetAllUserCart/GetAllUserCartQueryHandler.cs +++ b/src/FrontOffice.BFF.Application/ShopingCartCQ/Queries/GetAllUserCart/GetAllUserCartQueryHandler.cs @@ -1,16 +1,32 @@ +using CMSMicroservice.Protobuf.Protos.UserCarts; + namespace FrontOffice.BFF.Application.ShopingCartCQ.Queries.GetAllUserCart; public class GetAllUserCartQueryHandler : IRequestHandler { private readonly IApplicationContractContext _context; + private readonly ICurrentUserService _currentUserService; - public GetAllUserCartQueryHandler(IApplicationContractContext context) + public GetAllUserCartQueryHandler(IApplicationContractContext context, ICurrentUserService currentUserService) { _context = context; + _currentUserService = currentUserService; } public async Task Handle(GetAllUserCartQuery request, CancellationToken cancellationToken) { - //TODO: Implement your business logic + var userAllCartResponse=await _context.UserCart.GetAllUserCartsByFilterAsync(new GetAllUserCartsByFilterRequest() + { + Filter = new GetAllUserCartsByFilterFilter() + { + UserId = long.Parse(_currentUserService.UserId ?? throw new InvalidOperationException()) + } + }, cancellationToken: cancellationToken); + if (userAllCartResponse!=null && userAllCartResponse.Models.Count>0) + { + + return userAllCartResponse.Adapt(); + } + return new GetAllUserCartResponseDto(); } } diff --git a/src/FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj b/src/FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj index 95c204d..2aa8c45 100644 --- a/src/FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj +++ b/src/FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/FrontOffice.BFF.Infrastructure/Services/ApplicationContractContext.cs b/src/FrontOffice.BFF.Infrastructure/Services/ApplicationContractContext.cs index 81484f4..32612fb 100644 --- a/src/FrontOffice.BFF.Infrastructure/Services/ApplicationContractContext.cs +++ b/src/FrontOffice.BFF.Infrastructure/Services/ApplicationContractContext.cs @@ -3,6 +3,7 @@ using CMSMicroservice.Protobuf.Protos.Package; using CMSMicroservice.Protobuf.Protos.Products; using CMSMicroservice.Protobuf.Protos.User; using CMSMicroservice.Protobuf.Protos.UserAddress; +using CMSMicroservice.Protobuf.Protos.UserCarts; using CMSMicroservice.Protobuf.Protos.UserContract; using CMSMicroservice.Protobuf.Protos.UserOrder; using FrontOffice.BFF.Application.Common.Interfaces; @@ -44,6 +45,7 @@ public class ApplicationContractContext : IApplicationContractContext #region CMS public PackageContract.PackageContractClient Package => GetService(); public ProductsContract.ProductsContractClient Product => GetService(); + public UserCartsContract.UserCartsContractClient UserCart => GetService(); public UserContract.UserContractClient User => GetService(); public UserContractContract.UserContractContractClient UserContract => GetService(); diff --git a/src/FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj b/src/FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj index efd3196..35ebf30 100644 --- a/src/FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj +++ b/src/FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj @@ -21,6 +21,7 @@ + diff --git a/src/FrontOffice.BFF.WebApi/Services/ShopingCartService.cs b/src/FrontOffice.BFF.WebApi/Services/ShopingCartService.cs index fd72ed3..14b64ec 100644 --- a/src/FrontOffice.BFF.WebApi/Services/ShopingCartService.cs +++ b/src/FrontOffice.BFF.WebApi/Services/ShopingCartService.cs @@ -1,8 +1,9 @@ -using FrontOffice.BFF.Protobuf.Protos.ShopingCart; using FrontOffice.BFF.WebApi.Common.Services; using FrontOffice.BFF.Application.ShopingCartCQ.Commands.AddNewUserCart; using FrontOffice.BFF.Application.ShopingCartCQ.Queries.GetAllUserCart; using FrontOffice.BFF.Application.ShopingCartCQ.Commands.UpdateUserCart; +using FrontOffice.BFF.ShopingCart.Protobuf.Protos.ShopingCart; + namespace FrontOffice.BFF.WebApi.Services; public class ShopingCartService : ShopingCartContract.ShopingCartContractBase { diff --git a/src/FrontOffice.BFF.sln b/src/FrontOffice.BFF.sln index ee852cc..73e1d3d 100644 --- a/src/FrontOffice.BFF.sln +++ b/src/FrontOffice.BFF.sln @@ -24,6 +24,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FrontOffice.BFF.Transaction EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FrontOffice.BFF.Products.Protobuf", "Protobufs\FrontOffice.BFF.Products.Protobuf\FrontOffice.BFF.Products.Protobuf.csproj", "{CB77669F-5B48-4AC6-B20E-A928660E93F8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FrontOffice.BFF.ShopingCart.Protobuf", "Protobufs\FrontOffice.BFF.ShopingCart.Protobuf\FrontOffice.BFF.ShopingCart.Protobuf.csproj", "{DC61324B-D389-4A1D-B048-D0AA43A6BBE7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -70,6 +72,10 @@ Global {CB77669F-5B48-4AC6-B20E-A928660E93F8}.Debug|Any CPU.Build.0 = Debug|Any CPU {CB77669F-5B48-4AC6-B20E-A928660E93F8}.Release|Any CPU.ActiveCfg = Release|Any CPU {CB77669F-5B48-4AC6-B20E-A928660E93F8}.Release|Any CPU.Build.0 = Release|Any CPU + {DC61324B-D389-4A1D-B048-D0AA43A6BBE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DC61324B-D389-4A1D-B048-D0AA43A6BBE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DC61324B-D389-4A1D-B048-D0AA43A6BBE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DC61324B-D389-4A1D-B048-D0AA43A6BBE7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -81,5 +87,6 @@ Global {663CDDFA-E15F-4356-AE01-2311C9B83D52} = {CA9BF4D6-6729-4011-888E-48F5F739B469} {F59861D9-01D6-44C9-85A9-E6050D55D290} = {CA9BF4D6-6729-4011-888E-48F5F739B469} {CB77669F-5B48-4AC6-B20E-A928660E93F8} = {CA9BF4D6-6729-4011-888E-48F5F739B469} + {DC61324B-D389-4A1D-B048-D0AA43A6BBE7} = {CA9BF4D6-6729-4011-888E-48F5F739B469} EndGlobalSection EndGlobal diff --git a/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/Validator/AddNewUserCartRequestValidator.cs b/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/Validator/AddNewUserCartRequestValidator.cs index 289c2e6..ffb46d1 100644 --- a/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/Validator/AddNewUserCartRequestValidator.cs +++ b/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/Validator/AddNewUserCartRequestValidator.cs @@ -1,5 +1,5 @@ using FluentValidation; -using FrontOfficeMicroservice.Protobuf.Protos.ShopingCart; +using FrontOffice.BFF.ShopingCart.Protobuf.Protos.ShopingCart; namespace FrontOfficeMicroservice.Protobuf.Validator.ShopingCart; public class AddNewUserCartRequestValidator : AbstractValidator diff --git a/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/Validator/UpdateUserCartRequestValidator.cs b/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/Validator/UpdateUserCartRequestValidator.cs index 5a09c33..4fbded6 100644 --- a/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/Validator/UpdateUserCartRequestValidator.cs +++ b/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/Validator/UpdateUserCartRequestValidator.cs @@ -1,5 +1,5 @@ using FluentValidation; -using FrontOfficeMicroservice.Protobuf.Protos.ShopingCart; +using FrontOffice.BFF.ShopingCart.Protobuf.Protos.ShopingCart; namespace FrontOfficeMicroservice.Protobuf.Validator.ShopingCart; public class UpdateUserCartRequestValidator : AbstractValidator