using BackOffice.BFF.Package.Protobuf.Protos.Package; using MediatR; using Microsoft.Extensions.Logging; namespace BackOffice.BFF.Application.PackageCQ.Queries.GetUserPackageStatus; public class GetUserPackageStatusQueryHandler : IRequestHandler { private readonly PackageContract.PackageContractClient _packageClient; private readonly ILogger _logger; public GetUserPackageStatusQueryHandler( PackageContract.PackageContractClient packageClient, ILogger logger) { _packageClient = packageClient; _logger = logger; } public async Task Handle(GetUserPackageStatusQuery request, CancellationToken cancellationToken) { // TODO: پیاده‌سازی GetUserPackageStatus // // 1. ایجاد gRPC Request: // - var grpcRequest = new CMSMicroservice.Protobuf.Protos.Package.GetUserPackageStatusRequest { // UserId = request.UserId // } // // 2. فراخوانی CMS: // - var response = await _packageClient.GetUserPackageStatusAsync(grpcRequest, cancellationToken: cancellationToken) // // 3. تبدیل به BFF Response: // - return new GetUserPackageStatusResponse { // UserId = response.UserId, // PackagePurchaseMethod = response.PackagePurchaseMethod, // HasPurchasedPackage = response.HasPurchasedPackage, // IsClubMemberActive = response.IsClubMemberActive, // WalletBalance = response.WalletBalance, // DiscountBalance = response.DiscountBalance, // CanActivateClubMembership = response.CanActivateClubMembership, // LastOrderNumber = response.LastOrderNumber, // LastPurchaseDate = response.LastPurchaseDate // } // // 4. Log: // - _logger.LogInformation("Retrieved package status for user {UserId}", request.UserId) // // نکته: این endpoint برای Admin است تا وضعیت کاربران را بررسی کند throw new NotImplementedException("GetUserPackageStatus needs implementation"); } }