namespace CMSMicroservice.Domain.Entities.Configuration;

/// <summary>
/// تنظیمات پویای سیستم - قابل تغییر بدون Deployment
/// </summary>
public class SystemConfiguration : BaseAuditableEntity
{
    /// <summary>
    /// محدوده تنظیمات (System, Network, Club, Commission)
    /// </summary>
    public ConfigurationScope Scope { get; set; }

    /// <summary>
    /// کلید تنظیم (مثلاً "MaxWeeklyBalancesPerUser")
    /// </summary>
    public string Key { get; set; }

    /// <summary>
    /// مقدار به‌صورت رشته (تفسیر در Application Layer)
    /// </summary>
    public string Value { get; set; }

    /// <summary>
    /// نوع داده برای Validation و UI (Int/Decimal/Bool/String/Json)
    /// </summary>
    public string? DataType { get; set; }

    /// <summary>
    /// توضیحات برای ادمین
    /// </summary>
    public string? Description { get; set; }

    /// <summary>
    /// فعال یا غیرفعال
    /// </summary>
    public bool IsActive { get; set; }

    /// <summary>
    /// SystemConfigurationHistory Collection Navigation Reference
    /// </summary>
    public virtual ICollection<SystemConfigurationHistory>? SystemConfigurationHistories { get; set; }
}
