Files
BackOffice.BFF/src/BackOffice.BFF.Application/CommissionCQ/Queries/GetWithdrawalReports/GetWithdrawalReportsQueryHandler.cs
masoodafar-web 4f400eabc5 feat: Implement Discount Product and Shopping Cart functionalities
- Added UpdateDiscountProductCommandValidator for validating discount product updates.
- Created GetDiscountProductByIdQuery and its handler for retrieving discount product details by ID.
- Implemented GetDiscountProductsQuery and handler for fetching a list of discount products with filtering options.
- Developed AddToCartCommand and handler for adding products to the shopping cart.
- Implemented ClearCartCommand and handler for clearing the shopping cart.
- Created RemoveFromCartCommand and handler for removing items from the cart.
- Added UpdateCartItemCountCommand and handler for updating the quantity of items in the cart.
- Developed GetUserCartQuery and handler for retrieving the user's shopping cart details.
- Implemented Product Tag functionalities including assigning tags to products, creating, updating, and deleting tags.
- Added queries for fetching all tags and products by tag.
2025-12-04 02:41:19 +03:30

79 lines
2.8 KiB
C#

using BackOffice.BFF.Commission.Protobuf;
using Google.Protobuf.WellKnownTypes;
namespace BackOffice.BFF.Application.CommissionCQ.Queries.GetWithdrawalReports;
public class GetWithdrawalReportsQueryHandler : IRequestHandler<GetWithdrawalReportsQuery, GetWithdrawalReportsResponseDto>
{
private readonly IApplicationContractContext _context;
public GetWithdrawalReportsQueryHandler(IApplicationContractContext context)
{
_context = context;
}
public async Task<GetWithdrawalReportsResponseDto> Handle(GetWithdrawalReportsQuery request, CancellationToken cancellationToken)
{
var grpcRequest = new GetWithdrawalReportsRequest
{
PeriodType = (int)request.PeriodType
};
// تنظیم بازه زمانی
if (request.StartDate.HasValue)
{
grpcRequest.StartDate = Timestamp.FromDateTime(request.StartDate.Value.ToUniversalTime());
}
if (request.EndDate.HasValue)
{
grpcRequest.EndDate = Timestamp.FromDateTime(request.EndDate.Value.ToUniversalTime());
}
// فیلتر وضعیت
if (request.Status.HasValue)
{
grpcRequest.Status = request.Status.Value;
}
// فیلتر کاربر
if (request.UserId.HasValue)
{
grpcRequest.UserId = request.UserId.Value;
}
var response = await _context.Commissions.GetWithdrawalReportsAsync(grpcRequest, cancellationToken: cancellationToken);
// تبدیل به DTO
return new GetWithdrawalReportsResponseDto
{
PeriodReports = response.PeriodReports.Select(p => new PeriodReportDto
{
PeriodLabel = p.PeriodLabel,
StartDate = p.StartDate.ToDateTime(),
EndDate = p.EndDate.ToDateTime(),
TotalRequests = p.TotalRequests,
PendingCount = p.PendingCount,
ApprovedCount = p.ApprovedCount,
RejectedCount = p.RejectedCount,
CompletedCount = p.CompletedCount,
FailedCount = p.FailedCount,
TotalAmount = p.TotalAmount,
PaidAmount = p.PaidAmount,
PendingAmount = p.PendingAmount
}).ToList(),
Summary = new WithdrawalSummaryDto
{
TotalRequests = response.Summary.TotalRequests,
TotalAmount = response.Summary.TotalAmount,
TotalPaid = response.Summary.TotalPaid,
TotalPending = response.Summary.TotalPending,
TotalRejected = response.Summary.TotalRejected,
AverageAmount = response.Summary.AverageAmount,
UniqueUsers = response.Summary.UniqueUsers,
SuccessRate = (decimal)response.Summary.SuccessRate
}
};
}
}