using TakeoutSaaS.Domain.Tenants.Enums;
using TakeoutSaaS.Shared.Abstractions.Entities;

namespace TakeoutSaaS.Domain.Tenants.Entities;

/// <summary>
/// 租户配额使用历史记录（用于追踪配额上下限与使用量的时间序列变化）。
/// </summary>
public sealed class TenantQuotaUsageHistory : MultiTenantEntityBase
{
    /// <summary>
    /// 配额类型。
    /// </summary>
    public TenantQuotaType QuotaType { get; set; }

    /// <summary>
    /// 已使用值（记录时刻的快照）。
    /// </summary>
    public decimal UsedValue { get; set; }

    /// <summary>
    /// 限额值（记录时刻的快照）。
    /// </summary>
    public decimal LimitValue { get; set; }

    /// <summary>
    /// 记录时间（UTC）。
    /// </summary>
    public DateTime RecordedAt { get; set; }

    /// <summary>
    /// 变更类型。
    /// </summary>
    public TenantQuotaUsageHistoryChangeType ChangeType { get; set; } = TenantQuotaUsageHistoryChangeType.Snapshot;

    /// <summary>
    /// 变更量（可选）。
    /// </summary>
    public decimal? ChangeAmount { get; set; }

    /// <summary>
    /// 变更原因（可选）。
    /// </summary>
    public string? ChangeReason { get; set; }
}

