diff --git a/CulinaryCommandApp/Migrations/20260417214654_RemoveRecipeAllergens.Designer.cs b/CulinaryCommandApp/Migrations/20260417214654_RemoveRecipeAllergens.Designer.cs
new file mode 100644
index 0000000..4076e9a
--- /dev/null
+++ b/CulinaryCommandApp/Migrations/20260417214654_RemoveRecipeAllergens.Designer.cs
@@ -0,0 +1,1514 @@
+//
+using System;
+using CulinaryCommand.Data;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace CulinaryCommand.Migrations
+{
+ [DbContext(typeof(AppDbContext))]
+ [Migration("20260417214654_RemoveRecipeAllergens")]
+ partial class RemoveRecipeAllergens
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.0")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Company", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Address")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("City")
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("CompanyCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Description")
+ .HasColumnType("longtext");
+
+ b.Property("Email")
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("LLCName")
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("Phone")
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("State")
+ .HasMaxLength(64)
+ .HasColumnType("varchar(64)");
+
+ b.Property("TaxId")
+ .HasColumnType("longtext");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ZipCode")
+ .HasMaxLength(32)
+ .HasColumnType("varchar(32)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Companies");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Feedback", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Device")
+ .HasColumnType("longtext");
+
+ b.Property("FeedbackType")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Message")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Page")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ScreenshotBase64")
+ .HasColumnType("LONGTEXT");
+
+ b.Property("SubmittedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("UserEmail")
+ .HasColumnType("longtext");
+
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.Property("UserRole")
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Feedbacks");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Location", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Address")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("City")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("CompanyId")
+ .HasColumnType("int");
+
+ b.Property("MarginEdgeKey")
+ .HasColumnType("longtext");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("State")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("ZipCode")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CompanyId");
+
+ b.ToTable("Locations");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.ManagerLocation", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.HasKey("UserId", "LocationId");
+
+ b.HasIndex("LocationId");
+
+ b.ToTable("ManagerLocations");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.TaskList", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("CreatedByUserId")
+ .HasColumnType("int");
+
+ b.Property("Description")
+ .HasMaxLength(512)
+ .HasColumnType("varchar(512)");
+
+ b.Property("IsActive")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedByUserId");
+
+ b.HasIndex("LocationId");
+
+ b.ToTable("TaskLists");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.TaskListItem", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("SortOrder")
+ .HasColumnType("int");
+
+ b.Property("TaskListId")
+ .HasColumnType("int");
+
+ b.Property("TaskTemplateId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TaskTemplateId");
+
+ b.HasIndex("TaskListId", "TaskTemplateId")
+ .IsUnique();
+
+ b.ToTable("TaskListItems");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.TaskTemplate", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Count")
+ .HasColumnType("int");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("CreatedByUserId")
+ .HasColumnType("int");
+
+ b.Property("DefaultEstimatedMinutes")
+ .HasColumnType("int");
+
+ b.Property("IngredientId")
+ .HasColumnType("int");
+
+ b.Property("IsActive")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Kind")
+ .HasColumnType("int");
+
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("Notes")
+ .HasColumnType("longtext");
+
+ b.Property("Par")
+ .HasColumnType("int");
+
+ b.Property("Priority")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("RecipeId")
+ .HasColumnType("int");
+
+ b.Property("Station")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedByUserId");
+
+ b.HasIndex("IngredientId");
+
+ b.HasIndex("LocationId");
+
+ b.HasIndex("RecipeId");
+
+ b.ToTable("TaskTemplates");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Tasks", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Assigner")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Count")
+ .HasColumnType("int");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Date")
+ .HasColumnType("datetime(6)");
+
+ b.Property("DueDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("IngredientId")
+ .HasColumnType("int");
+
+ b.Property("Kind")
+ .HasColumnType("int");
+
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("Notes")
+ .HasColumnType("longtext");
+
+ b.Property("Par")
+ .HasColumnType("int");
+
+ b.Property("Priority")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("RecipeId")
+ .HasColumnType("int");
+
+ b.Property("Station")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IngredientId");
+
+ b.HasIndex("LocationId");
+
+ b.HasIndex("RecipeId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Tasks");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.User", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CompanyId")
+ .HasColumnType("int");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("CreatedByUserId")
+ .HasColumnType("int");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("EmailConfirmed")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("InviteToken")
+ .HasColumnType("longtext");
+
+ b.Property("InviteTokenExpires")
+ .HasColumnType("datetime(6)");
+
+ b.Property("IsActive")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("Password")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("Phone")
+ .HasColumnType("longtext");
+
+ b.Property("Role")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("StationsWorked")
+ .HasColumnType("longtext");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CompanyId");
+
+ b.ToTable("Users");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.UserLocation", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("Role")
+ .HasMaxLength(32)
+ .HasColumnType("varchar(32)");
+
+ b.HasKey("UserId", "LocationId");
+
+ b.HasIndex("LocationId");
+
+ b.ToTable("UserLocations");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.PurchaseOrder.Entities.PurchaseOrder", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ExpectedDeliveryDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("IsLocationLocked")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("Notes")
+ .HasColumnType("longtext");
+
+ b.Property("OrderDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("OrderNumber")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("Status")
+ .HasColumnType("int");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("VendorContact")
+ .HasColumnType("longtext");
+
+ b.Property("VendorName")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("LocationId");
+
+ b.HasIndex("OrderNumber")
+ .IsUnique();
+
+ b.ToTable("PurchaseOrders");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.PurchaseOrder.Entities.PurchaseOrderLine", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("IngredientId")
+ .HasColumnType("int");
+
+ b.Property("PurchaseOrderId")
+ .HasColumnType("int");
+
+ b.Property("QuantityOrdered")
+ .HasPrecision(18, 3)
+ .HasColumnType("decimal(18,3)");
+
+ b.Property("QuantityReceived")
+ .ValueGeneratedOnAdd()
+ .HasPrecision(18, 3)
+ .HasColumnType("decimal(18,3)")
+ .HasDefaultValue(0m);
+
+ b.Property("UnitId")
+ .HasColumnType("int");
+
+ b.Property("UnitPrice")
+ .HasPrecision(18, 2)
+ .HasColumnType("decimal(18,2)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IngredientId");
+
+ b.HasIndex("PurchaseOrderId");
+
+ b.HasIndex("UnitId");
+
+ b.ToTable("PurchaseOrderLines");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Vendor.Entities.LocationVendor", b =>
+ {
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("VendorId")
+ .HasColumnType("int");
+
+ b.Property("AssignedAt")
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("LocationId", "VendorId");
+
+ b.HasIndex("VendorId");
+
+ b.ToTable("LocationVendors");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Vendor.Entities.Vendor", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CompanyId")
+ .HasColumnType("int");
+
+ b.Property("ContactName")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Email")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("IsActive")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LogoUrl")
+ .HasMaxLength(512)
+ .HasColumnType("varchar(512)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("Notes")
+ .HasMaxLength(500)
+ .HasColumnType("varchar(500)");
+
+ b.Property("Phone")
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Website")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CompanyId");
+
+ b.ToTable("Vendors");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.DTOs.InventoryItemDTO", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Category")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CurrentQuantity")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("IsLowStock")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LastOrderDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("Notes")
+ .HasColumnType("longtext");
+
+ b.Property("OutOfStockDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Price")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("ReorderLevel")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("SKU")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StorageLocationId")
+ .HasColumnType("int");
+
+ b.Property("StorageLocationName")
+ .HasColumnType("longtext");
+
+ b.Property("Unit")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("UnitId")
+ .HasColumnType("int");
+
+ b.Property("VendorId")
+ .HasColumnType("int");
+
+ b.Property("VendorLogoUrl")
+ .HasColumnType("longtext");
+
+ b.Property("VendorName")
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.HasIndex("StorageLocationId");
+
+ b.ToTable("InventoryItemDTO");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.Ingredient", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int")
+ .HasColumnName("IngredientId");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Category")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("varchar(100)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)");
+
+ b.Property("Notes")
+ .HasColumnType("longtext");
+
+ b.Property("Price")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("ReorderLevel")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("Sku")
+ .HasColumnType("longtext");
+
+ b.Property("StockQuantity")
+ .HasColumnType("decimal(18, 4)");
+
+ b.Property("StorageLocationId")
+ .HasColumnType("int");
+
+ b.Property("UnitId")
+ .HasColumnType("int");
+
+ b.Property("UpdatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("VendorId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("LocationId");
+
+ b.HasIndex("StorageLocationId");
+
+ b.HasIndex("UnitId");
+
+ b.HasIndex("VendorId");
+
+ b.ToTable("Ingredients", (string)null);
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.InventoryTransaction", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("IngredientId")
+ .HasColumnType("int");
+
+ b.Property("Reason")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StockChange")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("UnitId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("IngredientId");
+
+ b.HasIndex("UnitId");
+
+ b.ToTable("InventoryTransactions");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.LocationUnit", b =>
+ {
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("UnitId")
+ .HasColumnType("int");
+
+ b.Property("AssignedAt")
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("LocationId", "UnitId");
+
+ b.HasIndex("UnitId");
+
+ b.ToTable("LocationUnits");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.StorageLocation", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.ToTable("StorageLocations");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.Unit", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Abbreviation")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("ConversionFactor")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.ToTable("Units");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Recipe.Entities.Recipe", b =>
+ {
+ b.Property("RecipeId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("RecipeId"));
+
+ b.Property("Category")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("CostPerYield")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("ImageData")
+ .HasColumnType("longtext");
+
+ b.Property("IsSubRecipe")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LocationId")
+ .HasColumnType("int");
+
+ b.Property("PortionSize")
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("RecipeType")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("RowVersion")
+ .IsConcurrencyToken()
+ .ValueGeneratedOnAddOrUpdate()
+ .HasColumnType("datetime(6)");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("YieldAmount")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("YieldUnit")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.HasKey("RecipeId");
+
+ b.HasIndex("LocationId");
+
+ b.ToTable("Recipes");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Recipe.Entities.RecipeIngredient", b =>
+ {
+ b.Property("RecipeIngredientId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("RecipeIngredientId"));
+
+ b.Property("IngredientId")
+ .HasColumnType("int");
+
+ b.Property("PrepNote")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("Quantity")
+ .HasColumnType("decimal(65,30)");
+
+ b.Property("RecipeId")
+ .HasColumnType("int");
+
+ b.Property("SortOrder")
+ .HasColumnType("int");
+
+ b.Property("SubRecipeId")
+ .HasColumnType("int");
+
+ b.Property("UnitId")
+ .HasColumnType("int");
+
+ b.HasKey("RecipeIngredientId");
+
+ b.HasIndex("IngredientId");
+
+ b.HasIndex("RecipeId");
+
+ b.HasIndex("SubRecipeId");
+
+ b.HasIndex("UnitId");
+
+ b.ToTable("RecipeIngredients");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Recipe.Entities.RecipeStep", b =>
+ {
+ b.Property("StepId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("StepId"));
+
+ b.Property("Duration")
+ .HasMaxLength(64)
+ .HasColumnType("varchar(64)");
+
+ b.Property("Equipment")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("Instructions")
+ .IsRequired()
+ .HasMaxLength(2048)
+ .HasColumnType("varchar(2048)");
+
+ b.Property("RecipeId")
+ .HasColumnType("int");
+
+ b.Property("StepNumber")
+ .HasColumnType("int");
+
+ b.Property("Temperature")
+ .HasMaxLength(64)
+ .HasColumnType("varchar(64)");
+
+ b.HasKey("StepId");
+
+ b.HasIndex("RecipeId");
+
+ b.ToTable("RecipeSteps");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Recipe.Entities.RecipeSubRecipe", b =>
+ {
+ b.Property("ParentRecipeId")
+ .HasColumnType("int");
+
+ b.Property("ChildRecipeId")
+ .HasColumnType("int");
+
+ b.HasKey("ParentRecipeId", "ChildRecipeId");
+
+ b.HasIndex("ChildRecipeId");
+
+ b.ToTable("RecipeSubRecipes");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Feedback", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.User", "User")
+ .WithMany()
+ .HasForeignKey("UserId");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Location", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Company", "Company")
+ .WithMany("Locations")
+ .HasForeignKey("CompanyId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Company");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.ManagerLocation", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany("ManagerLocations")
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommand.Data.Entities.User", "User")
+ .WithMany("ManagerLocations")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Location");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.TaskList", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.User", "CreatedByUser")
+ .WithMany()
+ .HasForeignKey("CreatedByUserId");
+
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany()
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("CreatedByUser");
+
+ b.Navigation("Location");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.TaskListItem", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.TaskList", "TaskList")
+ .WithMany("Items")
+ .HasForeignKey("TaskListId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommand.Data.Entities.TaskTemplate", "TaskTemplate")
+ .WithMany("TaskListItems")
+ .HasForeignKey("TaskTemplateId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("TaskList");
+
+ b.Navigation("TaskTemplate");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.TaskTemplate", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.User", "CreatedByUser")
+ .WithMany()
+ .HasForeignKey("CreatedByUserId");
+
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Ingredient", "Ingredient")
+ .WithMany()
+ .HasForeignKey("IngredientId");
+
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany()
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommandApp.Recipe.Entities.Recipe", "Recipe")
+ .WithMany()
+ .HasForeignKey("RecipeId");
+
+ b.Navigation("CreatedByUser");
+
+ b.Navigation("Ingredient");
+
+ b.Navigation("Location");
+
+ b.Navigation("Recipe");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Tasks", b =>
+ {
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Ingredient", "Ingredient")
+ .WithMany()
+ .HasForeignKey("IngredientId");
+
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany()
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommandApp.Recipe.Entities.Recipe", "Recipe")
+ .WithMany()
+ .HasForeignKey("RecipeId")
+ .OnDelete(DeleteBehavior.SetNull);
+
+ b.HasOne("CulinaryCommand.Data.Entities.User", "User")
+ .WithMany()
+ .HasForeignKey("UserId");
+
+ b.Navigation("Ingredient");
+
+ b.Navigation("Location");
+
+ b.Navigation("Recipe");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.User", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Company", "Company")
+ .WithMany("Employees")
+ .HasForeignKey("CompanyId")
+ .OnDelete(DeleteBehavior.Restrict);
+
+ b.Navigation("Company");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.UserLocation", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany("UserLocations")
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommand.Data.Entities.User", "User")
+ .WithMany("UserLocations")
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Location");
+
+ b.Navigation("User");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.PurchaseOrder.Entities.PurchaseOrder", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany()
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Location");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.PurchaseOrder.Entities.PurchaseOrderLine", b =>
+ {
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Ingredient", "Ingredient")
+ .WithMany()
+ .HasForeignKey("IngredientId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommand.PurchaseOrder.Entities.PurchaseOrder", "PurchaseOrder")
+ .WithMany("Lines")
+ .HasForeignKey("PurchaseOrderId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Unit", "Unit")
+ .WithMany()
+ .HasForeignKey("UnitId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Ingredient");
+
+ b.Navigation("PurchaseOrder");
+
+ b.Navigation("Unit");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Vendor.Entities.LocationVendor", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany("LocationVendors")
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommand.Vendor.Entities.Vendor", "Vendor")
+ .WithMany("LocationVendors")
+ .HasForeignKey("VendorId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Location");
+
+ b.Navigation("Vendor");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Vendor.Entities.Vendor", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Company", "Company")
+ .WithMany("Vendors")
+ .HasForeignKey("CompanyId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Company");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.DTOs.InventoryItemDTO", b =>
+ {
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.StorageLocation", null)
+ .WithMany("InventoryItems")
+ .HasForeignKey("StorageLocationId");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.Ingredient", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany()
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.StorageLocation", "StorageLocation")
+ .WithMany()
+ .HasForeignKey("StorageLocationId");
+
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Unit", "Unit")
+ .WithMany("Ingredients")
+ .HasForeignKey("UnitId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommand.Vendor.Entities.Vendor", "Vendor")
+ .WithMany()
+ .HasForeignKey("VendorId")
+ .OnDelete(DeleteBehavior.SetNull);
+
+ b.Navigation("Location");
+
+ b.Navigation("StorageLocation");
+
+ b.Navigation("Unit");
+
+ b.Navigation("Vendor");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.InventoryTransaction", b =>
+ {
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Ingredient", "Ingredient")
+ .WithMany()
+ .HasForeignKey("IngredientId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Unit", "Unit")
+ .WithMany("InventoryTransaction")
+ .HasForeignKey("UnitId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Ingredient");
+
+ b.Navigation("Unit");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.LocationUnit", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany("LocationUnits")
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Unit", "Unit")
+ .WithMany("LocationUnits")
+ .HasForeignKey("UnitId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Location");
+
+ b.Navigation("Unit");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Recipe.Entities.Recipe", b =>
+ {
+ b.HasOne("CulinaryCommand.Data.Entities.Location", "Location")
+ .WithMany("Recipes")
+ .HasForeignKey("LocationId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Location");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Recipe.Entities.RecipeIngredient", b =>
+ {
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Ingredient", "Ingredient")
+ .WithMany()
+ .HasForeignKey("IngredientId")
+ .OnDelete(DeleteBehavior.Restrict);
+
+ b.HasOne("CulinaryCommandApp.Recipe.Entities.Recipe", "Recipe")
+ .WithMany("RecipeIngredients")
+ .HasForeignKey("RecipeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommandApp.Recipe.Entities.Recipe", "SubRecipe")
+ .WithMany()
+ .HasForeignKey("SubRecipeId")
+ .OnDelete(DeleteBehavior.Restrict);
+
+ b.HasOne("CulinaryCommandApp.Inventory.Entities.Unit", "Unit")
+ .WithMany()
+ .HasForeignKey("UnitId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Ingredient");
+
+ b.Navigation("Recipe");
+
+ b.Navigation("SubRecipe");
+
+ b.Navigation("Unit");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Recipe.Entities.RecipeStep", b =>
+ {
+ b.HasOne("CulinaryCommandApp.Recipe.Entities.Recipe", "Recipe")
+ .WithMany("Steps")
+ .HasForeignKey("RecipeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Recipe");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Recipe.Entities.RecipeSubRecipe", b =>
+ {
+ b.HasOne("CulinaryCommandApp.Recipe.Entities.Recipe", "ChildRecipe")
+ .WithMany("UsedInRecipes")
+ .HasForeignKey("ChildRecipeId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("CulinaryCommandApp.Recipe.Entities.Recipe", "ParentRecipe")
+ .WithMany("SubRecipeUsages")
+ .HasForeignKey("ParentRecipeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("ChildRecipe");
+
+ b.Navigation("ParentRecipe");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Company", b =>
+ {
+ b.Navigation("Employees");
+
+ b.Navigation("Locations");
+
+ b.Navigation("Vendors");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Location", b =>
+ {
+ b.Navigation("LocationUnits");
+
+ b.Navigation("LocationVendors");
+
+ b.Navigation("ManagerLocations");
+
+ b.Navigation("Recipes");
+
+ b.Navigation("UserLocations");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.TaskList", b =>
+ {
+ b.Navigation("Items");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.TaskTemplate", b =>
+ {
+ b.Navigation("TaskListItems");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.User", b =>
+ {
+ b.Navigation("ManagerLocations");
+
+ b.Navigation("UserLocations");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.PurchaseOrder.Entities.PurchaseOrder", b =>
+ {
+ b.Navigation("Lines");
+ });
+
+ modelBuilder.Entity("CulinaryCommand.Vendor.Entities.Vendor", b =>
+ {
+ b.Navigation("LocationVendors");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.StorageLocation", b =>
+ {
+ b.Navigation("InventoryItems");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Inventory.Entities.Unit", b =>
+ {
+ b.Navigation("Ingredients");
+
+ b.Navigation("InventoryTransaction");
+
+ b.Navigation("LocationUnits");
+ });
+
+ modelBuilder.Entity("CulinaryCommandApp.Recipe.Entities.Recipe", b =>
+ {
+ b.Navigation("RecipeIngredients");
+
+ b.Navigation("Steps");
+
+ b.Navigation("SubRecipeUsages");
+
+ b.Navigation("UsedInRecipes");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/CulinaryCommandApp/Migrations/20260417214654_RemoveRecipeAllergens.cs b/CulinaryCommandApp/Migrations/20260417214654_RemoveRecipeAllergens.cs
new file mode 100644
index 0000000..d1ba8d9
--- /dev/null
+++ b/CulinaryCommandApp/Migrations/20260417214654_RemoveRecipeAllergens.cs
@@ -0,0 +1,158 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace CulinaryCommand.Migrations
+{
+ ///
+ public partial class RemoveRecipeAllergens : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "Allergens",
+ table: "Recipes");
+
+ migrationBuilder.AlterColumn(
+ name: "IsActive",
+ table: "Vendors",
+ type: "tinyint(1)",
+ nullable: false,
+ oldClrType: typeof(ulong),
+ oldType: "bit(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsActive",
+ table: "Users",
+ type: "tinyint(1)",
+ nullable: false,
+ oldClrType: typeof(ulong),
+ oldType: "bit(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "EmailConfirmed",
+ table: "Users",
+ type: "tinyint(1)",
+ nullable: false,
+ oldClrType: typeof(ulong),
+ oldType: "bit(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsActive",
+ table: "TaskTemplates",
+ type: "tinyint(1)",
+ nullable: false,
+ oldClrType: typeof(ulong),
+ oldType: "bit(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsActive",
+ table: "TaskLists",
+ type: "tinyint(1)",
+ nullable: false,
+ oldClrType: typeof(ulong),
+ oldType: "bit(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsSubRecipe",
+ table: "Recipes",
+ type: "tinyint(1)",
+ nullable: false,
+ oldClrType: typeof(ulong),
+ oldType: "bit(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsLocationLocked",
+ table: "PurchaseOrders",
+ type: "tinyint(1)",
+ nullable: false,
+ oldClrType: typeof(ulong),
+ oldType: "bit(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsLowStock",
+ table: "InventoryItemDTO",
+ type: "tinyint(1)",
+ nullable: false,
+ oldClrType: typeof(ulong),
+ oldType: "bit(1)");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AlterColumn(
+ name: "IsActive",
+ table: "Vendors",
+ type: "bit(1)",
+ nullable: false,
+ oldClrType: typeof(bool),
+ oldType: "tinyint(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsActive",
+ table: "Users",
+ type: "bit(1)",
+ nullable: false,
+ oldClrType: typeof(bool),
+ oldType: "tinyint(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "EmailConfirmed",
+ table: "Users",
+ type: "bit(1)",
+ nullable: false,
+ oldClrType: typeof(bool),
+ oldType: "tinyint(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsActive",
+ table: "TaskTemplates",
+ type: "bit(1)",
+ nullable: false,
+ oldClrType: typeof(bool),
+ oldType: "tinyint(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsActive",
+ table: "TaskLists",
+ type: "bit(1)",
+ nullable: false,
+ oldClrType: typeof(bool),
+ oldType: "tinyint(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsSubRecipe",
+ table: "Recipes",
+ type: "bit(1)",
+ nullable: false,
+ oldClrType: typeof(bool),
+ oldType: "tinyint(1)");
+
+ migrationBuilder.AddColumn(
+ name: "Allergens",
+ table: "Recipes",
+ type: "varchar(256)",
+ maxLength: 256,
+ nullable: true)
+ .Annotation("MySql:CharSet", "utf8mb4");
+
+ migrationBuilder.AlterColumn(
+ name: "IsLocationLocked",
+ table: "PurchaseOrders",
+ type: "bit(1)",
+ nullable: false,
+ oldClrType: typeof(bool),
+ oldType: "tinyint(1)");
+
+ migrationBuilder.AlterColumn(
+ name: "IsLowStock",
+ table: "InventoryItemDTO",
+ type: "bit(1)",
+ nullable: false,
+ oldClrType: typeof(bool),
+ oldType: "tinyint(1)");
+ }
+ }
+}
diff --git a/CulinaryCommandApp/Migrations/20260417215559_RemoveRecipePortionSize.Designer.cs b/CulinaryCommandApp/Migrations/20260417215559_RemoveRecipePortionSize.Designer.cs
new file mode 100644
index 0000000..068444d
--- /dev/null
+++ b/CulinaryCommandApp/Migrations/20260417215559_RemoveRecipePortionSize.Designer.cs
@@ -0,0 +1,1510 @@
+//
+using System;
+using CulinaryCommand.Data;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace CulinaryCommand.Migrations
+{
+ [DbContext(typeof(AppDbContext))]
+ [Migration("20260417215559_RemoveRecipePortionSize")]
+ partial class RemoveRecipePortionSize
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "9.0.0")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
+
+ modelBuilder.Entity("CulinaryCommand.Data.Entities.Company", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id"));
+
+ b.Property("Address")
+ .HasMaxLength(256)
+ .HasColumnType("varchar(256)");
+
+ b.Property("City")
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("CompanyCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("varchar(50)");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Description")
+ .HasColumnType("longtext");
+
+ b.Property("Email")
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property