using Baya.Domain.Common;

namespace Baya.Domain.Entities.Holidays;

/// <summary>
/// A single day in the shared Iranian official/religious/national calendar. <see cref="IsBankClosed"/>
/// drives payout date shifting — when PAYA/SATNA banks are closed a weekly payout moves to the next
/// business day. The calendar is partly movable/lunar-Hijri, so the table is maintained rather than
/// computed.
/// </summary>
public class IranianHoliday : BaseEntity<long>
{
    public DateOnly HolidayDate { get; set; }

    public string NameFa { get; set; } = string.Empty;

    public string Type { get; set; } = HolidayType.Official;

    public bool IsBankClosed { get; set; }
}

/// <summary>Stable codes for <see cref="IranianHoliday.Type"/>.</summary>
public static class HolidayType
{
    public const string Official = "official";
    public const string Religious = "religious";
    public const string National = "national";
}
