using Lada.Framework.Data.Domains.BaseEntities;
using Lada.Framework.Data.Enums;

namespace Lada.Framework.Data.Domains.Rewards
{
    /// <summary>
    /// Cấu hình tự động lập biên bản phạt nộp tiền trễ.
    /// Mỗi lần sửa = tạo bản ghi mới (versioning theo EffectiveFrom).
    /// </summary>
    public class AutoPenaltyConfig : BaseEntityWithKey<int>
    {
        /// <summary>
        /// Bật/tắt tự động lập biên bản
        /// </summary>
        public bool IsEnabled { get; set; }

        /// <summary>
        /// Tạm dừng (vẫn bật nhưng dừng xử lý tạm thời)
        /// </summary>
        public bool IsPaused { get; set; }

        /// <summary>
        /// Lý do tạm dừng
        /// </summary>
        public string? PauseReason { get; set; }

        /// <summary>
        /// Giờ cutoff ngày N+1 (VD: 10:00 sáng hôm sau)
        /// </summary>
        public TimeSpan CutoffTimeNextDay { get; set; }

        /// <summary>
        /// Chính sách reset số lần vi phạm: Monthly / Quarterly / Lifetime
        /// </summary>
        public ResetPolicy ResetPolicy { get; set; }

        /// <summary>
        /// Tối đa lượt gỡ biên bản trong 1 kỳ cho mỗi user
        /// </summary>
        public int MaxAmnestyPerCycle { get; set; } = 5;

        /// <summary>
        /// Hiệu lực từ
        /// </summary>
        public DateTimeOffset EffectiveFrom { get; set; }

        /// <summary>
        /// Hiệu lực đến (null = đang hiệu lực)
        /// </summary>
        public DateTimeOffset? EffectiveTo { get; set; }

        #region Navigation Properties

        public virtual ICollection<AutoPenaltyLevel> Levels { get; set; }

        #endregion
    }
}
