feat: Implement a customizable dashboard with user preferences and a dynamic widget system.

This commit is contained in:
2025-12-04 02:58:33 +01:00
parent e70b30cab8
commit 44c0406fd2
23 changed files with 5682 additions and 178 deletions

View File

@@ -2541,6 +2541,42 @@ namespace Zentral.Infrastructure.Migrations
b.ToTable("TipiRisorsa");
});
modelBuilder.Entity("Zentral.Domain.Entities.UserDashboardPreference", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTime?>("CreatedAt")
.HasColumnType("TEXT");
b.Property<string>("CreatedBy")
.HasColumnType("TEXT");
b.Property<string>("CustomFieldsJson")
.HasColumnType("TEXT");
b.Property<string>("LayoutJson")
.IsRequired()
.HasColumnType("TEXT");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("TEXT");
b.Property<string>("UpdatedBy")
.HasColumnType("TEXT");
b.Property<int>("UtenteId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("UtenteId")
.IsUnique();
b.ToTable("UserDashboardPreferences");
});
modelBuilder.Entity("Zentral.Domain.Entities.Utente", b =>
{
b.Property<int>("Id")
@@ -4213,6 +4249,17 @@ namespace Zentral.Infrastructure.Migrations
b.Navigation("TipoPasto");
});
modelBuilder.Entity("Zentral.Domain.Entities.UserDashboardPreference", b =>
{
b.HasOne("Zentral.Domain.Entities.Utente", "Utente")
.WithOne()
.HasForeignKey("Zentral.Domain.Entities.UserDashboardPreference", "UtenteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Utente");
});
modelBuilder.Entity("Zentral.Domain.Entities.Warehouse.ArticleBarcode", b =>
{
b.HasOne("Zentral.Domain.Entities.Warehouse.WarehouseArticle", "Article")