using CMSMicroservice.Domain.Common;

namespace CMSMicroservice.Domain.Entities.Geography;

/// <summary>
/// استان - State/Province
/// </summary>
public class State : BaseAuditableEntity
{
    /// <summary>
    /// شناسه یکتا
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    /// شناسه خارجی (External ID)
    /// </summary>
    public long ExternalId { get; set; }

    /// <summary>
    /// نام استان
    /// </summary>
    public required string Name { get; set; }

    /// <summary>
    /// کد استان
    /// </summary>
    public required string StateCode { get; set; }

    /// <summary>
    /// عرض جغرافیایی
    /// </summary>
    public required string Latitude { get; set; }

    /// <summary>
    /// طول جغرافیایی
    /// </summary>
    public required string Longitude { get; set; }

    /// <summary>
    /// نوع استان (province, state, etc.)
    /// </summary>
    public required string Type { get; set; }

    /// <summary>
    /// نام بومی استان (فارسی یا زبان محلی)
    /// </summary>
    public required string Native { get; set; }

    /// <summary>
    /// شناسه کشور متعلق
    /// </summary>
    public long CountryId { get; set; }

    /// <summary>
    /// کشور متعلق
    /// </summary>
    public virtual Country Country { get; set; } = null!;

    /// <summary>
    /// شهرهای این استان
    /// </summary>
    public virtual ICollection<City> Cities { get; set; } = new List<City>();
}
