using CMSMicroservice.Domain.Common;

namespace CMSMicroservice.Domain.Entities.Geography;

/// <summary>
/// کشور - Country
/// </summary>
public class Country : 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>
    /// کد ISO3 (3 حرفی)
    /// </summary>
    public required string Iso3 { get; set; }

    /// <summary>
    /// کد ISO2 (2 حرفی)
    /// </summary>
    public required string Iso2 { get; set; }

    /// <summary>
    /// کد عددی کشور
    /// </summary>
    public required string NumericCode { get; set; }

    /// <summary>
    /// کد تلفن کشور (مثلاً 98 برای ایران)
    /// </summary>
    public required string PhoneCode { get; set; }

    /// <summary>
    /// پایتخت
    /// </summary>
    public required string Capital { get; set; }

    /// <summary>
    /// واحد پول (کد ارز)
    /// </summary>
    public required string Currency { get; set; }

    /// <summary>
    /// نام واحد پول
    /// </summary>
    public required string CurrencyName { get; set; }

    /// <summary>
    /// نماد واحد پول
    /// </summary>
    public required string CurrencySymbol { get; set; }

    /// <summary>
    /// Top-Level Domain (مثلاً .ir)
    /// </summary>
    public required string Tld { get; set; }

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

    /// <summary>
    /// منطقه جغرافیایی (مثلاً Asia)
    /// </summary>
    public required string Region { get; set; }

    /// <summary>
    /// زیرمنطقه (مثلاً Southern Asia)
    /// </summary>
    public required string Subregion { get; set; }

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

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

    /// <summary>
    /// ایموجی پرچم کشور
    /// </summary>
    public required string Emoji { get; set; }

    /// <summary>
    /// کد یونیکد ایموجی
    /// </summary>
    public required string EmojiU { get; set; }

    /// <summary>
    /// استان‌های این کشور
    /// </summary>
    public virtual ICollection<State> States { get; set; } = new List<State>();
}
