feat: introduce training module with new entities, migrations, API, and frontend application, and add article type and validity days.

This commit is contained in:
2025-12-12 18:12:51 +01:00
parent 49abef6f96
commit 4810d49410
32 changed files with 11685 additions and 211 deletions

View File

@@ -174,6 +174,9 @@ namespace Zentral.Infrastructure.Migrations
.IsRequired()
.HasColumnType("TEXT");
b.Property<int?>("GiorniValidita")
.HasColumnType("INTEGER");
b.Property<byte[]>("Immagine")
.HasColumnType("BLOB");
@@ -195,6 +198,9 @@ namespace Zentral.Infrastructure.Migrations
b.Property<decimal?>("QtaStdS")
.HasColumnType("TEXT");
b.Property<int>("Tipo")
.HasColumnType("INTEGER");
b.Property<int?>("TipoMaterialeId")
.HasColumnType("INTEGER");
@@ -372,6 +378,54 @@ namespace Zentral.Infrastructure.Migrations
b.ToTable("Clienti");
});
modelBuilder.Entity("Zentral.Domain.Entities.ClienteContatto", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<int>("ClienteId")
.HasColumnType("INTEGER");
b.Property<string>("Cognome")
.IsRequired()
.HasColumnType("TEXT");
b.Property<DateTime?>("CreatedAt")
.HasColumnType("TEXT");
b.Property<string>("CreatedBy")
.HasColumnType("TEXT");
b.Property<string>("CustomFieldsJson")
.HasColumnType("TEXT");
b.Property<string>("Email")
.HasColumnType("TEXT");
b.Property<string>("Nome")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Ruolo")
.HasColumnType("TEXT");
b.Property<string>("Telefono")
.HasColumnType("TEXT");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("TEXT");
b.Property<string>("UpdatedBy")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("ClienteId");
b.ToTable("ClienteContatti", (string)null);
});
modelBuilder.Entity("Zentral.Domain.Entities.CodiceCategoria", b =>
{
b.Property<int>("Id")
@@ -2595,6 +2649,54 @@ namespace Zentral.Infrastructure.Migrations
b.ToTable("TipiRisorsa");
});
modelBuilder.Entity("Zentral.Domain.Entities.Training.TrainingRecord", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<int>("ArticoloId")
.HasColumnType("INTEGER");
b.Property<string>("AttestatoUrl")
.HasColumnType("TEXT");
b.Property<int>("ClienteContattoId")
.HasColumnType("INTEGER");
b.Property<DateTime?>("CreatedAt")
.HasColumnType("TEXT");
b.Property<string>("CreatedBy")
.HasColumnType("TEXT");
b.Property<string>("CustomFieldsJson")
.HasColumnType("TEXT");
b.Property<DateTime>("DataEsecuzione")
.HasColumnType("TEXT");
b.Property<DateTime?>("DataScadenza")
.HasColumnType("TEXT");
b.Property<string>("Note")
.HasColumnType("TEXT");
b.Property<DateTime?>("UpdatedAt")
.HasColumnType("TEXT");
b.Property<string>("UpdatedBy")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("ArticoloId");
b.HasIndex("ClienteContattoId");
b.ToTable("TrainingRecords", (string)null);
});
modelBuilder.Entity("Zentral.Domain.Entities.UserDashboardPreference", b =>
{
b.Property<int>("Id")
@@ -3924,6 +4026,17 @@ namespace Zentral.Infrastructure.Migrations
b.Navigation("TipoMateriale");
});
modelBuilder.Entity("Zentral.Domain.Entities.ClienteContatto", b =>
{
b.HasOne("Zentral.Domain.Entities.Cliente", "Cliente")
.WithMany("Contatti")
.HasForeignKey("ClienteId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Cliente");
});
modelBuilder.Entity("Zentral.Domain.Entities.Evento", b =>
{
b.HasOne("Zentral.Domain.Entities.Cliente", "Cliente")
@@ -4306,6 +4419,25 @@ namespace Zentral.Infrastructure.Migrations
b.Navigation("TipoPasto");
});
modelBuilder.Entity("Zentral.Domain.Entities.Training.TrainingRecord", b =>
{
b.HasOne("Zentral.Domain.Entities.Articolo", "Articolo")
.WithMany()
.HasForeignKey("ArticoloId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("Zentral.Domain.Entities.ClienteContatto", "ClienteContatto")
.WithMany()
.HasForeignKey("ClienteContattoId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Articolo");
b.Navigation("ClienteContatto");
});
modelBuilder.Entity("Zentral.Domain.Entities.UserDashboardPreference", b =>
{
b.HasOne("Zentral.Domain.Entities.Utente", "Utente")
@@ -4588,6 +4720,8 @@ namespace Zentral.Infrastructure.Migrations
modelBuilder.Entity("Zentral.Domain.Entities.Cliente", b =>
{
b.Navigation("Contatti");
b.Navigation("Eventi");
b.Navigation("SalesOrders");