// using System; using Meezi.Infrastructure.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace Meezi.Infrastructure.Data.Migrations { [DbContext(typeof(AppDbContext))] [Migration("20260522211634_OrderDisplayNumber")] partial class OrderDisplayNumber { /// protected override void BuildTargetModel(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.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("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("ReceiptPrinterIp") .HasMaxLength(45) .HasColumnType("character varying(45)"); b.Property("ReceiptPrinterPort") .HasColumnType("integer"); 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("DiscoverProfileJson") .HasMaxLength(8000) .HasColumnType("character varying(8000)"); b.Property("IsSuspended") .HasColumnType("boolean"); b.Property("IsVerified") .HasColumnType("boolean"); b.Property("LogoUrl") .HasColumnType("text"); 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("Slug") .IsRequired() .HasMaxLength(100) .HasColumnType("character varying(100)"); 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.HasKey("Id"); 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("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.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.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.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.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("DeletedAt") .HasColumnType("timestamp with time zone"); b.Property("Name") .IsRequired() .HasColumnType("text"); b.Property("NationalId") .HasColumnType("text"); b.Property("Phone") .IsRequired() .HasColumnType("text"); b.Property("PinCode") .HasColumnType("text"); b.Property("Role") .HasColumnType("integer"); b.HasKey("Id"); b.HasIndex("BranchId"); b.HasIndex("CafeId", "Phone") .IsUnique() .HasFilter("\"DeletedAt\" IS NULL"); b.ToTable("Employees"); }); 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.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.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.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("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("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("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.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("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.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("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("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.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("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("Phone") .IsRequired() .HasMaxLength(20) .HasColumnType("character varying(20)"); 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.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.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.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.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.Navigation("Branch"); b.Navigation("Cafe"); }); 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.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.Tax", "Tax") .WithMany("MenuCategories") .HasForeignKey("TaxId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Cafe"); 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.Navigation("Cafe"); b.Navigation("Category"); }); 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.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.Branch", b => { b.Navigation("Orders"); b.Navigation("Sections"); b.Navigation("Staff"); 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.Coupon", b => { b.Navigation("Orders"); }); modelBuilder.Entity("Meezi.Core.Entities.Customer", b => { b.Navigation("Orders"); }); modelBuilder.Entity("Meezi.Core.Entities.Employee", b => { b.Navigation("Attendances"); 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.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.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"); }); #pragma warning restore 612, 618 } } }