namespace TakeoutSaaS.TenantApi.Contracts.Product;

/// <summary>
/// 商品时段规则列表查询请求。
/// </summary>
public sealed class ProductScheduleListRequest
{
    /// <summary>
    /// 门店 ID。
    /// </summary>
    public string StoreId { get; set; } = string.Empty;

    /// <summary>
    /// 关键字。
    /// </summary>
    public string? Keyword { get; set; }

    /// <summary>
    /// 状态（enabled/disabled）。
    /// </summary>
    public string? Status { get; set; }
}

/// <summary>
/// 保存商品时段规则请求。
/// </summary>
public sealed class SaveProductScheduleRequest
{
    /// <summary>
    /// 门店 ID。
    /// </summary>
    public string StoreId { get; set; } = string.Empty;

    /// <summary>
    /// 规则 ID（编辑时传）。
    /// </summary>
    public string? Id { get; set; }

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

    /// <summary>
    /// 开始时间（HH:mm）。
    /// </summary>
    public string StartTime { get; set; } = "00:00";

    /// <summary>
    /// 结束时间（HH:mm）。
    /// </summary>
    public string EndTime { get; set; } = "00:00";

    /// <summary>
    /// 适用星期（1-7）。
    /// </summary>
    public List<int> WeekDays { get; set; } = [];

    /// <summary>
    /// 关联商品 ID 列表。
    /// </summary>
    public List<string> ProductIds { get; set; } = [];

    /// <summary>
    /// 状态（enabled/disabled）。
    /// </summary>
    public string Status { get; set; } = "enabled";
}

/// <summary>
/// 删除商品时段规则请求。
/// </summary>
public sealed class DeleteProductScheduleRequest
{
    /// <summary>
    /// 门店 ID。
    /// </summary>
    public string StoreId { get; set; } = string.Empty;

    /// <summary>
    /// 规则 ID。
    /// </summary>
    public string ScheduleId { get; set; } = string.Empty;
}

/// <summary>
/// 修改商品时段规则状态请求。
/// </summary>
public sealed class ChangeProductScheduleStatusRequest
{
    /// <summary>
    /// 门店 ID。
    /// </summary>
    public string StoreId { get; set; } = string.Empty;

    /// <summary>
    /// 规则 ID。
    /// </summary>
    public string ScheduleId { get; set; } = string.Empty;

    /// <summary>
    /// 状态（enabled/disabled）。
    /// </summary>
    public string Status { get; set; } = "enabled";
}

/// <summary>
/// 商品时段规则列表项响应。
/// </summary>
public sealed class ProductScheduleItemResponse
{
    /// <summary>
    /// 规则 ID。
    /// </summary>
    public string Id { get; set; } = string.Empty;

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

    /// <summary>
    /// 开始时间（HH:mm）。
    /// </summary>
    public string StartTime { get; set; } = "00:00";

    /// <summary>
    /// 结束时间（HH:mm）。
    /// </summary>
    public string EndTime { get; set; } = "00:00";

    /// <summary>
    /// 适用星期（1-7）。
    /// </summary>
    public List<int> WeekDays { get; set; } = [];

    /// <summary>
    /// 状态（enabled/disabled）。
    /// </summary>
    public string Status { get; set; } = "enabled";

    /// <summary>
    /// 关联商品数量。
    /// </summary>
    public int ProductCount { get; set; }

    /// <summary>
    /// 关联商品 ID 列表。
    /// </summary>
    public List<string> ProductIds { get; set; } = [];

    /// <summary>
    /// 更新时间。
    /// </summary>
    public string UpdatedAt { get; set; } = string.Empty;
}
