feat: Add gRPC API Layer - Phase 6 Integration

Added Protobuf definitions and gRPC services for all CQ layers:

Protobuf Files (4):
- configuration.proto: 2 Commands + 3 Queries (5 RPCs)
- clubmembership.proto: 3 Commands + 3 Queries (6 RPCs)
- networkmembership.proto: 3 Commands + 3 Queries (6 RPCs)
- commission.proto: 5 Commands + 4 Queries (9 RPCs)

gRPC Services (4):
- ConfigurationService: SetConfigurationValue, Deactivate, GetByKey, GetAll, GetHistory
- ClubMembershipService: Activate, Deactivate, AssignFeature, Get, GetAll, GetHistory
- NetworkMembershipService: Join, Move, Remove, GetPosition, GetTree, GetHistory
- CommissionService: Calculate+Process+Withdraw (5 commands), Get queries (4)

Features:
- HTTP transcoding enabled via google.api.http annotations
- Auto-registration via ConfigureGrpcEndpoints
- MetaData pagination support
- Request/Response DTOs for all endpoints
- Integration with MediatR CQRS handlers

Total: 4 proto files, 4 service classes, 26 RPC endpoints
Build:  Successful (0 errors)
This commit is contained in:
masoodafar-web
2025-11-29 04:45:27 +03:30
parent 3010881b4e
commit 2bb8c2a13c
9 changed files with 890 additions and 0 deletions
@@ -0,0 +1,50 @@
using CMSMicroservice.Protobuf.Protos.ClubMembership;
using CMSMicroservice.WebApi.Common.Services;
using CMSMicroservice.Application.ClubMembershipCQ.Commands.ActivateClubMembership;
using CMSMicroservice.Application.ClubMembershipCQ.Commands.DeactivateClubMembership;
using CMSMicroservice.Application.ClubMembershipCQ.Commands.AssignClubFeature;
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembership;
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetAllClubMemberships;
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembershipHistory;
namespace CMSMicroservice.WebApi.Services;
public class ClubMembershipService : ClubMembershipContract.ClubMembershipContractBase
{
private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS;
public ClubMembershipService(IDispatchRequestToCQRS dispatchRequestToCQRS)
{
_dispatchRequestToCQRS = dispatchRequestToCQRS;
}
public override async Task<Empty> ActivateClubMembership(ActivateClubMembershipRequest request, ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<ActivateClubMembershipRequest, ActivateClubMembershipCommand>(request, context);
}
public override async Task<Empty> DeactivateClubMembership(DeactivateClubMembershipRequest request, ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<DeactivateClubMembershipRequest, DeactivateClubMembershipCommand>(request, context);
}
public override async Task<Empty> AssignFeatureToMembership(AssignFeatureToMembershipRequest request, ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<AssignFeatureToMembershipRequest, AssignClubFeatureCommand>(request, context);
}
public override async Task<GetClubMembershipResponse> GetClubMembership(GetClubMembershipRequest request, ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<GetClubMembershipRequest, GetClubMembershipQuery, GetClubMembershipResponse>(request, context);
}
public override async Task<GetAllClubMembershipsResponse> GetAllClubMemberships(GetAllClubMembershipsRequest request, ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<GetAllClubMembershipsRequest, GetAllClubMembershipsQuery, GetAllClubMembershipsResponse>(request, context);
}
public override async Task<GetClubMembershipHistoryResponse> GetClubMembershipHistory(GetClubMembershipHistoryRequest request, ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<GetClubMembershipHistoryRequest, GetClubMembershipHistoryQuery, GetClubMembershipHistoryResponse>(request, context);
}
}