using Microsoft.EntityFrameworkCore; using LogisticsApp.Server.Models; namespace LogisticsApp.Server.Data { public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions options) : base(options) { } public DbSet Orders { get; set; } public DbSet Vehicles { get; set; } public DbSet WaybillEntries { get; set; } public DbSet Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { foreach (var entityType in modelBuilder.Model.GetEntityTypes()) { foreach (var property in entityType.GetProperties()) { if (property.ClrType == typeof(DateTime)) { modelBuilder.Entity(entityType.ClrType) .Property(property.Name) .HasConversion( v => v.Kind == DateTimeKind.Unspecified ? DateTime.SpecifyKind(v, DateTimeKind.Utc) : v.ToUniversalTime(), v => DateTime.SpecifyKind(v, DateTimeKind.Utc)); } else if (property.ClrType == typeof(DateTime?)) { modelBuilder.Entity(entityType.ClrType) .Property(property.Name) .HasConversion( v => !v.HasValue ? v : (v.Value.Kind == DateTimeKind.Unspecified ? DateTime.SpecifyKind(v.Value, DateTimeKind.Utc) : v.Value.ToUniversalTime()), v => v.HasValue ? DateTime.SpecifyKind(v.Value, DateTimeKind.Utc) : v); } } } modelBuilder.Entity() .HasIndex(o => o.Status); modelBuilder.Entity() .HasIndex(o => o.OrderDate); modelBuilder.Entity() .HasIndex(o => o.ClientName); modelBuilder.Entity() .HasIndex(v => v.LicensePlate); modelBuilder.Entity() .HasIndex(w => new { w.VehicleId, w.Date }); modelBuilder.Entity() .HasIndex(u => u.Username) .IsUnique(); base.OnModelCreating(modelBuilder); } } }