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; using CMSMicroservice.Application.CommissionCQ.Commands.ApproveWithdrawal; using CMSMicroservice.Application.CommissionCQ.Commands.RejectWithdrawal; using CMSMicroservice.Application.CommissionCQ.Commands.TriggerWeeklyCalculation; using CMSMicroservice.Application.CommissionCQ.Queries.GetWeeklyCommissionPool; using CMSMicroservice.Application.CommissionCQ.Queries.GetUserCommissionPayouts; using CMSMicroservice.Application.CommissionCQ.Queries.GetCommissionPayoutHistory; using CMSMicroservice.Application.CommissionCQ.Queries.GetUserWeeklyBalances; using CMSMicroservice.Application.CommissionCQ.Queries.GetAllWeeklyPools; using CMSMicroservice.Application.CommissionCQ.Queries.GetWithdrawalRequests; using CMSMicroservice.Application.CommissionCQ.Queries.GetWorkerStatus; using CMSMicroservice.Application.CommissionCQ.Queries.GetWorkerExecutionLogs; namespace CMSMicroservice.WebApi.Services; public class CommissionService : CommissionContract.CommissionContractBase { private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS; public CommissionService(IDispatchRequestToCQRS dispatchRequestToCQRS) { _dispatchRequestToCQRS = dispatchRequestToCQRS; } // Commands public override async Task CalculateWeeklyBalances(CalculateWeeklyBalancesRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task CalculateWeeklyCommissionPool(CalculateWeeklyCommissionPoolRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task ProcessUserPayouts(ProcessUserPayoutsRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task RequestWithdrawal(RequestWithdrawalRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task ProcessWithdrawal(ProcessWithdrawalRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } // Queries public override async Task GetWeeklyCommissionPool(GetWeeklyCommissionPoolRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task GetUserCommissionPayouts(GetUserCommissionPayoutsRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task GetCommissionPayoutHistory(GetCommissionPayoutHistoryRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task GetUserWeeklyBalances(GetUserWeeklyBalancesRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task GetAllWeeklyPools(GetAllWeeklyPoolsRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task GetWithdrawalRequests(GetWithdrawalRequestsRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task ApproveWithdrawal(ApproveWithdrawalRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task RejectWithdrawal(RejectWithdrawalRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } // Worker Control APIs public override async Task TriggerWeeklyCalculation(TriggerWeeklyCalculationRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task GetWorkerStatus(GetWorkerStatusRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task GetWorkerExecutionLogs(GetWorkerExecutionLogsRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } }