using Microsoft.EntityFrameworkCore; using UnivateProperties_API.Model.Communication; using UnivateProperties_API.Model.Users; using UnivateProperties_API.Model.Properties; using UnivateProperties_API.Model.Region; using UnivateProperties_API.Model.Timeshare; using System.Linq; using UnivateProperties_API.Model; using UnivateProperties_API.Model.Banks; using UnivateProperties_API.Model.Misc; using UnivateProperties_API.Model.ProcessFlow; using UnivateProperties_API.Model.Logging; namespace UnivateProperties_API.Context { public class DataContext : DbContext { public DataContext(DbContextOptions options) : base(options) { } #region User public virtual DbSet Agencies { get; set; } public virtual DbSet Agents { get; set; } public virtual DbSet Users { get; set; } public virtual DbSet Individuals { get; set; } public virtual DbSet
Addresses { get; set; } #endregion User #region Communication public virtual DbSet Emails { get; set; } public virtual DbSet Accounts { get; set; } public virtual DbSet Hosts { get; set; } #endregion Communication #region Property public DbSet Properties { get; set; } public DbSet PropertyImages { get; set; } public DbSet PropertyTypes { get; set; } public DbSet PropertyUserFields { get; set; } public DbSet UserDefinedFields { get; set; } public DbSet UserDefinedGroups { get; set; } #endregion #region Region public DbSet Provinces { get; set; } public DbSet Cities { get; set; } public DbSet Suburbs { get; set; } #endregion #region Timeshare public DbSet Weeks { get; set; } public DbSet Status { get; set; } public DbSet UnitConfigurations { get; set; } public DbSet UnitConfigurationTypes { get; set; } public DbSet Seasons { get; set; } public DbSet Banks { get; set; } public DbSet BankAccounts { get; set; } #endregion Timeshare #region ProcessFlow public DbSet ProcessFlows { get; set; } public DbSet BidItems { get; set; } #endregion #region Logs public DbSet SearchLogs { get; set; } #endregion #region Misc public DbSet Location { get; set; } #endregion public override int SaveChanges() { foreach (var item in ChangeTracker .Entries() .Where(x => x.State == EntityState.Modified || x.State == EntityState.Added) .Select(x => x.Entity) .ToList()) { if (item is BaseEntity) { (item as BaseEntity).UpdateModified(string.Empty); } } UpdateSoftDeleteStatuses(); return base.SaveChanges(); } private void UpdateSoftDeleteStatuses() { foreach (var entry in ChangeTracker.Entries()) { switch (entry.State) { case EntityState.Added: entry.CurrentValues["IsDeleted"] = false; break; case EntityState.Deleted: entry.State = EntityState.Modified; entry.CurrentValues["IsDeleted"] = true; break; } } } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().ToTable("Hosts"); modelBuilder.Entity() .HasIndex(u => u.Code) .IsUnique(); modelBuilder.Entity(b => { b.HasKey(e => e.Id); b.Property(e => e.Id).ValueGeneratedOnAdd(); }); modelBuilder.Entity() .HasIndex(i => new { i.Telephone, i.CellNumber, i.Email }) .IsUnique(true); modelBuilder.Entity(b => { b.HasKey(e => e.Id); b.Property(e => e.Id).ValueGeneratedOnAdd(); }); modelBuilder.Entity(b => { b.HasKey(e => e.Id); b.Property(e => e.Id).ValueGeneratedOnAdd(); }); modelBuilder.Entity(b => { b.HasKey(e => e.Id); b.Property(e => e.Id).ValueGeneratedOnAdd(); }); modelBuilder.Entity() .HasIndex(u => u.Username) .IsUnique(true); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity
().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); modelBuilder.Entity().HasQueryFilter(m => EF.Property(m, "IsDeleted") == false); } } }