feat: Implement Public Message management features including create, update, delete, and publish functionalities

This commit is contained in:
masoodafar-web
2025-12-04 17:29:05 +03:30
parent 64b6f34185
commit 82319285bc
19 changed files with 550 additions and 98 deletions
@@ -1,4 +1,6 @@
using BackOffice.BFF.Application.Common.Interfaces;
using BackOffice.BFF.Package.Protobuf.Protos.Package;
using CMSMicroservice.Protobuf.Protos.Package;
using MediatR;
using Microsoft.Extensions.Logging;
@@ -6,47 +8,49 @@ namespace BackOffice.BFF.Application.PackageCQ.Queries.GetUserPackageStatus;
public class GetUserPackageStatusQueryHandler : IRequestHandler<GetUserPackageStatusQuery, GetUserPackageStatusResponse>
{
private readonly PackageContract.PackageContractClient _packageClient;
private readonly IApplicationContractContext _context;
private readonly ILogger<GetUserPackageStatusQueryHandler> _logger;
public GetUserPackageStatusQueryHandler(
PackageContract.PackageContractClient packageClient,
IApplicationContractContext context,
ILogger<GetUserPackageStatusQueryHandler> logger)
{
_packageClient = packageClient;
_context = context;
_logger = logger;
}
public async Task<GetUserPackageStatusResponse> 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 است تا وضعیت کاربران را بررسی کند
var grpcRequest = new GetUserPackageStatusRequest
{
UserId = request.UserId
};
throw new NotImplementedException("GetUserPackageStatus needs implementation");
var response = await _context.Packages.GetUserPackageStatusAsync(grpcRequest, cancellationToken: cancellationToken);
_logger.LogInformation("Retrieved package status for user {UserId}", request.UserId);
var result = new GetUserPackageStatusResponse
{
UserId = response.UserId,
PackagePurchaseMethod = response.PackagePurchaseMethod,
HasPurchasedPackage = response.HasPurchasedPackage,
IsClubMemberActive = response.IsClubMemberActive,
WalletBalance = response.WalletBalance,
DiscountBalance = response.DiscountBalance,
CanActivateClubMembership = response.CanActivateClubMembership
};
if (response.LastOrderNumber != null)
{
result.LastOrderNumber = response.LastOrderNumber;
}
if (response.LastPurchaseDate != null)
{
result.LastPurchaseDate = response.LastPurchaseDate;
}
return result;
}
}