feat: Add gRPC clients and services for Club, Commission, Network, and Discount functionalities
This commit is contained in:
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user