feat: refactor week number handling to use WeekDefinitionId across multiple entities and queries

This commit is contained in:
masoodafar-web
2025-12-19 10:41:22 +03:30
parent 3cb95dc349
commit 8b784101be
83 changed files with 17592 additions and 566 deletions
@@ -5,7 +5,7 @@ public record TriggerWeeklyCalculationCommand : IRequest<TriggerWeeklyCalculatio
/// <summary>
/// شماره هفته (فرمت: "YYYY-Www")
/// </summary>
public string WeekNumber { get; init; } = string.Empty;
public long WeekDefinitionId { get; init; }
/// <summary>
/// اگر true باشد، محاسبات قبلی را حذف و دوباره محاسبه می‌کند
@@ -26,8 +26,9 @@ public class TriggerWeeklyCalculationCommandHandler : IRequestHandler<TriggerWee
try
{
// Validate week number format
if (string.IsNullOrWhiteSpace(request.WeekNumber))
if (request.WeekDefinitionId<=0)
{
return new TriggerWeeklyCalculationResponseDto
{
@@ -45,7 +46,7 @@ public class TriggerWeeklyCalculationCommandHandler : IRequestHandler<TriggerWee
{
await _mediator.Send(new CalculateWeeklyBalancesCommand
{
WeekNumber = request.WeekNumber,
WeekDefinitionId = request.WeekDefinitionId,
ForceRecalculate = request.ForceRecalculate
}, cancellationToken);
steps.Add("محاسبه امتیازات هفتگی");
@@ -56,7 +57,7 @@ public class TriggerWeeklyCalculationCommandHandler : IRequestHandler<TriggerWee
{
await _mediator.Send(new CalculateWeeklyCommissionPoolCommand
{
WeekNumber = request.WeekNumber,
WeekDefinitionId = request.WeekDefinitionId,
ForceRecalculate = request.ForceRecalculate
}, cancellationToken);
steps.Add("محاسبه استخر و پرداخت کاربران");
@@ -65,7 +66,7 @@ public class TriggerWeeklyCalculationCommandHandler : IRequestHandler<TriggerWee
return new TriggerWeeklyCalculationResponseDto
{
Success = true,
Message = $"محاسبات هفته {request.WeekNumber} با موفقیت انجام شد. مراحل: {string.Join(", ", steps)}",
Message = $"محاسبات هفته {request.WeekDefinitionId} با موفقیت انجام شد. مراحل: {string.Join(", ", steps)}",
ExecutionId = executionId,
StartedAt = startedAt
};
@@ -0,0 +1,27 @@
using CMSMicroservice.Application.CommissionCQ.Commands.ProcessWithdrawal;
namespace CMSMicroservice.Application.CommissionCQ.Commands.TriggerWeeklyCalculation;
public class TriggerWeeklyCalculationCommandValidator : AbstractValidator<TriggerWeeklyCalculationCommand>
{
public TriggerWeeklyCalculationCommandValidator()
{
RuleFor(x => x.WeekDefinitionId)
.NotNull()
.GreaterThan(0)
.WithMessage("شماره هفته نمی‌تواند خالی باشد");
}
public Func<object, string, Task<IEnumerable<string>>> ValidateValue => async (model, propertyName) =>
{
var result = await ValidateAsync(
ValidationContext<TriggerWeeklyCalculationCommand>.CreateWithOptions(
(TriggerWeeklyCalculationCommand)model,
x => x.IncludeProperties(propertyName)));
if (result.IsValid)
return Array.Empty<string>();
return result.Errors.Select(e => e.ErrorMessage);
};
}