Files
BackOffice.BFF/src/BackOffice.BFF.Infrastructure/Services/ApplicationContractContext.cs
masoodafar-web 4f400eabc5 feat: Implement Discount Product and Shopping Cart functionalities
- Added UpdateDiscountProductCommandValidator for validating discount product updates.
- Created GetDiscountProductByIdQuery and its handler for retrieving discount product details by ID.
- Implemented GetDiscountProductsQuery and handler for fetching a list of discount products with filtering options.
- Developed AddToCartCommand and handler for adding products to the shopping cart.
- Implemented ClearCartCommand and handler for clearing the shopping cart.
- Created RemoveFromCartCommand and handler for removing items from the cart.
- Added UpdateCartItemCountCommand and handler for updating the quantity of items in the cart.
- Developed GetUserCartQuery and handler for retrieving the user's shopping cart details.
- Implemented Product Tag functionalities including assigning tags to products, creating, updating, and deleting tags.
- Added queries for fetching all tags and products by tag.
2025-12-04 02:41:19 +03:30

85 lines
4.8 KiB
C#

using BackOffice.BFF.Application.Common.Interfaces;
using CMSMicroservice.Protobuf.Protos.Package;
using CMSMicroservice.Protobuf.Protos.Role;
using CMSMicroservice.Protobuf.Protos.User;
using CMSMicroservice.Protobuf.Protos.UserAddress;
using CMSMicroservice.Protobuf.Protos.UserOrder;
using CMSMicroservice.Protobuf.Protos.UserRole;
using CMSMicroservice.Protobuf.Protos.Products;
using CMSMicroservice.Protobuf.Protos.ProductImages;
using CMSMicroservice.Protobuf.Protos.ProductGalleries;
using CMSMicroservice.Protobuf.Protos.Category;
using CMSMicroservice.Protobuf.Protos.ProductCategory;
using BackOffice.BFF.Commission.Protobuf;
using BackOffice.BFF.NetworkMembership.Protobuf;
using BackOffice.BFF.ClubMembership.Protobuf;
using BackOffice.BFF.Configuration.Protobuf;
using FMSMicroservice.Protobuf.Protos.FileInfo;
using CMSMicroservice.Protobuf.Protos.DiscountProduct;
using CMSMicroservice.Protobuf.Protos.DiscountCategory;
using CMSMicroservice.Protobuf.Protos.DiscountShoppingCart;
using CMSMicroservice.Protobuf.Protos.DiscountOrder;
using CMSMicroservice.Protobuf.Protos.Tag;
using CMSMicroservice.Protobuf.Protos.ProductTag;
using Microsoft.Extensions.DependencyInjection;
namespace BackOffice.BFF.Infrastructure.Services;
public class ApplicationContractContext : IApplicationContractContext
{
#region members
private readonly IServiceProvider _serviceProvider;
#endregion
#region utilities
private T GetService<T>() where T : Grpc.Core.ClientBase<T>
{
return _serviceProvider.GetService<T>() ??
throw new Exception($"requested service not registered: {typeof(T).FullName}");
}
#endregion
public ApplicationContractContext(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
#region FM
public FileInfoContract.FileInfoContractClient FileInfos => GetService<FileInfoContract.FileInfoContractClient>();
#endregion
#region CMS
public PackageContract.PackageContractClient Packages => GetService<PackageContract.PackageContractClient>();
public ProductsContract.ProductsContractClient Products => GetService<ProductsContract.ProductsContractClient>();
public ProductImagesContract.ProductImagesContractClient ProductImages => GetService<ProductImagesContract.ProductImagesContractClient>();
public ProductGalleriesContract.ProductGalleriesContractClient ProductGalleries => GetService<ProductGalleriesContract.ProductGalleriesContractClient>();
public RoleContract.RoleContractClient Roles => GetService<RoleContract.RoleContractClient>();
public CategoryContract.CategoryContractClient Categories => GetService<CategoryContract.CategoryContractClient>();
public ProductCategoryContract.ProductCategoryContractClient ProductCategories => GetService<ProductCategoryContract.ProductCategoryContractClient>();
public UserAddressContract.UserAddressContractClient UserAddress => GetService<UserAddressContract.UserAddressContractClient>();
public UserContract.UserContractClient Users => GetService<UserContract.UserContractClient>();
public UserOrderContract.UserOrderContractClient UserOrders => GetService<UserOrderContract.UserOrderContractClient>();
public UserRoleContract.UserRoleContractClient UserRoles => GetService<UserRoleContract.UserRoleContractClient>();
// Network & Commission System
public CommissionContract.CommissionContractClient Commissions => GetService<CommissionContract.CommissionContractClient>();
public NetworkMembershipContract.NetworkMembershipContractClient NetworkMemberships => GetService<NetworkMembershipContract.NetworkMembershipContractClient>();
public ClubMembershipContract.ClubMembershipContractClient ClubMemberships => GetService<ClubMembershipContract.ClubMembershipContractClient>();
public ConfigurationContract.ConfigurationContractClient Configurations => GetService<ConfigurationContract.ConfigurationContractClient>();
// Discount Shop System (Phase 9)
public DiscountProductContract.DiscountProductContractClient DiscountProducts => GetService<DiscountProductContract.DiscountProductContractClient>();
public DiscountCategoryContract.DiscountCategoryContractClient DiscountCategories => GetService<DiscountCategoryContract.DiscountCategoryContractClient>();
public DiscountShoppingCartContract.DiscountShoppingCartContractClient DiscountShoppingCarts => GetService<DiscountShoppingCartContract.DiscountShoppingCartContractClient>();
public DiscountOrderContract.DiscountOrderContractClient DiscountOrders => GetService<DiscountOrderContract.DiscountOrderContractClient>();
// Tag Management System
public TagContract.TagContractClient Tags => GetService<TagContract.TagContractClient>();
public ProductTagContract.ProductTagContractClient ProductTags => GetService<ProductTagContract.ProductTagContractClient>();
#endregion
}