70 lines
3.2 KiB
C#
70 lines
3.2 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using NoticeBoard.Models;
|
|
|
|
namespace NoticeBoard.Data;
|
|
|
|
public class AppDbContext : DbContext
|
|
{
|
|
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
|
|
|
|
public DbSet<Slide> Slides => Set<Slide>();
|
|
public DbSet<Device> Devices => Set<Device>();
|
|
public DbSet<DeviceSlide> DeviceSlides => Set<DeviceSlide>();
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
modelBuilder.Entity<Device>()
|
|
.HasIndex(d => d.Slug)
|
|
.IsUnique();
|
|
|
|
modelBuilder.Entity<DeviceSlide>()
|
|
.HasOne(ds => ds.Device)
|
|
.WithMany(d => d.DeviceSlides)
|
|
.HasForeignKey(ds => ds.DeviceId)
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
modelBuilder.Entity<DeviceSlide>()
|
|
.HasOne(ds => ds.Slide)
|
|
.WithMany(s => s.DeviceSlides)
|
|
.HasForeignKey(ds => ds.SlideId)
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
|
|
modelBuilder.Entity<DeviceSlide>()
|
|
.HasIndex(ds => new { ds.DeviceId, ds.DisplayOrder });
|
|
|
|
// Seed demo data
|
|
modelBuilder.Entity<Device>().HasData(
|
|
new Device { Id = 1, Name = "Front of House", Slug = "frontofhouse", ResolutionWidth = 1920, ResolutionHeight = 1080 },
|
|
new Device { Id = 2, Name = "Staff Room", Slug = "staffroom", ResolutionWidth = 1920, ResolutionHeight = 1080 }
|
|
);
|
|
|
|
modelBuilder.Entity<Slide>().HasData(
|
|
new Slide
|
|
{
|
|
Id = 1,
|
|
Name = "Welcome Screen",
|
|
SlideType = SlideType.Content,
|
|
Content = "<div style=\"display:flex;align-items:center;justify-content:center;height:100%;text-align:center;\"><div><h1 style=\"font-size:4em;margin-bottom:0.3em;\">Welcome</h1><p style=\"font-size:1.8em;opacity:0.8;\">Notice Board</p></div></div>",
|
|
BackgroundColor = "#1a1a2e"
|
|
},
|
|
new Slide
|
|
{
|
|
Id = 2,
|
|
Name = "Welcome to Country",
|
|
SlideType = SlideType.Content,
|
|
Content = "<div style=\"display:flex;align-items:center;justify-content:center;height:100%;text-align:center;padding:2em;\"><div><h1 style=\"font-size:2.5em;margin-bottom:0.5em;\">Acknowledgement of Country</h1><p style=\"font-size:1.3em;line-height:1.8;max-width:800px;\">We acknowledge the Traditional Owners of the land on which we meet and pay our respects to Elders past, present and emerging.</p></div></div>",
|
|
BackgroundColor = "#2d1b00"
|
|
}
|
|
);
|
|
|
|
modelBuilder.Entity<DeviceSlide>().HasData(
|
|
new DeviceSlide { Id = 1, DeviceId = 1, SlideId = 1, DisplayOrder = 1, DurationSeconds = 30, Enabled = true },
|
|
new DeviceSlide { Id = 2, DeviceId = 1, SlideId = 2, DisplayOrder = 2, DurationSeconds = 60, Enabled = true },
|
|
new DeviceSlide { Id = 3, DeviceId = 2, SlideId = 1, DisplayOrder = 1, DurationSeconds = 30, Enabled = true },
|
|
new DeviceSlide { Id = 4, DeviceId = 2, SlideId = 2, DisplayOrder = 2, DurationSeconds = 60, Enabled = true }
|
|
);
|
|
}
|
|
}
|