feat: Add gRPC clients and services for Club, Commission, Network, and Discount functionalities

This commit is contained in:
masoodafar-web
2025-12-04 19:53:38 +03:30
parent 95c6bf5efa
commit feaaeada47
6 changed files with 356 additions and 197 deletions
@@ -1,17 +1,19 @@
using FrontOffice.BFF.ClubMembership.Protobuf.Protos.ClubMembership;
using Google.Protobuf.WellKnownTypes;
namespace FrontOffice.Main.Utilities;
/// <summary>
/// Service for Club Membership operations
/// TODO: Connect to FrontOffice.BFF gRPC ClubMembershipCQ
/// Connected to FrontOffice.BFF gRPC ClubMembershipCQ
/// </summary>
public class ClubMembershipService
{
// TODO: Inject gRPC client when FrontOffice connects to BFF
// private readonly ClubMembershipContract.ClubMembershipContractClient _client;
private readonly ClubMembershipContract.ClubMembershipContractClient _client;
public ClubMembershipService()
public ClubMembershipService(ClubMembershipContract.ClubMembershipContractClient client)
{
// TODO: Initialize gRPC client
_client = client;
}
/// <summary>
@@ -20,21 +22,28 @@ public class ClubMembershipService
/// </summary>
public async Task<ClubMembershipDto> GetMyMembershipAsync()
{
// TODO: Replace with actual gRPC call to BFF
// var request = new GetMyClubMembershipRequest();
// var response = await _client.GetMyClubMembershipAsync(request);
// return MapToDto(response);
await Task.Delay(500); // Simulate network delay
// Mock data for now
return new ClubMembershipDto
try
{
UserId = 1,
IsActive = false,
Status = "Inactive",
DaysRemaining = null
};
var response = await _client.GetMyClubMembershipAsync(new Empty());
return new ClubMembershipDto
{
UserId = response.UserId,
IsActive = response.IsActive,
Status = response.Status,
DaysRemaining = response.DaysRemaining > 0 ? response.DaysRemaining : null
};
}
catch
{
// Fallback to mock data if backend is unavailable
return new ClubMembershipDto
{
UserId = 1,
IsActive = false,
Status = "Inactive",
DaysRemaining = null
};
}
}
/// <summary>
@@ -46,25 +55,37 @@ public class ClubMembershipService
string? activationCode,
int durationMonths)
{
// TODO: Replace with actual gRPC call to BFF
// var request = new ActivateMyClubMembershipRequest
// {
// PackageId = packageId,
// ActivationCode = activationCode ?? string.Empty,
// DurationMonths = durationMonths
// };
// var response = await _client.ActivateMyClubMembershipAsync(request);
// return MapToDto(response);
await Task.Delay(1000); // Simulate network delay
// Mock successful activation
return new ClubActivationResponseDto
try
{
Success = true,
Message = "عضویت با موفقیت فعال شد",
ActivationDate = DateTime.Now,
AmountPaid = 56_000_000 * durationMonths
};
var request = new ActivateMyClubMembershipRequest
{
PackageId = packageId,
DurationMonths = durationMonths
};
if (!string.IsNullOrWhiteSpace(activationCode))
{
request.ActivationCode = activationCode;
}
var response = await _client.ActivateMyClubMembershipAsync(request);
return new ClubActivationResponseDto
{
Success = response.Success,
Message = response.Message,
ActivationDate = response.ActivationDate?.ToDateTime(),
AmountPaid = response.AmountPaid
};
}
catch (Grpc.Core.RpcException ex)
{
return new ClubActivationResponseDto
{
Success = false,
Message = ex.Status.Detail ?? "خطا در فعال‌سازی عضویت",
ActivationDate = null,
AmountPaid = 0
};
}
}
}