// using System; using Meezi.Infrastructure.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace Meezi.Infrastructure.Data.Migrations { [DbContext(typeof(AppDbContext))] partial class AppDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.0") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("Meezi.Core.Entities.Attendance", b => { b.Property("Id") .HasColumnType("text"); b.Property("ClockIn") .HasColumnType("timestamp with time zone"); b.Property("ClockOut") .HasColumnType("timestamp with time zone"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("Date") .HasColumnType("date"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("EmployeeId") .IsRequired() .HasColumnType("text"); b.Property("Notes") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("EmployeeId", "Date") .IsUnique(); b.ToTable("Attendances"); }); modelBuilder.Entity("Meezi.Core.Entities.AuditLog", b => { b.Property("Id") .HasColumnType("text"); b.Property("Action") .IsRequired() .HasMaxLength(96) .HasColumnType("character varying(96)"); b.Property("ActorId") .HasColumnType("text"); b.Property("ActorName") .HasMaxLength(160) .HasColumnType("character varying(160)"); b.Property("ActorRole") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property("BranchId") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("Category") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("DetailsJson") .HasColumnType("text"); b.Property("EntityId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("EntityType") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("Summary") .IsRequired() .HasMaxLength(500) .HasColumnType("character varying(500)"); b.HasKey("Id"); b.HasIndex("CafeId", "BranchId"); b.HasIndex("CafeId", "Category"); b.HasIndex("CafeId", "CreatedAt"); b.ToTable("AuditLogs"); }); modelBuilder.Entity("Meezi.Core.Entities.Branch", b => { b.Property("Id") .HasColumnType("text"); b.Property("AccentColor") .HasColumnType("text"); b.Property("Address") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("AutoCutEnabled") .HasColumnType("boolean"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("City") .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("KitchenPrintDeviceId") .HasColumnType("text"); b.Property("KitchenPrinterIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property("KitchenPrinterPort") .HasColumnType("integer"); b.Property("LogoUrl") .HasColumnType("text"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("PaperWidthMm") .HasColumnType("integer"); b.Property("Phone") .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("PosDeviceIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property("PosDevicePort") .HasColumnType("integer"); b.Property("ReceiptFooter") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("ReceiptHeader") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("ReceiptPrintDeviceId") .HasColumnType("text"); b.Property("ReceiptPrinterIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property("ReceiptPrinterPort") .HasColumnType("integer"); b.Property("ScheduledPermanentDeleteAt") .HasColumnType("timestamp with time zone"); b.Property("TaxRate") .HasColumnType("numeric"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.Property("WelcomeText") .HasColumnType("text"); b.Property("WifiPassword") .HasMaxLength(100) .HasColumnType("character varying(100)"); b.HasKey("Id"); b.HasIndex("CafeId", "IsActive"); b.ToTable("Branches"); }); modelBuilder.Entity("Meezi.Core.Entities.BranchMenuItemOverride", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .IsRequired() .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IsAvailable") .HasColumnType("boolean"); b.Property("MenuItemId") .IsRequired() .HasColumnType("text"); b.Property("PriceOverride") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("SortOrderOverride") .HasColumnType("integer"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.Property("UpdatedByUserId") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("CafeId"); b.HasIndex("MenuItemId"); b.HasIndex("BranchId", "MenuItemId") .IsUnique(); b.ToTable("BranchMenuItemOverrides"); }); modelBuilder.Entity("Meezi.Core.Entities.Cafe", b => { b.Property("Id") .HasColumnType("text"); b.Property("Address") .HasColumnType("text"); b.Property("AllowBranchTaxOverride") .HasColumnType("boolean"); b.Property("City") .HasColumnType("text"); b.Property("CoverImageUrl") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DefaultTaxRate") .HasPrecision(5, 2) .HasColumnType("numeric(5,2)"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Description") .HasColumnType("text"); b.Property("DigikalaVendorId") .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("DiscoverBadgesJson") .HasMaxLength(2000) .HasColumnType("character varying(2000)"); b.Property("DiscoverProfileJson") .HasMaxLength(8000) .HasColumnType("character varying(8000)"); b.Property("GalleryJson") .HasColumnType("text"); b.Property("InstagramHandle") .HasColumnType("text"); b.Property("IsSuspended") .HasColumnType("boolean"); b.Property("IsVerified") .HasColumnType("boolean"); b.Property("Latitude") .HasColumnType("double precision"); b.Property("LogoUrl") .HasColumnType("text"); b.Property("Longitude") .HasColumnType("double precision"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("NameAr") .HasColumnType("text"); b.Property("NameEn") .HasColumnType("text"); b.Property("Phone") .HasColumnType("text"); b.Property("PlanExpiresAt") .HasColumnType("timestamp with time zone"); b.Property("PlanTier") .HasColumnType("integer"); b.Property("PreferredLanguage") .IsRequired() .HasColumnType("text"); b.Property("RecoveryKeyCreatedAt") .HasColumnType("timestamp with time zone"); b.Property("RecoveryKeyHash") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("ShowOnKoja") .ValueGeneratedOnAdd() .HasColumnType("boolean") .HasDefaultValue(true); b.Property("Slug") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("SmsApiKey") .HasColumnType("text"); b.Property("SmsSenderNumber") .HasColumnType("text"); b.Property("SnappfoodVendorId") .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("Tap30VendorId") .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("ThemeJson") .HasMaxLength(8000) .HasColumnType("character varying(8000)"); b.Property("WebsiteUrl") .HasColumnType("text"); b.Property("WorkingHoursJson") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("RecoveryKeyHash") .IsUnique(); b.HasIndex("Slug") .IsUnique(); b.ToTable("Cafes"); }); modelBuilder.Entity("Meezi.Core.Entities.CafeFeatureOverride", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("FeatureKey") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property("IsEnabled") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CafeId", "FeatureKey") .IsUnique(); b.ToTable("CafeFeatureOverrides"); }); modelBuilder.Entity("Meezi.Core.Entities.CafeNotification", b => { b.Property("Id") .HasColumnType("text"); b.Property("Body") .HasMaxLength(1000) .HasColumnType("character varying(1000)"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IsRead") .HasColumnType("boolean"); b.Property("ReadAt") .HasColumnType("timestamp with time zone"); b.Property("ReferenceId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("TableNumber") .HasMaxLength(40) .HasColumnType("character varying(40)"); b.Property("Title") .IsRequired() .HasMaxLength(300) .HasColumnType("character varying(300)"); b.Property("Type") .IsRequired() .HasMaxLength(60) .HasColumnType("character varying(60)"); b.HasKey("Id"); b.HasIndex("CafeId", "IsRead", "CreatedAt"); b.ToTable("CafeNotifications"); }); modelBuilder.Entity("Meezi.Core.Entities.CafeReview", b => { b.Property("Id") .HasColumnType("text"); b.Property("AuthorName") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("AuthorPhone") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("Comment") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IsHidden") .HasColumnType("boolean"); b.Property("OwnerRepliedAt") .HasColumnType("timestamp with time zone"); b.Property("OwnerReply") .HasColumnType("text"); b.Property("Rating") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("CafeId", "CreatedAt"); b.ToTable("CafeReviews"); }); modelBuilder.Entity("Meezi.Core.Entities.CafeReviewPhoto", b => { b.Property("Id") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("ReviewId") .IsRequired() .HasColumnType("text"); b.Property("SortOrder") .HasColumnType("integer"); b.Property("Url") .IsRequired() .HasMaxLength(500) .HasColumnType("character varying(500)"); b.HasKey("Id"); b.HasIndex("ReviewId"); b.ToTable("CafeReviewPhotos"); }); modelBuilder.Entity("Meezi.Core.Entities.CashTransaction", b => { b.Property("Id") .HasColumnType("text"); b.Property("Amount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("BranchId") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("CreatedByUserId") .IsRequired() .HasColumnType("text"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Method") .HasColumnType("integer"); b.Property("Note") .HasColumnType("text"); b.Property("ReferenceId") .HasColumnType("text"); b.Property("ShiftId") .IsRequired() .HasColumnType("text"); b.Property("Type") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("ShiftId"); b.HasIndex("CafeId", "BranchId"); b.ToTable("CashTransactions"); }); modelBuilder.Entity("Meezi.Core.Entities.ConsumerAccount", b => { b.Property("Id") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Name") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("Phone") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)"); b.HasKey("Id"); b.HasIndex("Phone") .IsUnique(); b.ToTable("ConsumerAccounts"); }); modelBuilder.Entity("Meezi.Core.Entities.Coupon", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("Code") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("ExpiresAt") .HasColumnType("timestamp with time zone"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("MaxDiscount") .HasColumnType("numeric"); b.Property("MinOrderAmount") .HasColumnType("numeric"); b.Property("StartsAt") .HasColumnType("timestamp with time zone"); b.Property("TargetGroup") .HasColumnType("integer"); b.Property("Type") .HasColumnType("integer"); b.Property("UsageLimit") .HasColumnType("integer"); b.Property("UsedCount") .HasColumnType("integer"); b.Property("Value") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.HasKey("Id"); b.HasIndex("CafeId", "Code") .IsUnique(); b.ToTable("Coupons"); }); modelBuilder.Entity("Meezi.Core.Entities.CustomRole", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("Color") .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Description") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("PermissionsJson") .IsRequired() .HasMaxLength(2000) .HasColumnType("character varying(2000)"); b.HasKey("Id"); b.HasIndex("CafeId"); b.ToTable("CustomRoles"); }); modelBuilder.Entity("Meezi.Core.Entities.Customer", b => { b.Property("Id") .HasColumnType("text"); b.Property("BirthDateJalali") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Group") .HasColumnType("integer"); b.Property("LoyaltyPoints") .HasColumnType("integer"); b.Property("Name") .IsRequired() .HasColumnType("text"); b.Property("NationalId") .HasColumnType("text"); b.Property("Phone") .IsRequired() .HasColumnType("text"); b.Property("ReferredBy") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("CafeId", "Phone"); b.ToTable("Customers"); }); modelBuilder.Entity("Meezi.Core.Entities.DailyReport", b => { b.Property("Id") .HasColumnType("text"); b.Property("AvgOrderValue") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("BranchId") .IsRequired() .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CardRevenue") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("CashRevenue") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("CreditRevenue") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("Date") .HasColumnType("date"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("GeneratedAt") .HasColumnType("timestamp with time zone"); b.Property("NetIncome") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("TopProducts") .IsRequired() .HasColumnType("jsonb"); b.Property("TotalExpenses") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("TotalOrders") .HasColumnType("integer"); b.Property("TotalRevenue") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("TotalVoids") .HasColumnType("integer"); b.Property("VoidAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("CafeId", "BranchId", "Date") .IsUnique(); b.ToTable("DailyReports"); }); modelBuilder.Entity("Meezi.Core.Entities.DeliveryCommissionRate", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("Platform") .HasColumnType("integer"); b.Property("RatePercent") .HasPrecision(5, 2) .HasColumnType("numeric(5,2)"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.HasKey("Id"); b.HasIndex("CafeId", "Platform") .IsUnique(); b.ToTable("DeliveryCommissionRates"); }); modelBuilder.Entity("Meezi.Core.Entities.DemoRequest", b => { b.Property("Id") .HasColumnType("text"); b.Property("AdminNotes") .HasMaxLength(2000) .HasColumnType("character varying(2000)"); b.Property("BranchCount") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("BusinessName") .IsRequired() .HasMaxLength(300) .HasColumnType("character varying(300)"); b.Property("ContactName") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("ContactedAt") .HasColumnType("timestamp with time zone"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Email") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("Notes") .HasMaxLength(2000) .HasColumnType("character varying(2000)"); b.Property("Phone") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("Source") .IsRequired() .ValueGeneratedOnAdd() .HasMaxLength(50) .HasColumnType("character varying(50)") .HasDefaultValue("website"); b.Property("Status") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("Status", "CreatedAt"); b.ToTable("DemoRequests"); }); modelBuilder.Entity("Meezi.Core.Entities.Employee", b => { b.Property("Id") .HasColumnType("text"); b.Property("BaseSalary") .HasColumnType("numeric"); b.Property("BranchId") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("CustomRoleId") .HasColumnType("text"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Name") .IsRequired() .HasColumnType("text"); b.Property("NationalId") .HasColumnType("text"); b.Property("PasswordHash") .HasColumnType("text"); b.Property("Phone") .IsRequired() .HasColumnType("text"); b.Property("PinCode") .HasColumnType("text"); b.Property("Role") .HasColumnType("integer"); b.Property("Username") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("CustomRoleId"); b.HasIndex("CafeId", "Phone") .IsUnique() .HasFilter("\"DeletedAt\" IS NULL"); b.ToTable("Employees"); }); modelBuilder.Entity("Meezi.Core.Entities.EmployeeBranchRole", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .IsRequired() .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("EmployeeId") .IsRequired() .HasColumnType("text"); b.Property("Role") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("CafeId", "BranchId"); b.HasIndex("EmployeeId", "BranchId") .IsUnique() .HasFilter("\"DeletedAt\" IS NULL"); b.ToTable("EmployeeBranchRoles"); }); modelBuilder.Entity("Meezi.Core.Entities.EmployeeSalary", b => { b.Property("Id") .HasColumnType("text"); b.Property("BaseSalary") .HasColumnType("numeric"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("Deductions") .HasColumnType("numeric"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("EmployeeId") .IsRequired() .HasColumnType("text"); b.Property("IsPaid") .HasColumnType("boolean"); b.Property("MonthYear") .IsRequired() .HasColumnType("text"); b.Property("NetSalary") .HasColumnType("numeric"); b.Property("OvertimePay") .HasColumnType("numeric"); b.HasKey("Id"); b.HasIndex("EmployeeId", "MonthYear") .IsUnique(); b.ToTable("EmployeeSalaries"); }); modelBuilder.Entity("Meezi.Core.Entities.EmployeeSchedule", b => { b.Property("Id") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DayOfWeek") .HasColumnType("integer"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("EmployeeId") .IsRequired() .HasColumnType("text"); b.Property("ShiftType") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("EmployeeId", "DayOfWeek") .IsUnique(); b.ToTable("EmployeeSchedules", (string)null); }); modelBuilder.Entity("Meezi.Core.Entities.Expense", b => { b.Property("Id") .HasColumnType("text"); b.Property("Amount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("BranchId") .IsRequired() .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("Category") .HasColumnType("integer"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("CreatedByUserId") .IsRequired() .HasColumnType("text"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Note") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("ReceiptImageUrl") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("ShiftId") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("ShiftId"); b.HasIndex("CafeId", "BranchId", "CreatedAt"); b.ToTable("Expenses"); }); modelBuilder.Entity("Meezi.Core.Entities.IdempotencyRecord", b => { b.Property("Id") .HasColumnType("text"); b.Property("CompletedAt") .HasColumnType("timestamp with time zone"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("Key") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("Method") .IsRequired() .HasMaxLength(10) .HasColumnType("character varying(10)"); b.Property("Path") .IsRequired() .HasMaxLength(512) .HasColumnType("character varying(512)"); b.Property("ResponseBody") .HasColumnType("text"); b.Property("ResponseStatusCode") .HasColumnType("integer"); b.Property("Scope") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("Status") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("Scope", "Key") .IsUnique(); b.ToTable("IdempotencyRecords"); }); modelBuilder.Entity("Meezi.Core.Entities.Ingredient", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("LowStockWarningPercent") .HasPrecision(5, 2) .HasColumnType("numeric(5,2)"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("ParLevel") .HasPrecision(18, 3) .HasColumnType("numeric(18,3)"); b.Property("QuantityOnHand") .HasPrecision(18, 3) .HasColumnType("numeric(18,3)"); b.Property("ReorderLevel") .HasPrecision(18, 3) .HasColumnType("numeric(18,3)"); b.Property("Unit") .IsRequired() .HasMaxLength(50) .HasColumnType("character varying(50)"); b.Property("UnitCost") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.HasKey("Id"); b.HasIndex("CafeId"); b.ToTable("Ingredients"); }); modelBuilder.Entity("Meezi.Core.Entities.KitchenStation", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("PrintDeviceId") .HasColumnType("text"); b.Property("PrinterIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property("PrinterPort") .HasColumnType("integer"); b.Property("SortOrder") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("CafeId", "SortOrder"); b.ToTable("KitchenStations"); }); modelBuilder.Entity("Meezi.Core.Entities.LeaveRequest", b => { b.Property("Id") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("EmployeeId") .IsRequired() .HasColumnType("text"); b.Property("EndDate") .HasColumnType("date"); b.Property("Reason") .HasColumnType("text"); b.Property("ReviewedBy") .HasColumnType("text"); b.Property("StartDate") .HasColumnType("date"); b.Property("Status") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("EmployeeId"); b.ToTable("LeaveRequests"); }); modelBuilder.Entity("Meezi.Core.Entities.MediaAsset", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("ContentHash") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("ContentType") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Kind") .IsRequired() .HasMaxLength(40) .HasColumnType("character varying(40)"); b.Property("OriginalFileName") .HasMaxLength(260) .HasColumnType("character varying(260)"); b.Property("SizeBytes") .HasColumnType("bigint"); b.Property("Url") .IsRequired() .HasMaxLength(500) .HasColumnType("character varying(500)"); b.HasKey("Id"); b.HasIndex("CafeId", "ContentHash"); b.ToTable("MediaAssets"); }); modelBuilder.Entity("Meezi.Core.Entities.MenuCategory", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("DiscountPercent") .HasColumnType("numeric"); b.Property("Icon") .HasMaxLength(32) .HasColumnType("character varying(32)"); b.Property("IconPresetId") .HasMaxLength(48) .HasColumnType("character varying(48)"); b.Property("IconStyle") .HasMaxLength(16) .HasColumnType("character varying(16)"); b.Property("ImageUrl") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("KitchenStationId") .HasColumnType("text"); b.Property("Name") .IsRequired() .HasColumnType("text"); b.Property("NameAr") .HasColumnType("text"); b.Property("NameEn") .HasColumnType("text"); b.Property("SortOrder") .HasColumnType("integer"); b.Property("TaxId") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("CafeId"); b.HasIndex("KitchenStationId"); b.HasIndex("TaxId"); b.ToTable("MenuCategories"); }); modelBuilder.Entity("Meezi.Core.Entities.MenuItem", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CategoryId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Description") .HasColumnType("text"); b.Property("DiscountPercent") .HasColumnType("numeric"); b.Property("ImageUrl") .HasColumnType("text"); b.Property("IsAvailable") .HasColumnType("boolean"); b.Property("KitchenStationId") .HasColumnType("text"); b.Property("Model3dUrl") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("Name") .IsRequired() .HasColumnType("text"); b.Property("NameAr") .HasColumnType("text"); b.Property("NameEn") .HasColumnType("text"); b.Property("Price") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("VideoUrl") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("CafeId"); b.HasIndex("CategoryId"); b.HasIndex("KitchenStationId"); b.ToTable("MenuItems"); }); modelBuilder.Entity("Meezi.Core.Entities.MenuItemIngredient", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IngredientId") .IsRequired() .HasColumnType("text"); b.Property("MenuItemId") .IsRequired() .HasColumnType("text"); b.Property("QuantityPerUnit") .HasPrecision(18, 3) .HasColumnType("numeric(18,3)"); b.HasKey("Id"); b.HasIndex("IngredientId"); b.HasIndex("MenuItemId"); b.HasIndex("CafeId", "MenuItemId", "IngredientId") .IsUnique(); b.ToTable("MenuItemIngredients"); }); modelBuilder.Entity("Meezi.Core.Entities.Order", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CancelReason") .HasColumnType("text"); b.Property("CancelledAt") .HasColumnType("timestamp with time zone"); b.Property("CancelledByEmployeeId") .HasColumnType("text"); b.Property("CouponId") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("CustomerId") .HasColumnType("text"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("DeliveryMetaJson") .HasMaxLength(4000) .HasColumnType("character varying(4000)"); b.Property("DeliveryPlatform") .HasColumnType("integer"); b.Property("DiscountAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("DisplayNumber") .HasColumnType("integer"); b.Property("EmployeeId") .HasColumnType("text"); b.Property("ExternalOrderId") .HasMaxLength(120) .HasColumnType("character varying(120)"); b.Property("GuestName") .HasColumnType("text"); b.Property("GuestPhone") .HasColumnType("text"); b.Property("GuestTrackingToken") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("OrderType") .HasColumnType("integer"); b.Property("PlatformCommission") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("ReservationId") .HasColumnType("text"); b.Property("SnappfoodOrderId") .HasColumnType("text"); b.Property("Source") .HasColumnType("integer"); b.Property("Status") .HasColumnType("integer"); b.Property("StatusUpdatedAt") .HasColumnType("timestamp with time zone"); b.Property("Subtotal") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("TableId") .HasColumnType("text"); b.Property("TaxTotal") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("Total") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("CouponId"); b.HasIndex("CustomerId"); b.HasIndex("EmployeeId"); b.HasIndex("GuestTrackingToken"); b.HasIndex("ReservationId"); b.HasIndex("TableId"); b.HasIndex("CafeId", "DisplayNumber") .IsUnique(); b.HasIndex("CafeId", "DeliveryPlatform", "ExternalOrderId"); b.ToTable("Orders"); }); modelBuilder.Entity("Meezi.Core.Entities.OrderItem", b => { b.Property("Id") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IsVoided") .HasColumnType("boolean"); b.Property("MenuItemId") .IsRequired() .HasColumnType("text"); b.Property("Notes") .HasColumnType("text"); b.Property("OrderId") .IsRequired() .HasColumnType("text"); b.Property("Quantity") .HasColumnType("integer"); b.Property("UnitPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("VoidedAt") .HasColumnType("timestamp with time zone"); b.Property("VoidedByUserId") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("MenuItemId"); b.HasIndex("OrderId"); b.ToTable("OrderItems"); }); modelBuilder.Entity("Meezi.Core.Entities.Payment", b => { b.Property("Id") .HasColumnType("text"); b.Property("Amount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Method") .HasColumnType("integer"); b.Property("OrderId") .IsRequired() .HasColumnType("text"); b.Property("Reference") .HasColumnType("text"); b.Property("Status") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("OrderId"); b.ToTable("Payments"); }); modelBuilder.Entity("Meezi.Core.Entities.PlatformFeature", b => { b.Property("Id") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("DisplayNameEn") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("DisplayNameFa") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("IsEnabledGlobally") .HasColumnType("boolean"); b.Property("Key") .IsRequired() .HasMaxLength(80) .HasColumnType("character varying(80)"); b.Property("ModuleGroup") .IsRequired() .HasMaxLength(60) .HasColumnType("character varying(60)"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.HasKey("Id"); b.HasIndex("Key") .IsUnique(); b.ToTable("PlatformFeatures"); }); modelBuilder.Entity("Meezi.Core.Entities.PlatformPlanDefinition", b => { b.Property("Id") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("DisplayNameEn") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("DisplayNameFa") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("FeaturesJson") .HasMaxLength(4000) .HasColumnType("character varying(4000)"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("IsBillableOnline") .HasColumnType("boolean"); b.Property("LimitsJson") .IsRequired() .HasMaxLength(4000) .HasColumnType("character varying(4000)"); b.Property("MonthlyPriceToman") .HasPrecision(18) .HasColumnType("numeric(18,0)"); b.Property("SortOrder") .HasColumnType("integer"); b.Property("Tier") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("Tier") .IsUnique(); b.ToTable("PlatformPlanDefinitions"); }); modelBuilder.Entity("Meezi.Core.Entities.PlatformSetting", b => { b.Property("Id") .HasColumnType("text"); b.Property("Category") .IsRequired() .HasMaxLength(60) .HasColumnType("character varying(60)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("DescriptionFa") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("Key") .IsRequired() .HasMaxLength(120) .HasColumnType("character varying(120)"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.Property("Value") .IsRequired() .HasMaxLength(8000) .HasColumnType("character varying(8000)"); b.HasKey("Id"); b.HasIndex("Key") .IsUnique(); b.ToTable("PlatformSettings"); }); modelBuilder.Entity("Meezi.Core.Entities.PrintAgent", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("LastSeenAt") .HasColumnType("timestamp with time zone"); b.Property("Name") .IsRequired() .HasMaxLength(120) .HasColumnType("character varying(120)"); b.Property("PairingCode") .HasMaxLength(16) .HasColumnType("character varying(16)"); b.Property("PairingCodeExpiresAt") .HasColumnType("timestamp with time zone"); b.Property("Revoked") .HasColumnType("boolean"); b.Property("TokenHash") .HasMaxLength(128) .HasColumnType("character varying(128)"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("CafeId"); b.HasIndex("PairingCode"); b.HasIndex("TokenHash"); b.ToTable("PrintAgents"); }); modelBuilder.Entity("Meezi.Core.Entities.PrintDevice", b => { b.Property("Id") .HasColumnType("text"); b.Property("AgentId") .IsRequired() .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("DisplayName") .IsRequired() .HasMaxLength(256) .HasColumnType("character varying(256)"); b.Property("Kind") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("LastSeenAt") .HasColumnType("timestamp with time zone"); b.Property("SystemName") .IsRequired() .HasMaxLength(256) .HasColumnType("character varying(256)"); b.HasKey("Id"); b.HasIndex("AgentId", "SystemName") .IsUnique(); b.ToTable("PrintDevices"); }); modelBuilder.Entity("Meezi.Core.Entities.PushDevice", b => { b.Property("Id") .HasColumnType("text"); b.Property("City") .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("ConsumerAccountId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("LastSeenAt") .HasColumnType("timestamp with time zone"); b.Property("Platform") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("Token") .IsRequired() .HasMaxLength(256) .HasColumnType("character varying(256)"); b.HasKey("Id"); b.HasIndex("City"); b.HasIndex("Token") .IsUnique(); b.ToTable("PushDevices"); }); modelBuilder.Entity("Meezi.Core.Entities.QueueTicket", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("CustomerLabel") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IssuedAt") .HasColumnType("timestamp with time zone"); b.Property("IssuedByUserId") .HasColumnType("text"); b.Property("Number") .HasColumnType("integer"); b.Property("OrderId") .HasColumnType("text"); b.Property("ServiceDate") .HasColumnType("date"); b.Property("Status") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("OrderId"); b.HasIndex("CafeId", "BranchId", "ServiceDate", "Number") .IsUnique(); b.ToTable("QueueTickets"); }); modelBuilder.Entity("Meezi.Core.Entities.Shift", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .IsRequired() .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("ClosedAt") .HasColumnType("timestamp with time zone"); b.Property("ClosedByUserId") .HasColumnType("text"); b.Property("ClosingCash") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Discrepancy") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("ExpectedCash") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("OpenedAt") .HasColumnType("timestamp with time zone"); b.Property("OpenedByUserId") .IsRequired() .HasColumnType("text"); b.Property("OpeningCash") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("Status") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("CafeId"); b.HasIndex("ClosedByUserId"); b.HasIndex("OpenedByUserId"); b.HasIndex("BranchId", "Status"); b.ToTable("RegisterShifts", (string)null); }); modelBuilder.Entity("Meezi.Core.Entities.StockMovement", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Delta") .HasPrecision(18, 3) .HasColumnType("numeric(18,3)"); b.Property("ExpenseId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("IngredientId") .IsRequired() .HasColumnType("text"); b.Property("Kind") .IsRequired() .HasMaxLength(30) .HasColumnType("character varying(30)"); b.Property("Note") .HasColumnType("text"); b.Property("OrderId") .HasMaxLength(64) .HasColumnType("character varying(64)"); b.Property("TotalCostToman") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.HasKey("Id"); b.HasIndex("IngredientId"); b.HasIndex("CafeId", "OrderId"); b.ToTable("StockMovements"); }); modelBuilder.Entity("Meezi.Core.Entities.SubscriptionPayment", b => { b.Property("Id") .HasColumnType("text"); b.Property("AmountRials") .HasColumnType("bigint"); b.Property("AmountToman") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)"); b.Property("Authority") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("EffectiveFrom") .HasColumnType("timestamp with time zone"); b.Property("EffectiveTo") .HasColumnType("timestamp with time zone"); b.Property("Months") .HasColumnType("integer"); b.Property("PlanTier") .HasColumnType("integer"); b.Property("Provider") .HasColumnType("integer"); b.Property("RefId") .HasColumnType("text"); b.Property("Status") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("Authority"); b.HasIndex("CafeId"); b.ToTable("SubscriptionPayments"); }); modelBuilder.Entity("Meezi.Core.Entities.SupportTicket", b => { b.Property("Id") .HasColumnType("text"); b.Property("AssignedAdminId") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("ClosedAt") .HasColumnType("timestamp with time zone"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("CreatedByEmployeeId") .IsRequired() .HasColumnType("text"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Priority") .HasColumnType("integer"); b.Property("Status") .HasColumnType("integer"); b.Property("Subject") .IsRequired() .HasMaxLength(300) .HasColumnType("character varying(300)"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone"); b.HasKey("Id"); b.HasIndex("CreatedByEmployeeId"); b.HasIndex("CafeId", "Status", "UpdatedAt"); b.ToTable("SupportTickets"); }); modelBuilder.Entity("Meezi.Core.Entities.SupportTicketMessage", b => { b.Property("Id") .HasColumnType("text"); b.Property("Body") .IsRequired() .HasMaxLength(8000) .HasColumnType("character varying(8000)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("SenderId") .IsRequired() .HasColumnType("text"); b.Property("SenderKind") .HasColumnType("integer"); b.Property("TicketId") .IsRequired() .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("TicketId", "CreatedAt"); b.ToTable("SupportTicketMessages"); }); modelBuilder.Entity("Meezi.Core.Entities.SystemAdmin", b => { b.Property("Id") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("Name") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("PasswordHash") .HasColumnType("text"); b.Property("Phone") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)"); b.Property("Username") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("Phone") .IsUnique(); b.ToTable("SystemAdmins"); }); modelBuilder.Entity("Meezi.Core.Entities.Table", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .IsRequired() .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("Capacity") .HasColumnType("integer"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Floor") .HasColumnType("text"); b.Property("ImageUrl") .HasColumnType("text"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("IsCleaning") .HasColumnType("boolean"); b.Property("Number") .IsRequired() .HasMaxLength(50) .HasColumnType("character varying(50)"); b.Property("QrCode") .IsRequired() .HasColumnType("text"); b.Property("SectionId") .HasColumnType("text"); b.Property("SortOrder") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(0); b.Property("VideoUrl") .HasColumnType("text"); b.HasKey("Id"); b.HasIndex("CafeId"); b.HasIndex("QrCode") .IsUnique(); b.HasIndex("SectionId"); b.HasIndex("BranchId", "SectionId", "SortOrder"); b.ToTable("Tables"); }); modelBuilder.Entity("Meezi.Core.Entities.TableReservation", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("CustomerId") .HasColumnType("text"); b.Property("Date") .HasColumnType("date"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("GuestName") .IsRequired() .HasColumnType("text"); b.Property("GuestPhone") .IsRequired() .HasColumnType("text"); b.Property("Notes") .HasColumnType("text"); b.Property("PartySize") .HasColumnType("integer"); b.Property("Status") .HasColumnType("integer"); b.Property("TableId") .HasColumnType("text"); b.Property("Time") .HasColumnType("time without time zone"); b.HasKey("Id"); b.HasIndex("CustomerId"); b.HasIndex("TableId"); b.HasIndex("CafeId", "Date", "Time"); b.ToTable("TableReservations"); }); modelBuilder.Entity("Meezi.Core.Entities.TableSection", b => { b.Property("Id") .HasColumnType("text"); b.Property("BranchId") .IsRequired() .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IsActive") .HasColumnType("boolean"); b.Property("Name") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("SortOrder") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("CafeId"); b.HasIndex("BranchId", "Name"); b.ToTable("TableSections"); }); modelBuilder.Entity("Meezi.Core.Entities.Tax", b => { b.Property("Id") .HasColumnType("text"); b.Property("CafeId") .IsRequired() .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IsCompound") .HasColumnType("boolean"); b.Property("IsDefault") .HasColumnType("boolean"); b.Property("IsRequired") .HasColumnType("boolean"); b.Property("Name") .IsRequired() .HasColumnType("text"); b.Property("Rate") .HasPrecision(5, 2) .HasColumnType("numeric(5,2)"); b.HasKey("Id"); b.HasIndex("CafeId"); b.ToTable("Taxes"); }); modelBuilder.Entity("Meezi.Core.Entities.WebhookLog", b => { b.Property("Id") .HasColumnType("text"); b.Property("AttemptCount") .HasColumnType("integer"); b.Property("CafeId") .HasColumnType("text"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("ErrorMessage") .HasMaxLength(2000) .HasColumnType("character varying(2000)"); b.Property("ExternalOrderId") .HasMaxLength(120) .HasColumnType("character varying(120)"); b.Property("MeeziOrderId") .HasMaxLength(50) .HasColumnType("character varying(50)"); b.Property("Platform") .HasColumnType("integer"); b.Property("Processed") .HasColumnType("boolean"); b.Property("ProcessedAt") .HasColumnType("timestamp with time zone"); b.Property("RawBody") .IsRequired() .HasColumnType("text"); b.Property("SignatureHeader") .HasMaxLength(256) .HasColumnType("character varying(256)"); b.Property("SignatureValid") .HasColumnType("boolean"); b.Property("Success") .HasColumnType("boolean"); b.HasKey("Id"); b.HasIndex("CafeId"); b.HasIndex("Platform", "CreatedAt"); b.ToTable("WebhookLogs"); }); modelBuilder.Entity("Meezi.Core.Entities.WebsiteBlogPost", b => { b.Property("Id") .HasColumnType("text"); b.Property("Author") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("CategoryEn") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("CategoryFa") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("ContentEn") .IsRequired() .HasColumnType("text"); b.Property("ContentFa") .IsRequired() .HasColumnType("text"); b.Property("CoverImage") .HasMaxLength(500) .HasColumnType("character varying(500)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("ExcerptEn") .IsRequired() .HasMaxLength(1000) .HasColumnType("character varying(1000)"); b.Property("ExcerptFa") .IsRequired() .HasMaxLength(1000) .HasColumnType("character varying(1000)"); b.Property("IsPublished") .HasColumnType("boolean"); b.Property("PublishedAt") .HasColumnType("timestamp with time zone"); b.Property("Slug") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("TagsJson") .IsRequired() .ValueGeneratedOnAdd() .HasMaxLength(2000) .HasColumnType("character varying(2000)") .HasDefaultValue("[]"); b.Property("TitleEn") .IsRequired() .HasMaxLength(400) .HasColumnType("character varying(400)"); b.Property("TitleFa") .IsRequired() .HasMaxLength(400) .HasColumnType("character varying(400)"); b.Property("ViewCount") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("Slug") .IsUnique(); b.HasIndex("IsPublished", "PublishedAt"); b.ToTable("WebsiteBlogPosts"); }); modelBuilder.Entity("Meezi.Core.Entities.WebsiteComment", b => { b.Property("Id") .HasColumnType("text"); b.Property("AuthorEmail") .HasMaxLength(200) .HasColumnType("character varying(200)"); b.Property("AuthorName") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); b.Property("Content") .IsRequired() .HasMaxLength(3000) .HasColumnType("character varying(3000)"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("IpAddress") .HasMaxLength(50) .HasColumnType("character varying(50)"); b.Property("IsApproved") .HasColumnType("boolean"); b.Property("PostSlug") .IsRequired() .HasMaxLength(200) .HasColumnType("character varying(200)"); b.HasKey("Id"); b.HasIndex("PostSlug", "IsApproved", "CreatedAt"); b.ToTable("WebsiteComments"); }); modelBuilder.Entity("Meezi.Core.Entities.Attendance", b => { b.HasOne("Meezi.Core.Entities.Employee", "Employee") .WithMany("Attendances") .HasForeignKey("EmployeeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Employee"); }); modelBuilder.Entity("Meezi.Core.Entities.AuditLog", b => { b.HasOne("Meezi.Core.Entities.Cafe", null) .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Meezi.Core.Entities.Branch", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("Branches") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.BranchMenuItemOverride", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany() .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.MenuItem", "MenuItem") .WithMany("BranchOverrides") .HasForeignKey("MenuItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Branch"); b.Navigation("MenuItem"); }); modelBuilder.Entity("Meezi.Core.Entities.CafeFeatureOverride", b => { b.HasOne("Meezi.Core.Entities.Cafe", null) .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("Meezi.Core.Entities.CafeReview", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("Reviews") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.CafeReviewPhoto", b => { b.HasOne("Meezi.Core.Entities.CafeReview", "Review") .WithMany("Photos") .HasForeignKey("ReviewId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Review"); }); modelBuilder.Entity("Meezi.Core.Entities.CashTransaction", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany() .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Shift", "Shift") .WithMany("Transactions") .HasForeignKey("ShiftId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Branch"); b.Navigation("Shift"); }); modelBuilder.Entity("Meezi.Core.Entities.Coupon", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("Coupons") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.CustomRole", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.Customer", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("Customers") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.DailyReport", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany() .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Branch"); }); modelBuilder.Entity("Meezi.Core.Entities.DeliveryCommissionRate", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.Employee", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany("Staff") .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("Employees") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.CustomRole", "CustomRole") .WithMany("Employees") .HasForeignKey("CustomRoleId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Branch"); b.Navigation("Cafe"); b.Navigation("CustomRole"); }); modelBuilder.Entity("Meezi.Core.Entities.EmployeeBranchRole", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany("StaffRoles") .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.Employee", "Employee") .WithMany("BranchRoles") .HasForeignKey("EmployeeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Branch"); b.Navigation("Employee"); }); modelBuilder.Entity("Meezi.Core.Entities.EmployeeSalary", b => { b.HasOne("Meezi.Core.Entities.Employee", "Employee") .WithMany("Salaries") .HasForeignKey("EmployeeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Employee"); }); modelBuilder.Entity("Meezi.Core.Entities.EmployeeSchedule", b => { b.HasOne("Meezi.Core.Entities.Employee", "Employee") .WithMany("Schedules") .HasForeignKey("EmployeeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Employee"); }); modelBuilder.Entity("Meezi.Core.Entities.Expense", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany() .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.Shift", "Shift") .WithMany() .HasForeignKey("ShiftId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Branch"); b.Navigation("Shift"); }); modelBuilder.Entity("Meezi.Core.Entities.Ingredient", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("Ingredients") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.KitchenStation", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany() .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Branch"); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.LeaveRequest", b => { b.HasOne("Meezi.Core.Entities.Employee", "Employee") .WithMany("LeaveRequests") .HasForeignKey("EmployeeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Employee"); }); modelBuilder.Entity("Meezi.Core.Entities.MenuCategory", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("MenuCategories") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.KitchenStation", "KitchenStation") .WithMany("Categories") .HasForeignKey("KitchenStationId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Tax", "Tax") .WithMany("MenuCategories") .HasForeignKey("TaxId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Cafe"); b.Navigation("KitchenStation"); b.Navigation("Tax"); }); modelBuilder.Entity("Meezi.Core.Entities.MenuItem", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("MenuItems") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.MenuCategory", "Category") .WithMany("MenuItems") .HasForeignKey("CategoryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.KitchenStation", "KitchenStation") .WithMany("MenuItems") .HasForeignKey("KitchenStationId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Cafe"); b.Navigation("Category"); b.Navigation("KitchenStation"); }); modelBuilder.Entity("Meezi.Core.Entities.MenuItemIngredient", b => { b.HasOne("Meezi.Core.Entities.Ingredient", "Ingredient") .WithMany("MenuItemRecipes") .HasForeignKey("IngredientId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.MenuItem", "MenuItem") .WithMany("RecipeIngredients") .HasForeignKey("MenuItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Ingredient"); b.Navigation("MenuItem"); }); modelBuilder.Entity("Meezi.Core.Entities.Order", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany("Orders") .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("Orders") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.Coupon", "Coupon") .WithMany("Orders") .HasForeignKey("CouponId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Customer", "Customer") .WithMany("Orders") .HasForeignKey("CustomerId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Employee", "Employee") .WithMany("Orders") .HasForeignKey("EmployeeId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.TableReservation", "Reservation") .WithMany() .HasForeignKey("ReservationId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Table", "Table") .WithMany("Orders") .HasForeignKey("TableId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Branch"); b.Navigation("Cafe"); b.Navigation("Coupon"); b.Navigation("Customer"); b.Navigation("Employee"); b.Navigation("Reservation"); b.Navigation("Table"); }); modelBuilder.Entity("Meezi.Core.Entities.OrderItem", b => { b.HasOne("Meezi.Core.Entities.MenuItem", "MenuItem") .WithMany("OrderItems") .HasForeignKey("MenuItemId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("Meezi.Core.Entities.Order", "Order") .WithMany("Items") .HasForeignKey("OrderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("MenuItem"); b.Navigation("Order"); }); modelBuilder.Entity("Meezi.Core.Entities.Payment", b => { b.HasOne("Meezi.Core.Entities.Order", "Order") .WithMany("Payments") .HasForeignKey("OrderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Order"); }); modelBuilder.Entity("Meezi.Core.Entities.PrintAgent", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany() .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Branch"); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.PrintDevice", b => { b.HasOne("Meezi.Core.Entities.PrintAgent", "Agent") .WithMany("Devices") .HasForeignKey("AgentId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Agent"); }); modelBuilder.Entity("Meezi.Core.Entities.QueueTicket", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany() .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.Order", "Order") .WithMany() .HasForeignKey("OrderId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Branch"); b.Navigation("Cafe"); b.Navigation("Order"); }); modelBuilder.Entity("Meezi.Core.Entities.Shift", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany() .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.Employee", "ClosedBy") .WithMany() .HasForeignKey("ClosedByUserId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Employee", "OpenedBy") .WithMany() .HasForeignKey("OpenedByUserId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Branch"); b.Navigation("Cafe"); b.Navigation("ClosedBy"); b.Navigation("OpenedBy"); }); modelBuilder.Entity("Meezi.Core.Entities.StockMovement", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.Ingredient", "Ingredient") .WithMany("Movements") .HasForeignKey("IngredientId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); b.Navigation("Ingredient"); }); modelBuilder.Entity("Meezi.Core.Entities.SubscriptionPayment", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("SubscriptionPayments") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.SupportTicket", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.Employee", "CreatedByEmployee") .WithMany() .HasForeignKey("CreatedByEmployeeId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.Navigation("Cafe"); b.Navigation("CreatedByEmployee"); }); modelBuilder.Entity("Meezi.Core.Entities.SupportTicketMessage", b => { b.HasOne("Meezi.Core.Entities.SupportTicket", "Ticket") .WithMany("Messages") .HasForeignKey("TicketId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Ticket"); }); modelBuilder.Entity("Meezi.Core.Entities.Table", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany("Tables") .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("Tables") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.TableSection", "Section") .WithMany("Tables") .HasForeignKey("SectionId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Branch"); b.Navigation("Cafe"); b.Navigation("Section"); }); modelBuilder.Entity("Meezi.Core.Entities.TableReservation", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Meezi.Core.Entities.Customer", "Customer") .WithMany() .HasForeignKey("CustomerId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Meezi.Core.Entities.Table", "Table") .WithMany() .HasForeignKey("TableId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Cafe"); b.Navigation("Customer"); b.Navigation("Table"); }); modelBuilder.Entity("Meezi.Core.Entities.TableSection", b => { b.HasOne("Meezi.Core.Entities.Branch", "Branch") .WithMany("Sections") .HasForeignKey("BranchId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Branch"); }); modelBuilder.Entity("Meezi.Core.Entities.Tax", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany("Taxes") .HasForeignKey("CafeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.WebhookLog", b => { b.HasOne("Meezi.Core.Entities.Cafe", "Cafe") .WithMany() .HasForeignKey("CafeId"); b.Navigation("Cafe"); }); modelBuilder.Entity("Meezi.Core.Entities.WebsiteComment", b => { b.HasOne("Meezi.Core.Entities.WebsiteBlogPost", "Post") .WithMany("Comments") .HasForeignKey("PostSlug") .HasPrincipalKey("Slug") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Post"); }); modelBuilder.Entity("Meezi.Core.Entities.Branch", b => { b.Navigation("Orders"); b.Navigation("Sections"); b.Navigation("Staff"); b.Navigation("StaffRoles"); b.Navigation("Tables"); }); modelBuilder.Entity("Meezi.Core.Entities.Cafe", b => { b.Navigation("Branches"); b.Navigation("Coupons"); b.Navigation("Customers"); b.Navigation("Employees"); b.Navigation("Ingredients"); b.Navigation("MenuCategories"); b.Navigation("MenuItems"); b.Navigation("Orders"); b.Navigation("Reviews"); b.Navigation("SubscriptionPayments"); b.Navigation("Tables"); b.Navigation("Taxes"); }); modelBuilder.Entity("Meezi.Core.Entities.CafeReview", b => { b.Navigation("Photos"); }); modelBuilder.Entity("Meezi.Core.Entities.Coupon", b => { b.Navigation("Orders"); }); modelBuilder.Entity("Meezi.Core.Entities.CustomRole", b => { b.Navigation("Employees"); }); modelBuilder.Entity("Meezi.Core.Entities.Customer", b => { b.Navigation("Orders"); }); modelBuilder.Entity("Meezi.Core.Entities.Employee", b => { b.Navigation("Attendances"); b.Navigation("BranchRoles"); b.Navigation("LeaveRequests"); b.Navigation("Orders"); b.Navigation("Salaries"); b.Navigation("Schedules"); }); modelBuilder.Entity("Meezi.Core.Entities.Ingredient", b => { b.Navigation("MenuItemRecipes"); b.Navigation("Movements"); }); modelBuilder.Entity("Meezi.Core.Entities.KitchenStation", b => { b.Navigation("Categories"); b.Navigation("MenuItems"); }); modelBuilder.Entity("Meezi.Core.Entities.MenuCategory", b => { b.Navigation("MenuItems"); }); modelBuilder.Entity("Meezi.Core.Entities.MenuItem", b => { b.Navigation("BranchOverrides"); b.Navigation("OrderItems"); b.Navigation("RecipeIngredients"); }); modelBuilder.Entity("Meezi.Core.Entities.Order", b => { b.Navigation("Items"); b.Navigation("Payments"); }); modelBuilder.Entity("Meezi.Core.Entities.PrintAgent", b => { b.Navigation("Devices"); }); modelBuilder.Entity("Meezi.Core.Entities.Shift", b => { b.Navigation("Transactions"); }); modelBuilder.Entity("Meezi.Core.Entities.SupportTicket", b => { b.Navigation("Messages"); }); modelBuilder.Entity("Meezi.Core.Entities.Table", b => { b.Navigation("Orders"); }); modelBuilder.Entity("Meezi.Core.Entities.TableSection", b => { b.Navigation("Tables"); }); modelBuilder.Entity("Meezi.Core.Entities.Tax", b => { b.Navigation("MenuCategories"); }); modelBuilder.Entity("Meezi.Core.Entities.WebsiteBlogPost", b => { b.Navigation("Comments"); }); #pragma warning restore 612, 618 } } }