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

namespace TakeoutSaaS.Domain.Stores.Entities;

/// <summary>
/// 门店信息，承载营业配置与能力。
/// </summary>
public sealed class Store : MultiTenantEntityBase
{
    /// <summary>
    /// 所属商户标识。
    /// </summary>
    public long MerchantId { get; set; }

    /// <summary>
    /// 门店编码，便于扫码及外部对接。
    /// </summary>
    public string Code { get; set; } = string.Empty;

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

    /// <summary>
    /// 联系电话。
    /// </summary>
    public string? Phone { get; set; }

    /// <summary>
    /// 门店负责人姓名。
    /// </summary>
    public string? ManagerName { get; set; }

    /// <summary>
    /// 门店当前运营状态。
    /// </summary>
    public StoreStatus Status { get; set; } = StoreStatus.Closed;

    /// <summary>
    /// 所在国家或地区。
    /// </summary>
    public string? Country { get; set; }

    /// <summary>
    /// 所在省份。
    /// </summary>
    public string? Province { get; set; }

    /// <summary>
    /// 所在城市。
    /// </summary>
    public string? City { get; set; }

    /// <summary>
    /// 区县信息。
    /// </summary>
    public string? District { get; set; }

    /// <summary>
    /// 详细地址。
    /// </summary>
    public string? Address { get; set; }

    /// <summary>
    /// 高德/腾讯地图经度。
    /// </summary>
    public double? Longitude { get; set; }

    /// <summary>
    /// 纬度。
    /// </summary>
    public double? Latitude { get; set; }

    /// <summary>
    /// 门店描述或公告。
    /// </summary>
    public string? Description { get; set; }

    /// <summary>
    /// 门店营业时段描述（备用字符串）。
    /// </summary>
    public string? BusinessHours { get; set; }

    /// <summary>
    /// 是否支持堂食。
    /// </summary>
    public bool SupportsDineIn { get; set; } = true;

    /// <summary>
    /// 是否支持自提。
    /// </summary>
    public bool SupportsPickup { get; set; } = true;

    /// <summary>
    /// 是否支持配送。
    /// </summary>
    public bool SupportsDelivery { get; set; } = true;

    /// <summary>
    /// 支持预约。
    /// </summary>
    public bool SupportsReservation { get; set; }

    /// <summary>
    /// 支持排队叫号。
    /// </summary>
    public bool SupportsQueueing { get; set; }

    /// <summary>
    /// 默认配送半径（公里）。
    /// </summary>
    public decimal DeliveryRadiusKm { get; set; } = 3m;

    /// <summary>
    /// 门店公告。
    /// </summary>
    public string? Announcement { get; set; }

    /// <summary>
    /// 门店标签（逗号分隔）。
    /// </summary>
    public string? Tags { get; set; }

    /// <summary>
    /// 门店海报。
    /// </summary>
    public string? CoverImageUrl { get; set; }
}
