refactor(EGDbContext): split to regions

This commit is contained in:
tekh 2025-09-08 13:03:12 +02:00
parent beada59593
commit 442b7f7451

View File

@ -90,6 +90,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
{ {
modelBuilder.Entity<Config>().HasNoKey(); modelBuilder.Entity<Config>().HasNoKey();
#region EnvelopeReceiver
modelBuilder.Entity<EnvelopeReceiver>() modelBuilder.Entity<EnvelopeReceiver>()
.HasKey(er => new { er.EnvelopeId, er.ReceiverId }); .HasKey(er => new { er.EnvelopeId, er.ReceiverId });
@ -102,25 +103,13 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.HasOne(er => er.Receiver) .HasOne(er => er.Receiver)
.WithMany(r => r.EnvelopeReceivers) .WithMany(r => r.EnvelopeReceivers)
.HasForeignKey(er => er.ReceiverId); .HasForeignKey(er => er.ReceiverId);
#endregion EnvelopeReceiver
modelBuilder.Entity<EnvelopeDocument>(); #region Envelope
modelBuilder.Entity<DocumentReceiverElement>();
modelBuilder.Entity<DocumentStatus>();
modelBuilder.Entity<EmailTemplate>();
modelBuilder.Entity<Envelope>() modelBuilder.Entity<Envelope>()
.HasIndex(e => e.Uuid) .HasIndex(e => e.Uuid)
.IsUnique(); .IsUnique();
modelBuilder.Entity<EnvelopeHistory>();
modelBuilder.Entity<EnvelopeType>();
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.Signature)
.IsUnique();
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.EmailAddress)
.IsUnique();
modelBuilder.Entity<EmailOut>();
// Configure the one-to-many relationship of Envelope
modelBuilder.Entity<Envelope>() modelBuilder.Entity<Envelope>()
.HasMany(e => e.Documents) .HasMany(e => e.Documents)
.WithOne() .WithOne()
@ -130,16 +119,31 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.HasMany(e => e.History) .HasMany(e => e.History)
.WithOne() .WithOne()
.HasForeignKey(eh => eh.EnvelopeId); .HasForeignKey(eh => eh.EnvelopeId);
#endregion Envelope
#region Receiver
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.Signature)
.IsUnique();
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.EmailAddress)
.IsUnique();
#endregion Receiver
#region EnvelopeDocument
modelBuilder.Entity<EnvelopeDocument>() modelBuilder.Entity<EnvelopeDocument>()
.HasMany(ed => ed.Elements) .HasMany(ed => ed.Elements)
.WithOne(e => e.Document) .WithOne(e => e.Document)
.HasForeignKey(e => e.DocumentId); .HasForeignKey(e => e.DocumentId);
#endregion EnvelopeDocument
#region DocumentReceiverElement
modelBuilder.Entity<DocumentReceiverElement>() modelBuilder.Entity<DocumentReceiverElement>()
.HasOne(dre => dre.Document) .HasOne(dre => dre.Document)
.WithMany(ed => ed.Elements) .WithMany(ed => ed.Elements)
.HasForeignKey(dre => dre.DocumentId); .HasForeignKey(dre => dre.DocumentId);
#endregion DocumentReceiverElement
if (!IsMigration) if (!IsMigration)
{ {
@ -156,12 +160,15 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.HasPrincipalKey(e => e.Email); .HasPrincipalKey(e => e.Email);
} }
#region EnvelopeReceiverReadOnly
modelBuilder.Entity<EnvelopeReceiverReadOnly>() modelBuilder.Entity<EnvelopeReceiverReadOnly>()
.HasOne(erro => erro.Receiver) .HasOne(erro => erro.Receiver)
.WithMany() .WithMany()
.HasForeignKey(erro => erro.AddedWho) .HasForeignKey(erro => erro.AddedWho)
.HasPrincipalKey(r => r.EmailAddress); .HasPrincipalKey(r => r.EmailAddress);
#endregion EnvelopeReceiverReadOnly
#region DocumentStatus
modelBuilder.Entity<DocumentStatus>() modelBuilder.Entity<DocumentStatus>()
.HasOne(ds => ds.Envelope) .HasOne(ds => ds.Envelope)
.WithMany() .WithMany()
@ -176,7 +183,9 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.HasOne(ds => ds.Receiver) .HasOne(ds => ds.Receiver)
.WithMany() .WithMany()
.HasForeignKey(ds => ds.ReceiverId); .HasForeignKey(ds => ds.ReceiverId);
#endregion DocumentStatus
#region Trigger
// Configure entities to handle database triggers // Configure entities to handle database triggers
void AddTrigger<T>() where T : class => _triggers void AddTrigger<T>() where T : class => _triggers
.Where(t => t.Key == typeof(T).Name) .Where(t => t.Key == typeof(T).Name)
@ -200,6 +209,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
AddTrigger<EnvelopeType>(); AddTrigger<EnvelopeType>();
AddTrigger<Receiver>(); AddTrigger<Receiver>();
AddTrigger<EmailOut>(); AddTrigger<EmailOut>();
#endregion Trigger
//configure model builder for user manager tables //configure model builder for user manager tables
modelBuilder.ConfigureUserManager(); modelBuilder.ConfigureUserManager();