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
@@ -0,0 +1,67 @@
using CMSMicroservice.Domain.Entities.Commission;
using CMSMicroservice.Domain.Entities.History;
using CMSMicroservice.Domain.Entities.Network;
namespace CMSMicroservice.Domain.Entities;
/// <summary>
/// تعریف هفته‌ها برای نمایش در سیستم
/// این جدول شامل اطلاعات کامل هر هفته شامل شماره نمایشی، شماره میلادی، شماره شمسی و بازه تاریخی است
/// </summary>
public class WeekDefinition : BaseAuditableEntity
{
/// <summary>
/// شماره ترتیبی هفته (1، 2، 3، ...)
/// برای مرتب‌سازی و محاسبات استفاده می‌شود
/// </summary>
public int WeekOrder { get; set; }
/// <summary>
/// نام نمایشی هفته (مثال: "هفته یکم"، "هفته دوم"، "هفته سوم")
/// این متن برای نمایش به کاربر نهایی (ادمین و مشتری) استفاده می‌شود
/// </summary>
public string DisplayName { get; set; } = string.Empty;
/// <summary>
/// شماره هفته میلادی (مثال: "2025-W01", "2025-W02")
/// فرمت ISO 8601
/// </summary>
public string GregorianWeekNumber { get; set; } = string.Empty;
/// <summary>
/// شماره هفته شمسی (مثال: "1403-W01", "1403-W02")
/// </summary>
public string PersianWeekNumber { get; set; } = string.Empty;
/// <summary>
/// تاریخ شروع هفته (میلادی) - شنبه
/// </summary>
public DateTime StartDate { get; set; }
/// <summary>
/// تاریخ پایان هفته (میلادی) - جمعه
/// </summary>
public DateTime EndDate { get; set; }
/// <summary>
/// سال میلادی
/// </summary>
public int GregorianYear { get; set; }
/// <summary>
/// سال شمسی
/// </summary>
public int PersianYear { get; set; }
/// <summary>
/// آیا این هفته فعال است؟
/// </summary>
public bool IsActive { get; set; } = true;
// Navigation Properties
public virtual ICollection<NetworkWeeklyBalance>? NetworkWeeklyBalances { get; set; }
public virtual ICollection<WeeklyCommissionPool>? WeeklyCommissionPools { get; set; }
public virtual ICollection<UserCommissionPayout>? UserCommissionPayouts { get; set; }
public virtual ICollection<WorkerExecutionLog>? WorkerExecutionLogs { get; set; }
public virtual ICollection<CommissionPayoutHistory>? CommissionPayoutHistories { get; set; }
}