using Demo.Data.LocalData.Entity; // Локальные сущности
using Demo.Data.RemoteData.RemoteDataBase.DAO; // DAO классы
using Microsoft.EntityFrameworkCore;

public class RemoteDatabaseContext : DbContext
{
    public DbSet<User> User { get; set; }
    public DbSet<GroupDAO> Group { get; set; } // DbSet для GroupDao
    public DbSet<PresenceDAO> Presence { get; set; } // DbSet для PresenceDao

    public RemoteDatabaseContext(DbContextOptions<RemoteDatabaseContext> options) : base(options) { }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            optionsBuilder.UseNpgsql("Host=45.67.56.214;Port=5421;Database=;Username=user5;Password=EtEJqhsf");
        }
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<GroupDAO>().HasKey(group => group.Id);
        modelBuilder.Entity<GroupDAO>().Property(group => group.Id).ValueGeneratedOnAdd();

        modelBuilder.Entity<UserDAO>().HasKey(user => user.UserId);
        modelBuilder.Entity<UserDAO>().Property(user => user.UserId).ValueGeneratedOnAdd();

        modelBuilder.Entity<PresenceDAO>().HasKey(presence => presence.PresenceId); // Устанавливаем первичный ключ

        // Дополнительные настройки для User
        modelBuilder.Entity<User>(entity =>
        {
            entity.ToTable("User"); // Имя таблицы
            entity.HasKey(e => e.Id); // Указываем первичный ключ
            entity.Property(e => e.FIO)
                .IsRequired()
                .HasColumnName("FIO");
            entity.Property(e => e.GroupID)
                .IsRequired()
                .HasColumnName("GroupID");
        });
    }
}
