using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Shared.Abstractions.Entities;

namespace TakeoutSaaS.Domain.Stores.Entities;

/// <summary>
/// 门店自提档期。
/// </summary>
public sealed class StorePickupSlot : MultiTenantEntityBase
{
    /// <summary>
    /// 门店标识。
    /// </summary>
    public long StoreId { get; set; }

    /// <summary>
    /// 档期名称。
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// 当天开始时间（UTC）。
    /// </summary>
    public TimeSpan StartTime { get; set; }

    /// <summary>
    /// 当天结束时间（UTC）。
    /// </summary>
    public TimeSpan EndTime { get; set; }

    /// <summary>
    /// 截单分钟（开始前多少分钟截止）。
    /// </summary>
    public int CutoffMinutes { get; set; } = 30;

    /// <summary>
    /// 容量（份数）。
    /// </summary>
    public int Capacity { get; set; }

    /// <summary>
    /// 已占用数量。
    /// </summary>
    public int ReservedCount { get; set; }

    /// <summary>
    /// 适用星期（逗号分隔 1-7）。
    /// </summary>
    public string Weekdays { get; set; } = "1,2,3,4,5,6,7";

    /// <summary>
    /// 是否启用。
    /// </summary>
    public bool IsEnabled { get; set; } = true;

    /// <summary>
    /// 并发控制字段。
    /// </summary>
    [Timestamp]
    public byte[] RowVersion { get; set; } = Array.Empty<byte>();
}
