feat: add manual membership payment and update commission queries
Build and Deploy / build (push) Successful in 2m29s

This commit is contained in:
masoodafar-web
2025-12-12 10:23:52 +03:30
parent 19a717fc87
commit c6abee2650
18 changed files with 617 additions and 374 deletions
@@ -1,29 +1,37 @@
namespace BackOffice.BFF.Application.CommissionCQ.Queries.GetUserWeeklyBalances;
public record GetUserWeeklyBalancesQuery : IRequest<GetUserWeeklyBalancesResponseDto>
{
/// <summary>
/// موقعیت صفحه‌بندی
/// </summary>
public PaginationState? PaginationState { get; init; }
/// <summary>
/// مرتب‌سازی بر اساس
/// </summary>
public string? SortBy { get; init; }
/// <summary>
/// فیلتر
/// </summary>
public GetUserWeeklyBalancesFilter? Filter { get; init; }
}
public class GetUserWeeklyBalancesFilter
{
/// <summary>
/// شناسه کاربر (فیلتر اختیاری)
/// </summary>
public long? UserId { get; init; }
public long? UserId { get; set; }
/// <summary>
/// شماره هفته (فیلتر اختیاری)
/// </summary>
public string? WeekNumber { get; init; }
public string? WeekNumber { get; set; }
/// <summary>
/// فقط تعادل‌های فعال (منقضی نشده)
/// </summary>
public bool OnlyActive { get; init; }
/// <summary>
/// شماره صفحه
/// </summary>
public int PageIndex { get; init; } = 1;
/// <summary>
/// تعداد در صفحه
/// </summary>
public int PageSize { get; init; } = 10;
public bool? OnlyActive { get; set; }
}
@@ -17,19 +17,19 @@ public class GetUserWeeklyBalancesQueryHandler : IRequestHandler<GetUserWeeklyBa
{
var grpcRequest = new GetUserWeeklyBalancesRequest
{
OnlyActive = request.OnlyActive,
PageIndex = request.PageIndex,
PageSize = request.PageSize
OnlyActive = request.Filter?.OnlyActive ?? false,
PageIndex = request.PaginationState?.PageNumber ?? 1,
PageSize = request.PaginationState?.PageSize ?? 10
};
if (request.UserId.HasValue)
if (request.Filter?.UserId.HasValue == true && request.Filter.UserId.Value > 0)
{
grpcRequest.UserId = request.UserId.Value;
grpcRequest.UserId = request.Filter.UserId.Value;
}
if (!string.IsNullOrWhiteSpace(request.WeekNumber))
if (!string.IsNullOrWhiteSpace(request.Filter?.WeekNumber))
{
grpcRequest.WeekNumber = request.WeekNumber;
grpcRequest.WeekNumber = request.Filter.WeekNumber;
}
var response = await _context.Commissions.GetUserWeeklyBalancesAsync(grpcRequest, cancellationToken: cancellationToken);
@@ -0,0 +1,24 @@
namespace BackOffice.BFF.Application.CommissionCQ.Queries.GetUserWeeklyBalances;
public class GetUserWeeklyBalancesQueryValidator : AbstractValidator<GetUserWeeklyBalancesQuery>
{
public GetUserWeeklyBalancesQueryValidator()
{
RuleFor(x => x.PaginationState)
.NotNull()
.WithMessage("موقعیت صفحه‌بندی الزامی است");
When(x => x.Filter != null, () =>
{
RuleFor(x => x.Filter!.UserId)
.GreaterThan(0)
.When(x => x.Filter!.UserId.HasValue)
.WithMessage("شناسه کاربر معتبر نیست");
RuleFor(x => x.Filter!.WeekNumber)
.Matches(@"^\d{4}-W\d{2}$")
.When(x => !string.IsNullOrWhiteSpace(x.Filter!.WeekNumber))
.WithMessage("فرمت شماره هفته باید به صورت YYYY-Www باشد (مثال: 2025-W48)");
});
}
}