This commit is contained in:
2026-06-04 09:44:23 +03:00
parent 4ddab34ad1
commit 033b4fc247
29 changed files with 3661 additions and 59 deletions
+83 -21
View File
@@ -6,6 +6,8 @@ using Data.Models.Items;
using Microsoft.EntityFrameworkCore;
using Data.Models.Users;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using MyOffice.Data.Models.Verifications;
using MyOffice.Data.Models.Notifications;
public enum AppDbContextProvidersEnum
{
@@ -46,6 +48,9 @@ public class AppDbContext : DbContext
public DbSet<Item> Items { get; set; } = null!;
public DbSet<Motion> Motions { get; set; } = null!;
public DbSet<VerificationCode> Verifications { get; set; } = null!;
public DbSet<EmailTemplate> EmailTemplates { get; set; } = null!;
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
var noCaseCollation = _noCaseCollation[_provider];
@@ -82,10 +87,29 @@ public class AppDbContext : DbContext
CurrencyCreating(modelBuilder);
AccountCreating(modelBuilder);
MotionsCreating(modelBuilder);
VerificationsCreating(modelBuilder);
EmailTemplateCreating(modelBuilder);
base.OnModelCreating(modelBuilder);
}
private void VerificationsCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<VerificationCode>()
.HasKey(x => x.Id);
modelBuilder.Entity<VerificationCode>()
.HasOne(x => x.User)
.WithMany()
.HasForeignKey(x => x.UserId);
}
private void EmailTemplateCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<EmailTemplate>()
.HasKey(x => x.Id);
}
private void UserCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
@@ -128,24 +152,11 @@ public class AppDbContext : DbContext
private void AccountCreating(ModelBuilder modelBuilder)
{
#region Account
modelBuilder.Entity<Account>()
.HasKey(x => x.Id);
modelBuilder.Entity<AccountAccess>()
.HasKey(x => x.Id);
modelBuilder.Entity<AccountAccessInvite>()
.HasKey(x => x.Id);
modelBuilder.Entity<Motion>()
.HasKey(x => x.Id);
modelBuilder.Entity<AccountCategory>()
.HasKey(x => x.Id);
modelBuilder.Entity<AccountAccountCategory>()
.HasKey(x => x.Id);
modelBuilder.Entity<Account>()
.HasOne(x => x.CurrencyGlobal)
.WithMany(x => x.Accounts)
@@ -156,6 +167,13 @@ public class AppDbContext : DbContext
.WithMany(x => x.Accounts)
.HasForeignKey(x => x.OwnerId);
#endregion Account
#region AccountAccess
modelBuilder.Entity<AccountAccess>()
.HasKey(x => x.Id);
modelBuilder.Entity<AccountAccess>()
.HasOne(x => x.Account)
.WithMany(x => x.AccessRights)
@@ -171,6 +189,26 @@ public class AppDbContext : DbContext
.WithMany(x => x.AccountAccessOwners)
.HasForeignKey(x => x.OwnerId);
modelBuilder
.Entity<AccountAccess>()
.Property(d => d.Type)
.HasConversion(new EnumToStringConverter<AccountAccessTypeEnum>());
modelBuilder.Entity<AccountAccess>()
.HasIndex(p => new { p.AccountId, p.UserId })
.IsUnique();
modelBuilder.Entity<AccountAccess>()
.HasIndex(p => new { p.AccountId, p.OwnerId })
.IsUnique();
#endregion AccountAccess
#region AccountAccessInvite
modelBuilder.Entity<AccountAccessInvite>()
.HasKey(x => x.Id);
modelBuilder.Entity<AccountAccessInvite>()
.HasOne(x => x.User)
.WithMany(x => x.AccountAccessInvites)
@@ -180,16 +218,37 @@ public class AppDbContext : DbContext
.HasOne(x => x.Account)
.WithMany(x => x.Invites)
.HasForeignKey(x => x.AccountId);
#endregion AccountAccessInvite
#region Motion
modelBuilder.Entity<Motion>()
.HasKey(x => x.Id);
modelBuilder.Entity<Motion>()
.HasOne(x => x.Account)
.WithMany(x => x.Motions)
.HasForeignKey(x => x.AccountId);
#endregion Motion
#region AccountCategory
modelBuilder.Entity<AccountCategory>()
.HasKey(x => x.Id);
modelBuilder.Entity<AccountCategory>()
.HasOne(x => x.User)
.WithMany(x => x.AccountCategories)
.HasForeignKey(x => x.UserId);
#endregion AccountCategory
#region AccountAccountCategory
modelBuilder.Entity<AccountAccountCategory>()
.HasKey(x => x.Id);
modelBuilder.Entity<AccountAccountCategory>()
.HasOne(x => x.Account)
@@ -201,13 +260,16 @@ public class AppDbContext : DbContext
.WithMany(x => x.Accounts)
.HasForeignKey(x => x.CategoryId);
modelBuilder
.Entity<AccountAccess>()
.Property(d => d.Type)
.HasConversion(new EnumToStringConverter<AccountAccessTypeEnum>());
modelBuilder.Entity<AccountAccountCategory>()
.HasIndex(p => new { p.AccountId, p.CategoryId })
.IsUnique();
modelBuilder.Entity<AccountAccess>()
.HasIndex(p => new { p.AccountId, p.UserId}).IsUnique();
modelBuilder.Entity<AccountAccountCategory>()
.HasOne(x => x.Category)
.WithMany(x => x.Accounts)
.HasForeignKey(x => x.CategoryId);
#endregion AccountAccountCategory
}
private void MotionsCreating(ModelBuilder modelBuilder)