feat: add geography entities with countries, states and cities

This commit is contained in:
masoodafar-web
2025-12-18 00:43:55 +03:30
parent 26e1243cfe
commit ead0cf4235
40 changed files with 5386 additions and 7 deletions
@@ -0,0 +1,49 @@
using CMSMicroservice.Domain.Common;
namespace CMSMicroservice.Domain.Entities.Geography;
/// <summary>
/// شهر - City
/// </summary>
public class City : 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 Latitude { get; set; }
/// <summary>
/// طول جغرافیایی
/// </summary>
public required string Longitude { get; set; }
/// <summary>
/// نام بومی شهر (فارسی یا زبان محلی)
/// </summary>
public required string Native { get; set; }
/// <summary>
/// شناسه استان متعلق
/// </summary>
public long StateId { get; set; }
/// <summary>
/// استان متعلق
/// </summary>
public virtual State State { get; set; } = null!;
}
@@ -0,0 +1,109 @@
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>();
}
@@ -0,0 +1,64 @@
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>();
}