345ae0a4b5
CI/CD / CI · Admin API (dotnet build) (push) Successful in 41s
CI/CD / CI · Admin Web (tsc) (push) Failing after 5s
CI/CD / CI · Website (tsc) (push) Failing after 4s
CI/CD / CI · Koja (tsc) (push) Failing after 5s
CI/CD / CI · API (dotnet build + test) (push) Successful in 1m13s
CI/CD / CI · Dashboard (tsc) (push) Failing after 2m32s
CI/CD / Deploy · all services (push) Has been skipped
3288 lines
114 KiB
C#
3288 lines
114 KiB
C#
// <auto-generated />
|
|
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("20260531061500_AddOrderCancellationFields")]
|
|
partial class AddOrderCancellationFields
|
|
{
|
|
/// <inheritdoc />
|
|
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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime?>("ClockIn")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("ClockOut")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateOnly>("Date")
|
|
.HasColumnType("date");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("EmployeeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Notes")
|
|
.HasColumnType("text");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("EmployeeId", "Date")
|
|
.IsUnique();
|
|
|
|
b.ToTable("Attendances");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.AuditLog", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Action")
|
|
.IsRequired()
|
|
.HasMaxLength(96)
|
|
.HasColumnType("character varying(96)");
|
|
|
|
b.Property<string>("ActorId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("ActorName")
|
|
.HasMaxLength(160)
|
|
.HasColumnType("character varying(160)");
|
|
|
|
b.Property<string>("ActorRole")
|
|
.HasMaxLength(32)
|
|
.HasColumnType("character varying(32)");
|
|
|
|
b.Property<string>("BranchId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Category")
|
|
.IsRequired()
|
|
.HasMaxLength(64)
|
|
.HasColumnType("character varying(64)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("DetailsJson")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("EntityId")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("character varying(64)");
|
|
|
|
b.Property<string>("EntityType")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("character varying(64)");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("AccentColor")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Address")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<bool>("AutoCutEnabled")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("City")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("KitchenPrinterIp")
|
|
.HasMaxLength(45)
|
|
.HasColumnType("character varying(45)");
|
|
|
|
b.Property<int?>("KitchenPrinterPort")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("LogoUrl")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<int>("PaperWidthMm")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Phone")
|
|
.HasMaxLength(20)
|
|
.HasColumnType("character varying(20)");
|
|
|
|
b.Property<string>("PosDeviceIp")
|
|
.HasMaxLength(45)
|
|
.HasColumnType("character varying(45)");
|
|
|
|
b.Property<int?>("PosDevicePort")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("ReceiptFooter")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<string>("ReceiptHeader")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<string>("ReceiptPrinterIp")
|
|
.HasMaxLength(45)
|
|
.HasColumnType("character varying(45)");
|
|
|
|
b.Property<int?>("ReceiptPrinterPort")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<DateTime?>("ScheduledPermanentDeleteAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal?>("TaxRate")
|
|
.HasColumnType("numeric");
|
|
|
|
b.Property<DateTime>("UpdatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("WelcomeText")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BranchId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsAvailable")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("MenuItemId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal?>("PriceOverride")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<int?>("SortOrderOverride")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<DateTime>("UpdatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Address")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<bool>("AllowBranchTaxOverride")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("City")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CoverImageUrl")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal>("DefaultTaxRate")
|
|
.HasPrecision(5, 2)
|
|
.HasColumnType("numeric(5,2)");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Description")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("DigikalaVendorId")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("DiscoverBadgesJson")
|
|
.HasMaxLength(2000)
|
|
.HasColumnType("character varying(2000)");
|
|
|
|
b.Property<string>("DiscoverProfileJson")
|
|
.HasMaxLength(8000)
|
|
.HasColumnType("character varying(8000)");
|
|
|
|
b.Property<string>("GalleryJson")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("InstagramHandle")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<bool>("IsSuspended")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<bool>("IsVerified")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("LogoUrl")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("NameAr")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("NameEn")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Phone")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime?>("PlanExpiresAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int>("PlanTier")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("PreferredLanguage")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Slug")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("SnappfoodVendorId")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("Tap30VendorId")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("ThemeJson")
|
|
.HasMaxLength(8000)
|
|
.HasColumnType("character varying(8000)");
|
|
|
|
b.Property<string>("WebsiteUrl")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("WorkingHoursJson")
|
|
.HasColumnType("text");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Slug")
|
|
.IsUnique();
|
|
|
|
b.ToTable("Cafes");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.CafeFeatureOverride", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("FeatureKey")
|
|
.IsRequired()
|
|
.HasMaxLength(80)
|
|
.HasColumnType("character varying(80)");
|
|
|
|
b.Property<bool>("IsEnabled")
|
|
.HasColumnType("boolean");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("CafeId", "FeatureKey")
|
|
.IsUnique();
|
|
|
|
b.ToTable("CafeFeatureOverrides");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.CafeNotification", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Body")
|
|
.HasMaxLength(1000)
|
|
.HasColumnType("character varying(1000)");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsRead")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<DateTime?>("ReadAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("ReferenceId")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("character varying(64)");
|
|
|
|
b.Property<string>("TableNumber")
|
|
.HasMaxLength(40)
|
|
.HasColumnType("character varying(40)");
|
|
|
|
b.Property<string>("Title")
|
|
.IsRequired()
|
|
.HasMaxLength(300)
|
|
.HasColumnType("character varying(300)");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("AuthorName")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("AuthorPhone")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Comment")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsHidden")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<DateTime?>("OwnerRepliedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("OwnerReply")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("Rating")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("CafeId", "CreatedAt");
|
|
|
|
b.ToTable("CafeReviews");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.CafeReviewPhoto", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("ReviewId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("SortOrder")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("Amount")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<string>("BranchId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("CreatedByUserId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int>("Method")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Note")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("ReferenceId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("ShiftId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Name")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Code")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("ExpiresAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<decimal?>("MaxDiscount")
|
|
.HasColumnType("numeric");
|
|
|
|
b.Property<decimal?>("MinOrderAmount")
|
|
.HasColumnType("numeric");
|
|
|
|
b.Property<DateTime?>("StartsAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int?>("TargetGroup")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Type")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int?>("UsageLimit")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("UsedCount")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<decimal>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BirthDateJalali")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int>("Group")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("LoyaltyPoints")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("NationalId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Phone")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("ReferredBy")
|
|
.HasColumnType("text");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("CafeId", "Phone");
|
|
|
|
b.ToTable("Customers");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.DailyReport", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("AvgOrderValue")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<string>("BranchId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("CardRevenue")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<decimal>("CashRevenue")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal>("CreditRevenue")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<DateOnly>("Date")
|
|
.HasColumnType("date");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime>("GeneratedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal>("NetIncome")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<string>("TopProducts")
|
|
.IsRequired()
|
|
.HasColumnType("jsonb");
|
|
|
|
b.Property<decimal>("TotalExpenses")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<int>("TotalOrders")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<decimal>("TotalRevenue")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<int>("TotalVoids")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<decimal>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<int>("Platform")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<decimal>("RatePercent")
|
|
.HasPrecision(5, 2)
|
|
.HasColumnType("numeric(5,2)");
|
|
|
|
b.Property<DateTime>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("AdminNotes")
|
|
.HasMaxLength(2000)
|
|
.HasColumnType("character varying(2000)");
|
|
|
|
b.Property<string>("BranchCount")
|
|
.IsRequired()
|
|
.HasMaxLength(20)
|
|
.HasColumnType("character varying(20)");
|
|
|
|
b.Property<string>("BusinessName")
|
|
.IsRequired()
|
|
.HasMaxLength(300)
|
|
.HasColumnType("character varying(300)");
|
|
|
|
b.Property<string>("ContactName")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<DateTime?>("ContactedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Email")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("Notes")
|
|
.HasMaxLength(2000)
|
|
.HasColumnType("character varying(2000)");
|
|
|
|
b.Property<string>("Phone")
|
|
.IsRequired()
|
|
.HasMaxLength(20)
|
|
.HasColumnType("character varying(20)");
|
|
|
|
b.Property<string>("Source")
|
|
.IsRequired()
|
|
.ValueGeneratedOnAdd()
|
|
.HasMaxLength(50)
|
|
.HasColumnType("character varying(50)")
|
|
.HasDefaultValue("website");
|
|
|
|
b.Property<int>("Status")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Status", "CreatedAt");
|
|
|
|
b.ToTable("DemoRequests");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.Employee", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("BaseSalary")
|
|
.HasColumnType("numeric");
|
|
|
|
b.Property<string>("BranchId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("NationalId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Phone")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("PinCode")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("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.EmployeeBranchRole", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BranchId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("EmployeeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("BaseSalary")
|
|
.HasColumnType("numeric");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal>("Deductions")
|
|
.HasColumnType("numeric");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("EmployeeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<bool>("IsPaid")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("MonthYear")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("NetSalary")
|
|
.HasColumnType("numeric");
|
|
|
|
b.Property<decimal>("OvertimePay")
|
|
.HasColumnType("numeric");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("EmployeeId", "MonthYear")
|
|
.IsUnique();
|
|
|
|
b.ToTable("EmployeeSalaries");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.EmployeeSchedule", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int>("DayOfWeek")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("EmployeeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("Amount")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<string>("BranchId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("Category")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("CreatedByUserId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Note")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<string>("ReceiptImageUrl")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal>("LowStockWarningPercent")
|
|
.HasPrecision(5, 2)
|
|
.HasColumnType("numeric(5,2)");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<decimal>("ParLevel")
|
|
.HasPrecision(18, 3)
|
|
.HasColumnType("numeric(18,3)");
|
|
|
|
b.Property<decimal>("QuantityOnHand")
|
|
.HasPrecision(18, 3)
|
|
.HasColumnType("numeric(18,3)");
|
|
|
|
b.Property<decimal>("ReorderLevel")
|
|
.HasPrecision(18, 3)
|
|
.HasColumnType("numeric(18,3)");
|
|
|
|
b.Property<string>("Unit")
|
|
.IsRequired()
|
|
.HasMaxLength(50)
|
|
.HasColumnType("character varying(50)");
|
|
|
|
b.Property<decimal>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BranchId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("PrinterIp")
|
|
.HasMaxLength(45)
|
|
.HasColumnType("character varying(45)");
|
|
|
|
b.Property<int>("PrinterPort")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("EmployeeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateOnly>("EndDate")
|
|
.HasColumnType("date");
|
|
|
|
b.Property<string>("Reason")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("ReviewedBy")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateOnly>("StartDate")
|
|
.HasColumnType("date");
|
|
|
|
b.Property<int>("Status")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("EmployeeId");
|
|
|
|
b.ToTable("LeaveRequests");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.MenuCategory", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal>("DiscountPercent")
|
|
.HasColumnType("numeric");
|
|
|
|
b.Property<string>("Icon")
|
|
.HasMaxLength(32)
|
|
.HasColumnType("character varying(32)");
|
|
|
|
b.Property<string>("IconPresetId")
|
|
.HasMaxLength(48)
|
|
.HasColumnType("character varying(48)");
|
|
|
|
b.Property<string>("IconStyle")
|
|
.HasMaxLength(16)
|
|
.HasColumnType("character varying(16)");
|
|
|
|
b.Property<string>("ImageUrl")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("KitchenStationId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("NameAr")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("NameEn")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("SortOrder")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CategoryId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Description")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("DiscountPercent")
|
|
.HasColumnType("numeric");
|
|
|
|
b.Property<string>("ImageUrl")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<bool>("IsAvailable")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Model3dUrl")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("NameAr")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("NameEn")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("Price")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<string>("VideoUrl")
|
|
.HasColumnType("text");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("CafeId");
|
|
|
|
b.HasIndex("CategoryId");
|
|
|
|
b.ToTable("MenuItems");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.MenuItemIngredient", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("IngredientId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("MenuItemId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BranchId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CancelReason")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime?>("CancelledAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("CancelledByEmployeeId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CouponId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("CustomerId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("DeliveryMetaJson")
|
|
.HasMaxLength(4000)
|
|
.HasColumnType("character varying(4000)");
|
|
|
|
b.Property<int?>("DeliveryPlatform")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<decimal>("DiscountAmount")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<int>("DisplayNumber")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("EmployeeId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("ExternalOrderId")
|
|
.HasMaxLength(120)
|
|
.HasColumnType("character varying(120)");
|
|
|
|
b.Property<string>("GuestName")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("GuestPhone")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("GuestTrackingToken")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("character varying(64)");
|
|
|
|
b.Property<int>("OrderType")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<decimal>("PlatformCommission")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<string>("ReservationId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("SnappfoodOrderId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("Source")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Status")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<DateTime>("StatusUpdatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal>("Subtotal")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<string>("TableId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("TaxTotal")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<decimal>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsVoided")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("MenuItemId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Notes")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("OrderId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("Quantity")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<decimal>("UnitPrice")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<DateTime?>("VoidedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("VoidedByUserId")
|
|
.HasColumnType("text");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("MenuItemId");
|
|
|
|
b.HasIndex("OrderId");
|
|
|
|
b.ToTable("OrderItems");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.Payment", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("Amount")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int>("Method")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("OrderId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Reference")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("Status")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("OrderId");
|
|
|
|
b.ToTable("Payments");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.PlatformFeature", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("DisplayNameEn")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("DisplayNameFa")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<bool>("IsEnabledGlobally")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Key")
|
|
.IsRequired()
|
|
.HasMaxLength(80)
|
|
.HasColumnType("character varying(80)");
|
|
|
|
b.Property<string>("ModuleGroup")
|
|
.IsRequired()
|
|
.HasMaxLength(60)
|
|
.HasColumnType("character varying(60)");
|
|
|
|
b.Property<DateTime>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("DisplayNameEn")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("DisplayNameFa")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("FeaturesJson")
|
|
.HasMaxLength(4000)
|
|
.HasColumnType("character varying(4000)");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<bool>("IsBillableOnline")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("LimitsJson")
|
|
.IsRequired()
|
|
.HasMaxLength(4000)
|
|
.HasColumnType("character varying(4000)");
|
|
|
|
b.Property<decimal>("MonthlyPriceToman")
|
|
.HasPrecision(18)
|
|
.HasColumnType("numeric(18,0)");
|
|
|
|
b.Property<int>("SortOrder")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Tier")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Tier")
|
|
.IsUnique();
|
|
|
|
b.ToTable("PlatformPlanDefinitions");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.PlatformSetting", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Category")
|
|
.IsRequired()
|
|
.HasMaxLength(60)
|
|
.HasColumnType("character varying(60)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("DescriptionFa")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<string>("Key")
|
|
.IsRequired()
|
|
.HasMaxLength(120)
|
|
.HasColumnType("character varying(120)");
|
|
|
|
b.Property<DateTime>("UpdatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Value")
|
|
.IsRequired()
|
|
.HasMaxLength(8000)
|
|
.HasColumnType("character varying(8000)");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Key")
|
|
.IsUnique();
|
|
|
|
b.ToTable("PlatformSettings");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.PushDevice", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("City")
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("ConsumerAccountId")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("character varying(64)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime>("LastSeenAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Platform")
|
|
.IsRequired()
|
|
.HasMaxLength(20)
|
|
.HasColumnType("character varying(20)");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BranchId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("CustomerLabel")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime>("IssuedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("IssuedByUserId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("Number")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("OrderId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateOnly>("ServiceDate")
|
|
.HasColumnType("date");
|
|
|
|
b.Property<int>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BranchId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime?>("ClosedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("ClosedByUserId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal?>("ClosingCash")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal?>("Discrepancy")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<decimal>("ExpectedCash")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<DateTime>("OpenedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("OpenedByUserId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("OpeningCash")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<int>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BranchId")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("character varying(64)");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<decimal>("Delta")
|
|
.HasPrecision(18, 3)
|
|
.HasColumnType("numeric(18,3)");
|
|
|
|
b.Property<string>("ExpenseId")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("character varying(64)");
|
|
|
|
b.Property<string>("IngredientId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Kind")
|
|
.IsRequired()
|
|
.HasMaxLength(30)
|
|
.HasColumnType("character varying(30)");
|
|
|
|
b.Property<string>("Note")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("OrderId")
|
|
.HasMaxLength(64)
|
|
.HasColumnType("character varying(64)");
|
|
|
|
b.Property<decimal?>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<long>("AmountRials")
|
|
.HasColumnType("bigint");
|
|
|
|
b.Property<decimal>("AmountToman")
|
|
.HasPrecision(18, 2)
|
|
.HasColumnType("numeric(18,2)");
|
|
|
|
b.Property<string>("Authority")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int>("Months")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("PlanTier")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Provider")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("RefId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("Status")
|
|
.HasColumnType("integer");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("Authority");
|
|
|
|
b.HasIndex("CafeId");
|
|
|
|
b.ToTable("SubscriptionPayments");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.SupportTicket", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("AssignedAdminId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime?>("ClosedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("CreatedByEmployeeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<int>("Priority")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Status")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("Subject")
|
|
.IsRequired()
|
|
.HasMaxLength(300)
|
|
.HasColumnType("character varying(300)");
|
|
|
|
b.Property<DateTime>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Body")
|
|
.IsRequired()
|
|
.HasMaxLength(8000)
|
|
.HasColumnType("character varying(8000)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("SenderId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("SenderKind")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("TicketId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.HasKey("Id");
|
|
|
|
b.HasIndex("TicketId", "CreatedAt");
|
|
|
|
b.ToTable("SupportTicketMessages");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.SystemAdmin", b =>
|
|
{
|
|
b.Property<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BranchId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("Capacity")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Floor")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("ImageUrl")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<bool>("IsCleaning")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Number")
|
|
.IsRequired()
|
|
.HasMaxLength(50)
|
|
.HasColumnType("character varying(50)");
|
|
|
|
b.Property<string>("QrCode")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("SectionId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("SortOrder")
|
|
.ValueGeneratedOnAdd()
|
|
.HasColumnType("integer")
|
|
.HasDefaultValue(0);
|
|
|
|
b.Property<string>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("CustomerId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateOnly>("Date")
|
|
.HasColumnType("date");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("GuestName")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("GuestPhone")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Notes")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("PartySize")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<int>("Status")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("TableId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<TimeOnly>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("BranchId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsActive")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<int>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CafeId")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<bool>("IsCompound")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<bool>("IsDefault")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<bool>("IsRequired")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("Name")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<decimal>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<int>("AttemptCount")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<string>("CafeId")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("ErrorMessage")
|
|
.HasMaxLength(2000)
|
|
.HasColumnType("character varying(2000)");
|
|
|
|
b.Property<string>("ExternalOrderId")
|
|
.HasMaxLength(120)
|
|
.HasColumnType("character varying(120)");
|
|
|
|
b.Property<string>("MeeziOrderId")
|
|
.HasMaxLength(50)
|
|
.HasColumnType("character varying(50)");
|
|
|
|
b.Property<int>("Platform")
|
|
.HasColumnType("integer");
|
|
|
|
b.Property<bool>("Processed")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<DateTime?>("ProcessedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("RawBody")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("SignatureHeader")
|
|
.HasMaxLength(256)
|
|
.HasColumnType("character varying(256)");
|
|
|
|
b.Property<bool>("SignatureValid")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<bool>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("Author")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("CategoryEn")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("CategoryFa")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("ContentEn")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("ContentFa")
|
|
.IsRequired()
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("CoverImage")
|
|
.HasMaxLength(500)
|
|
.HasColumnType("character varying(500)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("ExcerptEn")
|
|
.IsRequired()
|
|
.HasMaxLength(1000)
|
|
.HasColumnType("character varying(1000)");
|
|
|
|
b.Property<string>("ExcerptFa")
|
|
.IsRequired()
|
|
.HasMaxLength(1000)
|
|
.HasColumnType("character varying(1000)");
|
|
|
|
b.Property<bool>("IsPublished")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<DateTime?>("PublishedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("Slug")
|
|
.IsRequired()
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("TagsJson")
|
|
.IsRequired()
|
|
.ValueGeneratedOnAdd()
|
|
.HasMaxLength(2000)
|
|
.HasColumnType("character varying(2000)")
|
|
.HasDefaultValue("[]");
|
|
|
|
b.Property<string>("TitleEn")
|
|
.IsRequired()
|
|
.HasMaxLength(400)
|
|
.HasColumnType("character varying(400)");
|
|
|
|
b.Property<string>("TitleFa")
|
|
.IsRequired()
|
|
.HasMaxLength(400)
|
|
.HasColumnType("character varying(400)");
|
|
|
|
b.Property<int>("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<string>("Id")
|
|
.HasColumnType("text");
|
|
|
|
b.Property<string>("AuthorEmail")
|
|
.HasMaxLength(200)
|
|
.HasColumnType("character varying(200)");
|
|
|
|
b.Property<string>("AuthorName")
|
|
.IsRequired()
|
|
.HasMaxLength(100)
|
|
.HasColumnType("character varying(100)");
|
|
|
|
b.Property<string>("Content")
|
|
.IsRequired()
|
|
.HasMaxLength(3000)
|
|
.HasColumnType("character varying(3000)");
|
|
|
|
b.Property<DateTime>("CreatedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<DateTime?>("DeletedAt")
|
|
.HasColumnType("timestamp with time zone");
|
|
|
|
b.Property<string>("IpAddress")
|
|
.HasMaxLength(50)
|
|
.HasColumnType("character varying(50)");
|
|
|
|
b.Property<bool>("IsApproved")
|
|
.HasColumnType("boolean");
|
|
|
|
b.Property<string>("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.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.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.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.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.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");
|
|
});
|
|
|
|
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");
|
|
});
|
|
|
|
modelBuilder.Entity("Meezi.Core.Entities.WebsiteBlogPost", b =>
|
|
{
|
|
b.Navigation("Comments");
|
|
});
|
|
#pragma warning restore 612, 618
|
|
}
|
|
}
|
|
}
|