using Microsoft.EntityFrameworkCore; using MTWorkHR.Core.Entities; using MTWorkHR.Core.Entities.Base; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MTWorkHR.Infrastructure.Data { public class HRDataContext : DbContext { public HRDataContext(DbContextOptions options) : base(options) { } public DbSet Companies { get; set; } public DbSet Projects { get; set; } // public DbSet AttachmentTypes { get; set; } public DbSet UserTaskStatuses { get; set; } public DbSet UserTaskAttachments { get; set; } public DbSet UserTasks { get; set; } public DbSet UserTaskHistories { get; set; } //------------------------Logs------------------------ public DbSet UserLogs { get; set; } public DbSet AuthLogs { get; set; } public DbSet FileLogs { get; set; } public DbSet RoleLogs { get; set; } public DbSet SettingLogs { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); SetGlobalFilters(modelBuilder); modelBuilder.ApplyConfigurationsFromAssembly(typeof(HRDataContext).Assembly); } public override Task SaveChangesAsync(CancellationToken cancellationToken = default) { foreach (var entry in base.ChangeTracker.Entries().Where(q=> q.State == EntityState.Added || q.State == EntityState.Modified)) { entry.Entity.UpdateDate = DateTime.Now; if(entry.State == EntityState.Added) { entry.Entity.CreateDate = DateTime.Now; } } return base.SaveChangesAsync(cancellationToken); } private void SetGlobalFilters(ModelBuilder builder) { builder.SetQueryFilterOnAllEntities(p => !p.IsDeleted); } } }