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)
2025-11-29 04:45:27 +03:30
|
|
|
using CMSMicroservice.Protobuf.Protos.Commission;
|
|
|
|
|
using CMSMicroservice.WebApi.Common.Services;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Commands.CalculateWeeklyBalances;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Commands.CalculateWeeklyCommissionPool;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Commands.ProcessUserPayouts;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Commands.RequestWithdrawal;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Commands.ProcessWithdrawal;
|
2025-12-01 16:43:53 +03:30
|
|
|
using CMSMicroservice.Application.CommissionCQ.Commands.ApproveWithdrawal;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Commands.RejectWithdrawal;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Commands.TriggerWeeklyCalculation;
|
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)
2025-11-29 04:45:27 +03:30
|
|
|
using CMSMicroservice.Application.CommissionCQ.Queries.GetWeeklyCommissionPool;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Queries.GetUserCommissionPayouts;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Queries.GetCommissionPayoutHistory;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Queries.GetUserWeeklyBalances;
|
2025-12-01 16:43:53 +03:30
|
|
|
using CMSMicroservice.Application.CommissionCQ.Queries.GetAllWeeklyPools;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Queries.GetWithdrawalRequests;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Queries.GetWorkerStatus;
|
|
|
|
|
using CMSMicroservice.Application.CommissionCQ.Queries.GetWorkerExecutionLogs;
|
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)
2025-11-29 04:45:27 +03:30
|
|
|
|
|
|
|
|
namespace CMSMicroservice.WebApi.Services;
|
|
|
|
|
|
|
|
|
|
public class CommissionService : CommissionContract.CommissionContractBase
|
|
|
|
|
{
|
|
|
|
|
private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS;
|
|
|
|
|
|
|
|
|
|
public CommissionService(IDispatchRequestToCQRS dispatchRequestToCQRS)
|
|
|
|
|
{
|
|
|
|
|
_dispatchRequestToCQRS = dispatchRequestToCQRS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Commands
|
|
|
|
|
public override async Task<Empty> CalculateWeeklyBalances(CalculateWeeklyBalancesRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<CalculateWeeklyBalancesRequest, CalculateWeeklyBalancesCommand>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<Empty> CalculateWeeklyCommissionPool(CalculateWeeklyCommissionPoolRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<CalculateWeeklyCommissionPoolRequest, CalculateWeeklyCommissionPoolCommand>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<Empty> ProcessUserPayouts(ProcessUserPayoutsRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<ProcessUserPayoutsRequest, ProcessUserPayoutsCommand>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<Empty> RequestWithdrawal(RequestWithdrawalRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<RequestWithdrawalRequest, RequestWithdrawalCommand>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<Empty> ProcessWithdrawal(ProcessWithdrawalRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<ProcessWithdrawalRequest, ProcessWithdrawalCommand>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Queries
|
|
|
|
|
public override async Task<GetWeeklyCommissionPoolResponse> GetWeeklyCommissionPool(GetWeeklyCommissionPoolRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<GetWeeklyCommissionPoolRequest, GetWeeklyCommissionPoolQuery, GetWeeklyCommissionPoolResponse>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<GetUserCommissionPayoutsResponse> GetUserCommissionPayouts(GetUserCommissionPayoutsRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<GetUserCommissionPayoutsRequest, GetUserCommissionPayoutsQuery, GetUserCommissionPayoutsResponse>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<GetCommissionPayoutHistoryResponse> GetCommissionPayoutHistory(GetCommissionPayoutHistoryRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<GetCommissionPayoutHistoryRequest, GetCommissionPayoutHistoryQuery, GetCommissionPayoutHistoryResponse>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<GetUserWeeklyBalancesResponse> GetUserWeeklyBalances(GetUserWeeklyBalancesRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<GetUserWeeklyBalancesRequest, GetUserWeeklyBalancesQuery, GetUserWeeklyBalancesResponse>(request, context);
|
|
|
|
|
}
|
2025-12-01 16:43:53 +03:30
|
|
|
|
|
|
|
|
public override async Task<GetAllWeeklyPoolsResponse> GetAllWeeklyPools(GetAllWeeklyPoolsRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<GetAllWeeklyPoolsRequest, GetAllWeeklyPoolsQuery, GetAllWeeklyPoolsResponse>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<GetWithdrawalRequestsResponse> GetWithdrawalRequests(GetWithdrawalRequestsRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<GetWithdrawalRequestsRequest, GetWithdrawalRequestsQuery, GetWithdrawalRequestsResponse>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<Empty> ApproveWithdrawal(ApproveWithdrawalRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<ApproveWithdrawalRequest, ApproveWithdrawalCommand>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<Empty> RejectWithdrawal(RejectWithdrawalRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<RejectWithdrawalRequest, RejectWithdrawalCommand>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Worker Control APIs
|
|
|
|
|
public override async Task<TriggerWeeklyCalculationResponse> TriggerWeeklyCalculation(TriggerWeeklyCalculationRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<TriggerWeeklyCalculationRequest, TriggerWeeklyCalculationCommand, TriggerWeeklyCalculationResponse>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<GetWorkerStatusResponse> GetWorkerStatus(GetWorkerStatusRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<GetWorkerStatusRequest, GetWorkerStatusQuery, GetWorkerStatusResponse>(request, context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override async Task<GetWorkerExecutionLogsResponse> GetWorkerExecutionLogs(GetWorkerExecutionLogsRequest request, ServerCallContext context)
|
|
|
|
|
{
|
|
|
|
|
return await _dispatchRequestToCQRS.Handle<GetWorkerExecutionLogsRequest, GetWorkerExecutionLogsQuery, GetWorkerExecutionLogsResponse>(request, context);
|
|
|
|
|
}
|
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)
2025-11-29 04:45:27 +03:30
|
|
|
}
|