using Meezi.Core.Enums; namespace Meezi.Core.Entities; public class Cafe : BaseEntity { public string Name { get; set; } = string.Empty; public string? NameAr { get; set; } public string? NameEn { get; set; } public string Slug { get; set; } = string.Empty; public string? Phone { get; set; } public string? Address { get; set; } public string? City { get; set; } public string? LogoUrl { get; set; } public string? CoverImageUrl { get; set; } public string? Description { get; set; } public PlanTier PlanTier { get; set; } = PlanTier.Free; public DateTime? PlanExpiresAt { get; set; } public bool IsVerified { get; set; } /// Owner preference: list this café on Koja (public discovery). Defaults true so a /// verified café is discoverable out of the box; the owner can opt out from settings. public bool ShowOnKoja { get; set; } = true; /// When true, merchant API access is blocked until reactivated by platform admin. public bool IsSuspended { get; set; } public string? SnappfoodVendorId { get; set; } public string? Tap30VendorId { get; set; } public string? DigikalaVendorId { get; set; } public string PreferredLanguage { get; set; } = "fa"; /// JSON for dashboard + guest menu colors/styles. public string? ThemeJson { get; set; } /// JSON for discover / AI matching. public string? DiscoverProfileJson { get; set; } /// JSON array of keys (Enterprise, admin-assigned). public string? DiscoverBadgesJson { get; set; } /// JSON array of up to 8 gallery photo URLs (owner-managed). public string? GalleryJson { get; set; } /// JSON per-day schedule. public string? WorkingHoursJson { get; set; } /// Instagram handle without @, max 80 chars. public string? InstagramHandle { get; set; } /// Cafe website URL, max 300 chars. public string? WebsiteUrl { get; set; } /// WGS-84 latitude (positive = north). Null until owner sets location. public double? Latitude { get; set; } /// WGS-84 longitude (positive = east). Null until owner sets location. public double? Longitude { get; set; } /// Default VAT/sales tax % for all branches unless branch override is allowed. public decimal DefaultTaxRate { get; set; } = 9m; public bool AllowBranchTaxOverride { get; set; } public ICollection Branches { get; set; } = []; public ICollection Tables { get; set; } = []; public ICollection Employees { get; set; } = []; public ICollection MenuCategories { get; set; } = []; public ICollection MenuItems { get; set; } = []; public ICollection Orders { get; set; } = []; public ICollection Customers { get; set; } = []; public ICollection Coupons { get; set; } = []; public ICollection Taxes { get; set; } = []; public ICollection Reviews { get; set; } = []; public ICollection SubscriptionPayments { get; set; } = []; public ICollection Ingredients { get; set; } = []; }