feat: implement user wallet charging and transaction logging for Daya loan processing

This commit is contained in:
masoodafar-web
2025-12-19 23:14:42 +03:30
parent 8b784101be
commit 9864302bab
9 changed files with 352 additions and 51 deletions
@@ -23,5 +23,5 @@ public record GetNetworkTreeQuery : IRequest<NetworkTreeDto?>
/// <summary>
/// فیلتر براساس شماره هفته فعالسازی (مثال: 2025-W05)
/// </summary>
public string? ActivationWeekNumber { get; init; }
public long? ActivationWeekDefinitionId { get; init; }
}
@@ -42,19 +42,21 @@ public class GetNetworkTreeQueryHandler : IRequestHandler<GetNetworkTreeQuery, N
}
// محاسبه شماره هفته فعال‌سازی
string? activationWeekNumber = null;
long? activationWeekDefinitionId = null;
string? activationWeekDisplayName = null;
bool isActivatedInTargetWeek = false;
if (user.ClubMembership?.ActivatedAt != null)
{
activationWeekNumber = CalculateWeekNumber(user.ClubMembership.ActivatedAt.Value);
activationWeekDisplayName = _weekDefinitionRepository.GetDisplayNameByGregorianWeekNumber(activationWeekNumber);
// activationWeekDefinitionId = CalculateWeekNumber(user.ClubMembership.ActivatedAt.Value);
var week = _weekDefinitionRepository.GetWeekByDate(user.ClubMembership.ActivatedAt.Value);
activationWeekDefinitionId = week.Id;
activationWeekDisplayName = week.DisplayName;
// بررسی آیا در هفته هدف فعال شده است
if (!string.IsNullOrEmpty(request.ActivationWeekNumber))
if (request.ActivationWeekDefinitionId!=null)
{
isActivatedInTargetWeek = activationWeekNumber == request.ActivationWeekNumber;
isActivatedInTargetWeek = activationWeekDefinitionId == request.ActivationWeekDefinitionId;
}
}
@@ -68,7 +70,7 @@ public class GetNetworkTreeQueryHandler : IRequestHandler<GetNetworkTreeQuery, N
CurrentDepth = currentDepth,
ClubActivatedAt = user.ClubMembership?.ActivatedAt,
IsClubActive = user.ClubMembership?.IsActive ?? false,
ActivationWeekNumber = activationWeekNumber,
ActivationWeekDefinitionId = activationWeekDefinitionId,
ActivationWeekDisplayName = activationWeekDisplayName,
IsActivatedInTargetWeek = isActivatedInTargetWeek,
UserCreated = user.Created
@@ -123,18 +125,19 @@ public class GetNetworkTreeQueryHandler : IRequestHandler<GetNetworkTreeQuery, N
/// <summary>
/// محاسبه شماره هفته از تاریخ
/// </summary>
private string CalculateWeekNumber(DateTime date)
{
// First try to get from repository cache
var weekDef = _weekDefinitionRepository.GetWeekByDate(date);
if (weekDef != null)
{
return $"{weekDef.GregorianYear}-W{weekDef.GregorianWeekNumber:D2}";
}
// Fallback: use repository's calculation method
return _weekDefinitionRepository.CalculateGregorianWeekNumber(date);
}
// private long CalculateWeekNumber(DateTime date)
// {
// // First try to get from repository cache
// var weekDef = _weekDefinitionRepository.GetWeekByDate(date);
// if (weekDef != null)
// {
// return weekDef.Id;
// }
//
// // Fallback: use repository's calculation method
// // return _weekDefinitionRepository.CalculateGregorianWeekNumber(date);
// return 0;
// }
@@ -25,7 +25,7 @@ public class NetworkTreeDto
/// <summary>
/// شماره هفته فعال‌سازی
/// </summary>
public string? ActivationWeekNumber { get; set; }
public long? ActivationWeekDefinitionId { get; set; }
/// <summary>
/// نام نمایشی هفته فعال‌سازی (مثل: هفته یکم)