feat: Implement Club Membership features including activation and retrieval of membership status

- Added command and handler for activating club membership with optional activation code and duration.
- Created response DTO for club membership activation.
- Implemented query and handler to retrieve current user's club membership status.
- Added necessary Protobuf service calls for club membership operations.
- Introduced new queries for retrieving network statistics and network tree structure.
- Enhanced commission queries to fetch user commission payouts and weekly balances.
- Updated application contract context to include new services for club and network memberships.
This commit is contained in:
masoodafar-web
2025-12-04 17:29:34 +03:30
parent bcf2bc2a52
commit 75e446f80f
28 changed files with 1036 additions and 32 deletions

View File

@@ -0,0 +1,38 @@
using FrontOffice.BFF.WebApi.Common.Services;
using FrontOffice.BFF.Application.ClubMembershipCQ.Queries.GetMyClubMembership;
using FrontOffice.BFF.Application.ClubMembershipCQ.Commands.ActivateMyClubMembership;
namespace FrontOffice.BFF.WebApi.Services;
/// <summary>
/// سرویس باشگاه مشتریان - مختص کاربر جاری
/// این سرویس فعلاً از REST API استفاده می‌کند تا proto فایل برایش ایجاد شود
/// TODO: ایجاد proto فایل و تبدیل به gRPC service
/// </summary>
public class ClubMembershipService
{
private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS;
public ClubMembershipService(IDispatchRequestToCQRS dispatchRequestToCQRS)
{
_dispatchRequestToCQRS = dispatchRequestToCQRS;
}
/// <summary>
/// دریافت وضعیت عضویت باشگاه کاربر جاری
/// </summary>
public async Task<GetMyClubMembershipResponseDto> GetMyClubMembership(Empty request, ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<GetMyClubMembershipQuery, GetMyClubMembershipResponseDto>(context);
}
/// <summary>
/// فعال‌سازی عضویت باشگاه (پرداخت 56M)
/// </summary>
public async Task<ActivateMyClubMembershipResponseDto> ActivateMyClubMembership(
ActivateMyClubMembershipCommand request,
ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<ActivateMyClubMembershipCommand, ActivateMyClubMembershipResponseDto>(request, context);
}
}