From 2f9661fafc6e78945bfbb50dac06f0a6abd82293 Mon Sep 17 00:00:00 2001 From: DeepnaPooja Date: Wed, 16 Sep 2026 16:25:46 +0530 Subject: [PATCH] Add invoice context mapping --- Distribution/Data/AppDBContext.cs | 52 ++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/Distribution/Data/AppDBContext.cs b/Distribution/Data/AppDBContext.cs index 16cd3f6..227fed6 100644 --- a/Distribution/Data/AppDBContext.cs +++ b/Distribution/Data/AppDBContext.cs @@ -20,6 +20,7 @@ public class AppDBContext(DbContextOptions options) : DbContext(op public DbSet Sales { get; set; } public DbSet Orders { get; set; } public DbSet OrderItems { get; set; } + public DbSet Invoices { get; set; } public DbSet DeliveryRuns { get; set; } public DbSet Users { get; set; } public DbSet Roles { get; set; } @@ -64,8 +65,11 @@ public class AppDBContext(DbContextOptions options) : DbContext(op protected override void OnModelCreating(ModelBuilder modelBuilder) { + // OrderItem uses its inherited Template.Id as PK (no composite key on + // {FK_OrderId, FK_ItemId}) so that editing a PO's items can soft-delete the current + // row and insert a fresh one for the same item — versioning per order_invoice_lifecycle.md. modelBuilder.Entity() - .HasKey(oi => new { oi.FK_OrderId, oi.FK_ItemId }); + .HasIndex(oi => oi.FK_OrderId); modelBuilder.Entity() .HasKey(rp => new { rp.FK_RoleId, rp.FK_PermissionId }); @@ -143,8 +147,54 @@ public class AppDBContext(DbContextOptions options) : DbContext(op .HasOne(o => o.Sale) .WithMany() .HasForeignKey(o => o.FK_SaleId) + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(false); + + modelBuilder.Entity() + .HasOne(o => o.CreatedByUser) + .WithMany() + .HasForeignKey(o => o.CreatedByUserId) .OnDelete(DeleteBehavior.Restrict); + modelBuilder.Entity() + .HasOne(o => o.ConfirmedByUser) + .WithMany() + .HasForeignKey(o => o.ConfirmedByUserId) + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(false); + + // Order.InvoiceId is a plain column with no DB-level FK constraint — deliberately + // unmapped as a relationship, per order_invoice_lifecycle.md. + modelBuilder.Entity() + .Property(o => o.InvoiceId) + .HasColumnName("InvoiceId"); + + modelBuilder.Entity() + .HasOne(i => i.Order) + .WithMany() + .HasForeignKey(i => i.FK_OrderId) + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(i => i.CreatedByUser) + .WithMany() + .HasForeignKey(i => i.CreatedByUserId) + .OnDelete(DeleteBehavior.Restrict); + + modelBuilder.Entity() + .HasOne(i => i.PrintedByUser) + .WithMany() + .HasForeignKey(i => i.PrintedByUserId) + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(false); + + modelBuilder.Entity() + .HasOne(i => i.FinalizedByUser) + .WithMany() + .HasForeignKey(i => i.FinalizedByUserId) + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(false); + modelBuilder.Entity() .HasOne(r => r.Scheme) .WithMany(s => s.Redemptions)