feat(transactions): enhance transaction filtering and summary capabilities
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
- Added new date range filters (CreatedFrom, CreatedTo, PaymentDateFrom, PaymentDateTo) to GetAllTransactionsByFilterQuery for improved transaction querying. - Updated GetAllTransactionsByFilterQueryHandler to apply new filters and return detailed transaction models. - Introduced GetTransactionSummary RPC method in Protobuf for summarizing transaction data. - Enhanced mapping configurations to accommodate new filter properties and response models. - Bumped Protobuf project version to reflect the addition of new features.
This commit is contained in:
+17
@@ -0,0 +1,17 @@
|
||||
using CMSMicroservice.Application.TransactionsCQ.Queries.GetAllTransactionsByFilter;
|
||||
|
||||
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetTransactionSummary;
|
||||
|
||||
public record GetTransactionSummaryQuery : IRequest<GetTransactionSummaryResponseDto>
|
||||
{
|
||||
public GetAllTransactionsByFilterFilter? Filter { get; init; }
|
||||
}
|
||||
|
||||
public class GetTransactionSummaryResponseDto
|
||||
{
|
||||
public long TotalCount { get; set; }
|
||||
public long TotalAmount { get; set; }
|
||||
public long SuccessCount { get; set; }
|
||||
public long PendingCount { get; set; }
|
||||
public long RejectCount { get; set; }
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
using CMSMicroservice.Application.TransactionsCQ.Queries.GetAllTransactionsByFilter;
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetTransactionSummary;
|
||||
|
||||
public class GetTransactionSummaryQueryHandler
|
||||
: IRequestHandler<GetTransactionSummaryQuery, GetTransactionSummaryResponseDto>
|
||||
{
|
||||
private readonly IApplicationDbContext _context;
|
||||
|
||||
public GetTransactionSummaryQueryHandler(IApplicationDbContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
public async Task<GetTransactionSummaryResponseDto> Handle(
|
||||
GetTransactionSummaryQuery request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var query = _context.Transactions
|
||||
.AsNoTracking()
|
||||
.ApplyTransactionFilter(request.Filter);
|
||||
|
||||
var totalCount = await query.LongCountAsync(cancellationToken);
|
||||
var totalAmount = totalCount > 0 ? await query.SumAsync(x => x.Amount, cancellationToken) : 0;
|
||||
var successCount = await query.LongCountAsync(x => x.PaymentStatus == PaymentStatus.Success, cancellationToken);
|
||||
var pendingCount = await query.LongCountAsync(x => x.PaymentStatus == PaymentStatus.Pending, cancellationToken);
|
||||
var rejectCount = await query.LongCountAsync(x => x.PaymentStatus == PaymentStatus.Reject, cancellationToken);
|
||||
|
||||
return new GetTransactionSummaryResponseDto
|
||||
{
|
||||
TotalCount = totalCount,
|
||||
TotalAmount = totalAmount,
|
||||
SuccessCount = successCount,
|
||||
PendingCount = pendingCount,
|
||||
RejectCount = rejectCount
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user