using Manager.DTOs; using ManagerService.Data.SubSection; using ManagerService.DTOs; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Text.Json; using static ManagerService.Data.SubSection.SectionEvent; namespace ManagerService.Data { public class MyInfoMateDbContext : DbContext { public MyInfoMateDbContext(DbContextOptions options) : base(options) { } public DbSet Instances { get; set; } public DbSet Configurations { get; set; } public DbSet
Sections { get; set; } public DbSet Devices { get; set; } public DbSet Resources { get; set; } public DbSet Users { get; set; } public DbSet ApplicationInstances { get; set; } public DbSet AppConfigurationLinks { get; set; } // MAP public DbSet GeoPoints { get; set; } // QUIZ public DbSet QuizQuestions { get; set; } public DbSet GuidedPaths { get; set; } public DbSet GuidedSteps { get; set; } // Events public DbSet ProgrammeBlocks { get; set; } // Agenda public DbSet EventAgendas { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; base.OnModelCreating(modelBuilder); modelBuilder.Entity() .Property(s => s.Title) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity
() .HasDiscriminator("Discriminator") .HasValue
("Base") .HasValue("Agenda") .HasValue("Article") .HasValue("Map") .HasValue("Menu") .HasValue("PDF") .HasValue("Puzzle") .HasValue("Quiz") .HasValue("Slider") .HasValue("Video") .HasValue("Weather") .HasValue("Web"); /*modelBuilder.Entity(entity => { entity.Property(e => e.Geometry).HasColumnType("geometry"); }); modelBuilder.Entity(entity => { entity.Property(e => e.Geometry).HasColumnType("geometry"); });*/ modelBuilder.Entity
() .Property(s => s.Title) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity
() .Property(s => s.Description) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Title) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Description) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Contents) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Schedules) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Prices) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Phone) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Email) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Site) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); // Configurations JSON pour GuidedPath modelBuilder.Entity() .Property(gp => gp.Title) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(gp => gp.Description) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); // Configurations JSON pour GuidedStep modelBuilder.Entity() .Property(gs => gs.Title) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(gs => gs.Description) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(gp => gp.TimerExpiredMessage) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Label) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Description) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize>(v, options)); modelBuilder.Entity() .Property(s => s.Address) .HasColumnType("jsonb") .HasConversion( v => JsonSerializer.Serialize(v, options), v => JsonSerializer.Deserialize(v, options)); } } }