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() where T : Grpc.Core.ClientBase { return _serviceProvider.GetService() ?? throw new Exception($"requested service not registered: {typeof(T).FullName}"); } #endregion public ApplicationContractContext(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } #region FM public FileInfoContract.FileInfoContractClient FileInfos => GetService(); #endregion #region CMS public PackageContract.PackageContractClient Packages => GetService(); public ProductsContract.ProductsContractClient Products => GetService(); public ProductImagesContract.ProductImagesContractClient ProductImages => GetService(); public ProductGalleriesContract.ProductGalleriesContractClient ProductGalleries => GetService(); public RoleContract.RoleContractClient Roles => GetService(); public CategoryContract.CategoryContractClient Categories => GetService(); public ProductCategoryContract.ProductCategoryContractClient ProductCategories => GetService(); public UserAddressContract.UserAddressContractClient UserAddress => GetService(); public UserContract.UserContractClient Users => GetService(); public UserOrderContract.UserOrderContractClient UserOrders => GetService(); public UserRoleContract.UserRoleContractClient UserRoles => GetService(); // Network & Commission System public CommissionContract.CommissionContractClient Commissions => GetService(); public NetworkMembershipContract.NetworkMembershipContractClient NetworkMemberships => GetService(); public ClubMembershipContract.ClubMembershipContractClient ClubMemberships => GetService(); public ConfigurationContract.ConfigurationContractClient Configurations => GetService(); // Discount Shop System (Phase 9) public DiscountProductContract.DiscountProductContractClient DiscountProducts => GetService(); public DiscountCategoryContract.DiscountCategoryContractClient DiscountCategories => GetService(); public DiscountShoppingCartContract.DiscountShoppingCartContractClient DiscountShoppingCarts => GetService(); public DiscountOrderContract.DiscountOrderContractClient DiscountOrders => GetService(); // Tag Management System public TagContract.TagContractClient Tags => GetService(); public ProductTagContract.ProductTagContractClient ProductTags => GetService(); #endregion }