diff --git a/.idea/.idea.StandManager/.idea/sqldialects.xml b/.idea/.idea.StandManager/.idea/sqldialects.xml deleted file mode 100644 index 9b62772..0000000 --- a/.idea/.idea.StandManager/.idea/sqldialects.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/StandManager.Domain/Entita/ProvinciaIstat.cs b/StandManager.Domain/Entita/ProvinciaIstat.cs index da461cd..fad8bef 100644 --- a/StandManager.Domain/Entita/ProvinciaIstat.cs +++ b/StandManager.Domain/Entita/ProvinciaIstat.cs @@ -9,7 +9,8 @@ public class ProvinciaIstat : EntitaBase public string Provincia { get; set; } public bool CapoareaDaVerificare { get; set; } - - [InverseProperty(nameof(Utente.ProvinciaIstat))] - public List UtentiList { get; set; } + + [ForeignKey(nameof(Capoarea))] + public Guid? CapoareaId { get; set; } + public Utente Capoarea { get; set; } } \ No newline at end of file diff --git a/StandManager.Domain/Entita/Utente.cs b/StandManager.Domain/Entita/Utente.cs index d5a7bcb..820ff92 100644 --- a/StandManager.Domain/Entita/Utente.cs +++ b/StandManager.Domain/Entita/Utente.cs @@ -25,10 +25,6 @@ public class Utente : EntitaBase public Guid? CapoareaId { get; set; } public Utente Capoarea { get; set; } public bool IsCapoarea { get; set; } - - [ForeignKey(nameof(ProvinciaIstat))] - public Guid? ProvinciaIstatId { get; set; } - public ProvinciaIstat ProvinciaIstat { get; set; } public string Info => $"{Nome} {Cognome}"; public override string ToString() diff --git a/StandManager.Infrastructure/Migrations/20260206070903_CapoareaSuProvIstat.Designer.cs b/StandManager.Infrastructure/Migrations/20260206070903_CapoareaSuProvIstat.Designer.cs new file mode 100644 index 0000000..a957e33 --- /dev/null +++ b/StandManager.Infrastructure/Migrations/20260206070903_CapoareaSuProvIstat.Designer.cs @@ -0,0 +1,1314 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using StandManager.Infrastructure.DAL.Context; + +#nullable disable + +namespace StandManager.Infrastructure.Migrations +{ + [DbContext(typeof(StandManagerDbContext))] + [Migration("20260206070903_CapoareaSuProvIstat")] + partial class CapoareaSuProvIstat + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("StandManager.Domain.Entita.Cliente", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AgenteId") + .HasColumnType("uniqueidentifier"); + + b.Property("Cap") + .HasColumnType("nvarchar(max)"); + + b.Property("CapoareaId") + .HasColumnType("uniqueidentifier"); + + b.Property("Citta") + .HasColumnType("nvarchar(max)"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("EmailInvito") + .HasColumnType("nvarchar(max)"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Indirizzo") + .HasColumnType("nvarchar(max)"); + + b.Property("NumeroTelefono") + .HasColumnType("nvarchar(max)"); + + b.Property("PartitaIva") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("RagioneSociale") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Rid") + .HasColumnType("nvarchar(max)"); + + b.Property("StatoCliente") + .HasColumnType("int"); + + b.Property("TipologiaClienteId") + .HasColumnType("uniqueidentifier"); + + b.Property("TipologiaGestionale") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("AgenteId"); + + b.HasIndex("CapoareaId"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.HasIndex("TipologiaClienteId"); + + b.ToTable("Cliente"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.ComuneIstat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CodFisco") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Comune") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Istat") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Prefisso") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Provincia") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ProvinciaIstatId") + .HasColumnType("uniqueidentifier"); + + b.Property("Regione") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.HasIndex("ProvinciaIstatId"); + + b.ToTable("ComuneIstat"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Destinazione", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AgenteId") + .HasColumnType("uniqueidentifier"); + + b.Property("Cap") + .HasColumnType("nvarchar(max)"); + + b.Property("Citta") + .HasColumnType("nvarchar(max)"); + + b.Property("ClienteId") + .HasColumnType("uniqueidentifier"); + + b.Property("CodiceFiscale") + .HasColumnType("nvarchar(max)"); + + b.Property("ComuneIstatId") + .HasColumnType("uniqueidentifier"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("EmailInvito") + .HasColumnType("nvarchar(max)"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Indirizzo") + .HasColumnType("nvarchar(max)"); + + b.Property("NumeroTelefono") + .HasColumnType("nvarchar(max)"); + + b.Property("PartitaIva") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Provincia") + .HasColumnType("nvarchar(max)"); + + b.Property("ProvinciaIstatId") + .HasColumnType("uniqueidentifier"); + + b.Property("RagioneSociale") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Rid") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("AgenteId"); + + b.HasIndex("ClienteId"); + + b.HasIndex("ComuneIstatId"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.HasIndex("ProvinciaIstatId"); + + b.ToTable("Destinazione"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Evento", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DataA") + .HasColumnType("datetime2"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataDa") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Descrizione") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("IscrizioneA") + .HasColumnType("datetime2"); + + b.Property("IscrizioneDa") + .HasColumnType("datetime2"); + + b.Property("Luogo") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("TemplateHtmlMailInvito") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("TemplateHtmlMailIscrizione") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Titolo") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.ToTable("Evento"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Feature", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Descrizione") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Nome") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Ordinamento") + .HasColumnType("int"); + + b.Property("SezioneId") + .HasColumnType("uniqueidentifier"); + + b.Property("Type") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.HasIndex("SezioneId"); + + b.ToTable("Feature"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.InvitoEvento", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClienteId") + .HasColumnType("uniqueidentifier"); + + b.Property("CodiceFornito") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("EventoId") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("ClienteId"); + + b.HasIndex("EventoId"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.ToTable("InvitoEvento"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.IscrizioneEvento", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AgenteId") + .HasColumnType("uniqueidentifier"); + + b.Property("Cap") + .HasColumnType("nvarchar(max)"); + + b.Property("CapoareaId") + .HasColumnType("uniqueidentifier"); + + b.Property("ClienteId") + .HasColumnType("uniqueidentifier"); + + b.Property("Cognome") + .HasColumnType("nvarchar(max)"); + + b.Property("ComuneId") + .HasColumnType("uniqueidentifier"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("DataScan") + .HasColumnType("datetime2"); + + b.Property("DestinazioneId") + .HasColumnType("uniqueidentifier"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("Email") + .HasColumnType("nvarchar(max)"); + + b.Property("EsperienzaConDAC") + .HasColumnType("nvarchar(max)"); + + b.Property("EventoId") + .HasColumnType("uniqueidentifier"); + + b.Property("GiornoPresenza") + .HasColumnType("datetime2"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("InvitoEventoId") + .HasColumnType("uniqueidentifier"); + + b.Property("Nome") + .HasColumnType("nvarchar(max)"); + + b.Property("Note") + .HasColumnType("nvarchar(max)"); + + b.Property("NumeroTelefono") + .HasColumnType("nvarchar(max)"); + + b.Property("Partecipanti") + .HasColumnType("int"); + + b.Property("PartitaIva") + .HasColumnType("nvarchar(max)"); + + b.Property("ProvinciaId") + .HasColumnType("uniqueidentifier"); + + b.Property("RagioneSociale") + .HasColumnType("nvarchar(max)"); + + b.Property("Ruolo") + .HasColumnType("int"); + + b.Property("ScanCompleto") + .HasColumnType("bit"); + + b.Property("TipologiaClienteId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AgenteId"); + + b.HasIndex("CapoareaId"); + + b.HasIndex("ClienteId"); + + b.HasIndex("ComuneId"); + + b.HasIndex("DestinazioneId"); + + b.HasIndex("EventoId"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.HasIndex("InvitoEventoId"); + + b.HasIndex("ProvinciaId"); + + b.HasIndex("TipologiaClienteId"); + + b.ToTable("IscrizioneEvento"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.MailQueue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Args") + .HasColumnType("nvarchar(max)"); + + b.Property("Body") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("Error") + .HasColumnType("nvarchar(max)"); + + b.Property("From") + .HasColumnType("int"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Sent") + .HasColumnType("bit"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ToList") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.ToTable("MailQueue"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("IdFeature") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("RuoloId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("IdFeature"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.HasIndex("RuoloId"); + + b.ToTable("Permission"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.ProvinciaIstat", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CapoareaDaVerificare") + .HasColumnType("bit"); + + b.Property("CapoareaId") + .HasColumnType("uniqueidentifier"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Provincia") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Sigla") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("CapoareaId"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.ToTable("Province"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Referente", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Cognome") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("DestinazioneId") + .HasColumnType("uniqueidentifier"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Nome") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("NumeroTelefono") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Ruolo") + .HasColumnType("int"); + + b.Property("RuoloNote") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("DestinazioneId"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.ToTable("Referente"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Ruolo", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Nome") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.ToTable("Ruolo"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Sezione", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Nome") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Ordinamento") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.ToTable("Sezione"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.TipologiaCliente", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("Nome") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.ToTable("TipologiaCliente"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Utente", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CapoareaId") + .HasColumnType("uniqueidentifier"); + + b.Property("CodiceAgente") + .HasColumnType("nvarchar(max)"); + + b.Property("Cognome") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DataCreazione") + .HasColumnType("datetime2"); + + b.Property("DataModifica") + .HasColumnType("datetime2"); + + b.Property("Eliminato") + .HasColumnType("bit"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IdUtenteCreazione") + .HasColumnType("uniqueidentifier"); + + b.Property("IdUtenteModifica") + .HasColumnType("uniqueidentifier"); + + b.Property("IsCapoarea") + .HasColumnType("bit"); + + b.Property("Nome") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("RuoloId") + .HasColumnType("uniqueidentifier"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("CapoareaId"); + + b.HasIndex("IdUtenteCreazione"); + + b.HasIndex("IdUtenteModifica"); + + b.HasIndex("RuoloId"); + + b.ToTable("Utente"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Cliente", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "Agente") + .WithMany() + .HasForeignKey("AgenteId"); + + b.HasOne("StandManager.Domain.Entita.Utente", "Capoarea") + .WithMany() + .HasForeignKey("CapoareaId"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.HasOne("StandManager.Domain.Entita.TipologiaCliente", "TipologiaCliente") + .WithMany() + .HasForeignKey("TipologiaClienteId"); + + b.Navigation("Agente"); + + b.Navigation("Capoarea"); + + b.Navigation("TipologiaCliente"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.ComuneIstat", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.HasOne("StandManager.Domain.Entita.ProvinciaIstat", "ProvinciaIstat") + .WithMany() + .HasForeignKey("ProvinciaIstatId"); + + b.Navigation("ProvinciaIstat"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Destinazione", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "Agente") + .WithMany() + .HasForeignKey("AgenteId"); + + b.HasOne("StandManager.Domain.Entita.Cliente", "Cliente") + .WithMany("Destinazioni") + .HasForeignKey("ClienteId"); + + b.HasOne("StandManager.Domain.Entita.ComuneIstat", "ComuneIstat") + .WithMany() + .HasForeignKey("ComuneIstatId"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.HasOne("StandManager.Domain.Entita.ProvinciaIstat", "ProvinciaIstat") + .WithMany() + .HasForeignKey("ProvinciaIstatId"); + + b.Navigation("Agente"); + + b.Navigation("Cliente"); + + b.Navigation("ComuneIstat"); + + b.Navigation("ProvinciaIstat"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Evento", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Feature", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.HasOne("StandManager.Domain.Entita.Sezione", "Sezione") + .WithMany("Features") + .HasForeignKey("SezioneId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Sezione"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.InvitoEvento", b => + { + b.HasOne("StandManager.Domain.Entita.Cliente", "Cliente") + .WithMany() + .HasForeignKey("ClienteId"); + + b.HasOne("StandManager.Domain.Entita.Evento", "Evento") + .WithMany("InvitoEventoList") + .HasForeignKey("EventoId"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.Navigation("Cliente"); + + b.Navigation("Evento"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.IscrizioneEvento", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "Agente") + .WithMany() + .HasForeignKey("AgenteId"); + + b.HasOne("StandManager.Domain.Entita.Utente", "Capoarea") + .WithMany() + .HasForeignKey("CapoareaId"); + + b.HasOne("StandManager.Domain.Entita.Cliente", "Cliente") + .WithMany() + .HasForeignKey("ClienteId"); + + b.HasOne("StandManager.Domain.Entita.ComuneIstat", "Comune") + .WithMany() + .HasForeignKey("ComuneId"); + + b.HasOne("StandManager.Domain.Entita.Destinazione", "Destinazione") + .WithMany() + .HasForeignKey("DestinazioneId"); + + b.HasOne("StandManager.Domain.Entita.Evento", "Evento") + .WithMany("IscrizioneEventoList") + .HasForeignKey("EventoId"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.HasOne("StandManager.Domain.Entita.InvitoEvento", "InvitoEvento") + .WithMany("IscrizioniEvento") + .HasForeignKey("InvitoEventoId"); + + b.HasOne("StandManager.Domain.Entita.ProvinciaIstat", "Provincia") + .WithMany() + .HasForeignKey("ProvinciaId"); + + b.HasOne("StandManager.Domain.Entita.TipologiaCliente", "TipologiaCliente") + .WithMany() + .HasForeignKey("TipologiaClienteId"); + + b.Navigation("Agente"); + + b.Navigation("Capoarea"); + + b.Navigation("Cliente"); + + b.Navigation("Comune"); + + b.Navigation("Destinazione"); + + b.Navigation("Evento"); + + b.Navigation("InvitoEvento"); + + b.Navigation("Provincia"); + + b.Navigation("TipologiaCliente"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.MailQueue", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Permission", b => + { + b.HasOne("StandManager.Domain.Entita.Feature", "Feature") + .WithMany() + .HasForeignKey("IdFeature") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.HasOne("StandManager.Domain.Entita.Ruolo", "Ruolo") + .WithMany("Permessi") + .HasForeignKey("RuoloId"); + + b.Navigation("Feature"); + + b.Navigation("Ruolo"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.ProvinciaIstat", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "Capoarea") + .WithMany() + .HasForeignKey("CapoareaId"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.Navigation("Capoarea"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Referente", b => + { + b.HasOne("StandManager.Domain.Entita.Destinazione", "Destinazione") + .WithMany("Referenti") + .HasForeignKey("DestinazioneId"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.Navigation("Destinazione"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Ruolo", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Sezione", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.TipologiaCliente", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Utente", b => + { + b.HasOne("StandManager.Domain.Entita.Utente", "Capoarea") + .WithMany() + .HasForeignKey("CapoareaId"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") + .WithMany() + .HasForeignKey("IdUtenteCreazione"); + + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica") + .WithMany() + .HasForeignKey("IdUtenteModifica"); + + b.HasOne("StandManager.Domain.Entita.Ruolo", "Ruolo") + .WithMany("Utenti") + .HasForeignKey("RuoloId"); + + b.Navigation("Capoarea"); + + b.Navigation("Ruolo"); + + b.Navigation("UtenteCreazione"); + + b.Navigation("UtenteModifica"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Cliente", b => + { + b.Navigation("Destinazioni"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Destinazione", b => + { + b.Navigation("Referenti"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Evento", b => + { + b.Navigation("InvitoEventoList"); + + b.Navigation("IscrizioneEventoList"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.InvitoEvento", b => + { + b.Navigation("IscrizioniEvento"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Ruolo", b => + { + b.Navigation("Permessi"); + + b.Navigation("Utenti"); + }); + + modelBuilder.Entity("StandManager.Domain.Entita.Sezione", b => + { + b.Navigation("Features"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/StandManager.Infrastructure/Migrations/20260206070903_CapoareaSuProvIstat.cs b/StandManager.Infrastructure/Migrations/20260206070903_CapoareaSuProvIstat.cs new file mode 100644 index 0000000..edddadd --- /dev/null +++ b/StandManager.Infrastructure/Migrations/20260206070903_CapoareaSuProvIstat.cs @@ -0,0 +1,79 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace StandManager.Infrastructure.Migrations +{ + /// + public partial class CapoareaSuProvIstat : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Utente_Province_ProvinciaIstatId", + table: "Utente"); + + migrationBuilder.DropIndex( + name: "IX_Utente_ProvinciaIstatId", + table: "Utente"); + + migrationBuilder.DropColumn( + name: "ProvinciaIstatId", + table: "Utente"); + + migrationBuilder.AddColumn( + name: "CapoareaId", + table: "Province", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_Province_CapoareaId", + table: "Province", + column: "CapoareaId"); + + migrationBuilder.AddForeignKey( + name: "FK_Province_Utente_CapoareaId", + table: "Province", + column: "CapoareaId", + principalTable: "Utente", + principalColumn: "Id"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Province_Utente_CapoareaId", + table: "Province"); + + migrationBuilder.DropIndex( + name: "IX_Province_CapoareaId", + table: "Province"); + + migrationBuilder.DropColumn( + name: "CapoareaId", + table: "Province"); + + migrationBuilder.AddColumn( + name: "ProvinciaIstatId", + table: "Utente", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_Utente_ProvinciaIstatId", + table: "Utente", + column: "ProvinciaIstatId"); + + migrationBuilder.AddForeignKey( + name: "FK_Utente_Province_ProvinciaIstatId", + table: "Utente", + column: "ProvinciaIstatId", + principalTable: "Province", + principalColumn: "Id"); + } + } +} diff --git a/StandManager.Infrastructure/Migrations/StandManagerDbContextModelSnapshot.cs b/StandManager.Infrastructure/Migrations/StandManagerDbContextModelSnapshot.cs index 3681fd3..039dcd1 100644 --- a/StandManager.Infrastructure/Migrations/StandManagerDbContextModelSnapshot.cs +++ b/StandManager.Infrastructure/Migrations/StandManagerDbContextModelSnapshot.cs @@ -621,6 +621,9 @@ namespace StandManager.Infrastructure.Migrations b.Property("CapoareaDaVerificare") .HasColumnType("bit"); + b.Property("CapoareaId") + .HasColumnType("uniqueidentifier"); + b.Property("DataCreazione") .HasColumnType("datetime2"); @@ -646,6 +649,8 @@ namespace StandManager.Infrastructure.Migrations b.HasKey("Id"); + b.HasIndex("CapoareaId"); + b.HasIndex("IdUtenteCreazione"); b.HasIndex("IdUtenteModifica"); @@ -862,9 +867,6 @@ namespace StandManager.Infrastructure.Migrations .IsRequired() .HasColumnType("nvarchar(max)"); - b.Property("ProvinciaIstatId") - .HasColumnType("uniqueidentifier"); - b.Property("RuoloId") .HasColumnType("uniqueidentifier"); @@ -880,8 +882,6 @@ namespace StandManager.Infrastructure.Migrations b.HasIndex("IdUtenteModifica"); - b.HasIndex("ProvinciaIstatId"); - b.HasIndex("RuoloId"); b.ToTable("Utente"); @@ -1160,6 +1160,10 @@ namespace StandManager.Infrastructure.Migrations modelBuilder.Entity("StandManager.Domain.Entita.ProvinciaIstat", b => { + b.HasOne("StandManager.Domain.Entita.Utente", "Capoarea") + .WithMany() + .HasForeignKey("CapoareaId"); + b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione") .WithMany() .HasForeignKey("IdUtenteCreazione"); @@ -1168,6 +1172,8 @@ namespace StandManager.Infrastructure.Migrations .WithMany() .HasForeignKey("IdUtenteModifica"); + b.Navigation("Capoarea"); + b.Navigation("UtenteCreazione"); b.Navigation("UtenteModifica"); @@ -1253,18 +1259,12 @@ namespace StandManager.Infrastructure.Migrations .WithMany() .HasForeignKey("IdUtenteModifica"); - b.HasOne("StandManager.Domain.Entita.ProvinciaIstat", "ProvinciaIstat") - .WithMany("UtentiList") - .HasForeignKey("ProvinciaIstatId"); - b.HasOne("StandManager.Domain.Entita.Ruolo", "Ruolo") .WithMany("Utenti") .HasForeignKey("RuoloId"); b.Navigation("Capoarea"); - b.Navigation("ProvinciaIstat"); - b.Navigation("Ruolo"); b.Navigation("UtenteCreazione"); @@ -1294,11 +1294,6 @@ namespace StandManager.Infrastructure.Migrations b.Navigation("IscrizioniEvento"); }); - modelBuilder.Entity("StandManager.Domain.Entita.ProvinciaIstat", b => - { - b.Navigation("UtentiList"); - }); - modelBuilder.Entity("StandManager.Domain.Entita.Ruolo", b => { b.Navigation("Permessi"); diff --git a/StandManager/Components/Pages/Component_Registrazione.razor b/StandManager/Components/Pages/Component_Registrazione.razor index 7b64bd9..798ca35 100644 --- a/StandManager/Components/Pages/Component_Registrazione.razor +++ b/StandManager/Components/Pages/Component_Registrazione.razor @@ -304,7 +304,8 @@ if (destinazione == null || string.IsNullOrEmpty(text)) { - await _dialogService.Alert("Non è stato trovato il clente (Codice cliente/Partita IVA non presente)", "Errore", new ConfirmOptions() { OkButtonText = "Ok" }); + var msg = new NotificationMessage { Severity = NotificationSeverity.Warning, Summary = "Non trovato", Detail = "Non è stato possibile trovare il Codice Cliente o la Partita IVA indicati.", Duration = 4000 }; + _notificationService.Notify(msg); } else { diff --git a/StandManager/Components/Pages/Management/Iscrizioni.razor b/StandManager/Components/Pages/Management/Iscrizioni.razor index e3d84a8..acdbe5e 100644 --- a/StandManager/Components/Pages/Management/Iscrizioni.razor +++ b/StandManager/Components/Pages/Management/Iscrizioni.razor @@ -26,13 +26,14 @@ Data="@iscrizioni" LogicalFilterOperator="LogicalFilterOperator.Or" SelectionMode="DataGridSelectionMode.Single"> - - - + + + + + @@ -56,8 +57,9 @@ iscrizioni = (await _managerService.IscrizioneEventoService.RicercaQueryable( x => x.Eliminato == false, - includi:x => x.Include(x => x.Provincia).Include(x => x.Comune).Include(y => y.Cliente).Include(y => y.Evento).Include(y => y.InvitoEvento), - ordinamento: x => x.OrderBy(y => y.RagioneSociale))) + includi:x => x.Include(x => x.Provincia).Include(x => x.Comune).Include(y => y.Cliente) + .Include(y => y.Evento).Include(y => y.InvitoEvento).Include(y => y.Agente).Include(y => y.Capoarea), + ordinamento: x => x.OrderByDescending(y => y.DataCreazione))) .Select(x => (IscrizioneEventoViewModel)x).ToList(); } @@ -71,17 +73,4 @@ { _navManager.NavigateTo($"/management/Iscrizioni/Modifica/{iscrizioneEvento.Id}"); } - - private async Task DeleteRow(IscrizioneEventoViewModel iscrizioneEvento) - { - var ok = await _dialogService.Confirm($"Vuoi davvero eliminare la registrazione {iscrizioneEvento.RagioneSociale}?", "Conferma eliminazione", new ConfirmOptions { OkButtonText = "Sì", CancelButtonText = "No", Width = "400px" }); - - if (ok == true) - { - await _managerService.IscrizioneEventoService.Elimina(iscrizioneEvento.Id, await MembershipUtils.GetUserId(auth)); - iscrizioni = (await _managerService.IscrizioneEventoService.RicercaQueryable( - x => x.Eliminato == false, includi: x => x.Include(x => x.Provincia).Include(x => x.Comune).Include(y => y.Cliente).Include(y => y.Evento).Include(y => y.InvitoEvento), ordinamento: x => x.OrderBy(y => y.RagioneSociale))) - .Select(x => (IscrizioneEventoViewModel)x).ToList(); - } - } } \ No newline at end of file diff --git a/StandManager/Components/Pages/Management/Iscrizioni_Edit.razor b/StandManager/Components/Pages/Management/Iscrizioni_Edit.razor index 48f5fbe..95891d6 100644 --- a/StandManager/Components/Pages/Management/Iscrizioni_Edit.razor +++ b/StandManager/Components/Pages/Management/Iscrizioni_Edit.razor @@ -1,7 +1,6 @@ @attribute [Authorize] @rendermode InteractiveServer -@page "/management/Iscrizioni/Modifica" @page "/management/Iscrizioni/Modifica/{IscrizioneId:guid}" @using Microsoft.AspNetCore.Identity @@ -35,131 +34,115 @@
- - - -
-
-
- Nome - - -
- -
- Cognome - - -
- -
- Email - -
- -
- Numero di Telefono - -
+
+
+
+ Nome +
-
-
- Provincia - - -
-
- CAP - - -
-
- Comune - - -
+
+ Cognome +
-
-
- Ragione Sociale - - -
- -
- Partita Iva - - -
- -
- Tipologia Cliente - -
- -
- Ha già avuto esperienza con DAC? - -
+
+ Email +
-
-
- Destinazione - - -
- -
- Note - - -
- -
- Ruolo - -
-
- Giorno presenza - -
-
- -
-
- Agente - -
-
- Capoarea - -
-
- -
-
- -
-
- -
+
+ Numero di Telefono +
- + +
+
+ Provincia + +
+
+ CAP + +
+
+ Comune + +
+
+ +
+
+ Ragione Sociale + +
+ +
+ Partita Iva + +
+ +
+ Tipologia Cliente + +
+ +
+ Ha già avuto esperienza con DAC? + +
+
+ +
+
+ Destinazione + +
+ +
+ Note + +
+ +
+ Ruolo + +
+
+ Giorno presenza + +
+
+ +
+
+ Capoarea + + + Capoarea da confermare + +
+ +
+ Agente + +
+
+ +
+
+ +
+
+ +
+
+
@@ -177,29 +160,11 @@ [SupplyParameterFromForm] private IscrizioneEventoViewModel iscrizione { get; set; } = new(); - private IEnumerable destinazioniList { get; set; } - private IEnumerable> tipologiaList { get; set; } - private IEnumerable esperienzaList { get; set; } - private IEnumerable> ruoloList { get; set; } - private List provList { get; set; } - private List comuniList { get; set; } private IEnumerable agenti { get; set; } = new List(); private IEnumerable capiarea { get; set; } = new List(); - private DateTime inizioEvento { get; set; } - private DateTime fineEvento { get; set; } - - private bool isAdmin { get; set; } = false; - private Guid capoareaId { get; set; } = Guid.Empty; - - private string pageTitle => iscrizione?.Id == Guid.Empty ? "Nuova iscrizione" : "Modifica iscrizione"; - - private DialogOptions editNewDialogOption { get; set; } = new() - { - Resizable = false, - Draggable = false, - Width = "900px" - }; + private string pageTitle => $"Iscrizione {iscrizione?.RagioneSociale}"; + private bool capoareaDaConfermare { get; set; } = false; /// /// Creo tutte le drop necessarie per il form @@ -208,54 +173,58 @@ /// protected override async Task OnInitializedAsync() { - var eUtils = new EnumUtils(); idClaim = await MembershipUtils.GetUserId(auth); - var idRuolo = await MembershipUtils.GetRoleId(auth); - var ruolo = await _managerService.RuoloService.RicercaPer( - x => x.Id == idRuolo && x.Permessi.Any(y => y.Feature.Type == FeatureType.Capoarea || y.Feature.Type == FeatureType.AdminGlobal), - includi: x => x.Include(y => y.Permessi).ThenInclude(z => z.Feature)); - - isAdmin = ruolo?.Permessi.Where(x => x.Eliminato == false)?.Any(x => x.Feature.Type == FeatureType.AdminGlobal) ?? false; - var a = ruolo?.Permessi.Where(x => x.Eliminato == false); - - if (IscrizioneId.GetValueOrDefault() != Guid.Empty) - iscrizione = await _managerService.IscrizioneEventoService.RicercaPer(x => x.Id == IscrizioneId, includi: x => x.Include(x => x.Comune).Include(x => x.Provincia).Include(y => y.Cliente).Include(y => y.Evento).Include(y => y.InvitoEvento)); - else - iscrizione = new IscrizioneEventoViewModel(); - - destinazioniList = (await _managerService.DestinazioneService.RicercaQueryable(filtro: x => x.ClienteId == iscrizione.ClienteId.GetValueOrDefault())).Select(x => (DestinazioneViewModel)x).ToList(); - esperienzaList = new List() { "Si", "No" }; - tipologiaList = (await _managerService.TipologiaClienteService.RicercaQueryable(x => x.Eliminato == false, ordinamento: x => x.OrderBy(y => y.Nome))).Select(x => new LookupViewModel(x.Id, x.Nome)).ToList(); - ruoloList = eUtils.GetEnumList(); - provList = (await _managerService.ProvinciaIstatService.RicercaQueryable(x => x.Eliminato == false, ordinamento: x => x.OrderBy(y => y.Provincia))).Select(x => (ProvinciaViewModel)x).ToList(); - comuniList = (await _managerService.ComuneIstatService.RicercaQueryable(x => x.ProvinciaIstatId == iscrizione.ProvinciaId.GetValueOrDefault())).Select(x => (ComuneIstatViewModel)x).ToList(); - - capoareaId = iscrizione.CapoareaId.GetValueOrDefault(); + + iscrizione = await _managerService.IscrizioneEventoService.RicercaPer( + x => x.Id == IscrizioneId, + includi: x => x + .Include(x => x.Comune) + .Include(x => x.Provincia) + .Include(y => y.Cliente) + .Include(y => y.Evento) + .Include(y => y.InvitoEvento)); + capiarea = (await _managerService.UtenteService.RicercaQueryable( - x => x.Eliminato == false && x.IsCapoarea, ordinamento: x => x.OrderBy(y => y.Cognome).ThenBy(z => z.Nome))).Select(x => (UtenteViewModel)x).ToList(); + x => x.Eliminato == false && x.IsCapoarea, + ordinamento: x => x.OrderBy(y => y.Cognome).ThenBy(z => z.Nome))) + .Select(x => (UtenteViewModel)x).ToList(); - if (capoareaId != Guid.Empty) - agenti = (await _managerService.UtenteService.RicercaQueryable( - x => x.Eliminato == false && (isAdmin || x.CapoareaId == idClaim) && !x.IsCapoarea && x.CapoareaId == iscrizione.CapoareaId, - includi: x => x.Include(y => y.Capoarea), ordinamento: x => x.OrderBy(y => y.Cognome).ThenBy(z => z.Nome))).Select(x => (UtenteViewModel)x).ToList(); + if (iscrizione.ProvinciaId.HasValue && iscrizione.CapoareaId.GetValueOrDefault() == Guid.Empty) + { + capoareaDaConfermare = true; + var dbProv = await _managerService.ProvinciaIstatService.RicercaPer(x => x.Id == iscrizione.ProvinciaId); + iscrizione.CapoareaId = dbProv.CapoareaId; + } - inizioEvento = iscrizione.Evento?.DataDa ?? DateTime.Now.AddDays(-7); - fineEvento = iscrizione.Evento?.DataA ?? DateTime.Now.AddDays(7); + if (iscrizione.CapoareaId.GetValueOrDefault() != Guid.Empty) + { + agenti = (await _managerService.UtenteService.RicercaQueryable(x => x.CapoareaId == iscrizione.CapoareaId, + ordinamento:x => x.OrderBy(y => y.Cognome).ThenBy(z => z.Nome))) + .Select(x => (UtenteViewModel)x).ToList(); + } } - /// - /// Salva il cliente: recupera o crea il modello, applica i dati dalla UI, - /// collega l’agente, crea una destinazione di default se è un nuovo cliente - /// e poi salva usando l’ID dell’utente loggato, tornando alla lista clienti. - /// private async Task onIscrizioneSave() { - var model = await _managerService.IscrizioneEventoService.RicercaPer(x => x.Id == iscrizione.Id, solaLettura: false) ?? new IscrizioneEvento(); + try + { + if (iscrizione.CapoareaId.GetValueOrDefault() == Guid.Empty || iscrizione.AgenteId.GetValueOrDefault() == Guid.Empty) + throw new Exception("Selezionare un capoarea e un agente"); + + var model = await _managerService.IscrizioneEventoService.RicercaPer(x => x.Id == iscrizione.Id, solaLettura: false); + if (model == null) + throw new Exception("Si è verificato un errore"); + + model.AgenteId = iscrizione.AgenteId; + model.CapoareaId = iscrizione.CapoareaId; - model = iscrizione.Map(model); - - await _managerService.IscrizioneEventoService.Salva(model, idClaim); - _navManager.NavigateTo("/management/Iscrizioni"); + await _managerService.IscrizioneEventoService.Salva(model, idClaim); + _navManager.NavigateTo("/management/Iscrizioni"); + } + catch (Exception ex) + { + await _dialogService.Alert(ex.Message, "Errore"); + } } /// @@ -272,41 +241,15 @@ private async Task OnCapoareaChange(object value) { var capoId = Guid.Empty; + capoareaDaConfermare = false; if (Guid.TryParse(value.ToString(), out capoId)) { - capoareaId = capoId; iscrizione.AgenteId = null; - agenti = iscrizione.CapoareaId == idClaim || isAdmin - ? (await _managerService.UtenteService.RicercaQueryable( - x => x.Eliminato == false && (isAdmin || x.CapoareaId == idClaim) && !x.IsCapoarea && x.CapoareaId == capoareaId, - includi: x => x.Include(y => y.Capoarea), - ordinamento: x => x.OrderBy(y => y.Cognome).ThenBy(z => z.Nome))) - .Select(x => (UtenteViewModel)x).ToList() - : [await _managerService.UtenteService.RicercaPer(x => x.Id == iscrizione.AgenteId)]; + agenti = (await _managerService.UtenteService.RicercaQueryable(x => x.CapoareaId == capoId, + ordinamento:x => x.OrderBy(y => y.Cognome).ThenBy(z => z.Nome))) + .Select(x => (UtenteViewModel)x).ToList(); } } - - /// - /// Aggiorna la drop dei comuni in base alla provincia - /// - private async Task onProvinciaChanged(object args) - { - Guid parsed; - Guid.TryParse(args.ToString(), out parsed); - var prov = await _managerService.ProvinciaIstatService.RicercaPer(x => x.Id == parsed); - - if (prov == null) - { - await _dialogService.Alert("La provincia indicata non è presente", "Errore", new ConfirmOptions() { OkButtonText = "Ok" }); - return; - } - - iscrizione.ProvinciaId = prov.Id; - iscrizione.ComuneId = null; - - comuniList = (await _managerService.ComuneIstatService.RicercaQueryable(x => x.Provincia == prov.Sigla)) - .Select(x => (ComuneIstatViewModel)x).ToList(); - } } diff --git a/StandManager/Components/Pages/Management/Utenti_Edit.razor b/StandManager/Components/Pages/Management/Utenti_Edit.razor index cb33e5f..ff52710 100644 --- a/StandManager/Components/Pages/Management/Utenti_Edit.razor +++ b/StandManager/Components/Pages/Management/Utenti_Edit.razor @@ -74,14 +74,6 @@ Password
- - @if (utente.IsCapoarea) - { -
- Provincia Associata - -
- }
@@ -115,7 +107,6 @@ private UtenteViewModel? utente { get; set; } = new(); private List capoareaList { get; set; } = new(); private List ruoli { get; set; } = new(); - private List> province { get; set; } = new(); private string pageTitle => utente?.Id == Guid.Empty ? "Nuovo utente" : "Modifica utente"; @@ -135,8 +126,6 @@ ruoli = (await _managerService.RuoloService.RicercaQueryable(x => x.Eliminato == false)) .Select(x => (RuoloViewModel)x).ToList(); - province = (await _managerService.ProvinciaIstatService.RicercaQueryable(x => x.Eliminato == false && (!x.UtentiList.Any() || x.UtentiList.Any(x => x.Id == utente.Id)))).Select(x => new LookupViewModel(x.Id, x.Provincia)).ToList(); - var ruoliCapoarea = await _managerService.RuoloService.RicercaQueryable( x => x.Permessi.Any(y => y.Feature.Type == FeatureType.AdminGlobal || y.Feature.Type == FeatureType.Capoarea), includi: x => x.Include(y => y.Permessi).ThenInclude(z => z.Feature)); diff --git a/StandManager/Components/_Imports.razor b/StandManager/Components/_Imports.razor index 11fce72..8acf6e7 100644 --- a/StandManager/Components/_Imports.razor +++ b/StandManager/Components/_Imports.razor @@ -20,5 +20,6 @@ @inject IManagerService _managerService @inject DialogService _dialogService +@inject NotificationService _notificationService @inject NavigationManager _navManager @inject AuthenticationStateProvider _auth \ No newline at end of file diff --git a/StandManager/Model/ClienteViewModel.cs b/StandManager/Model/ClienteViewModel.cs index 7ad61f7..e4f9a90 100644 --- a/StandManager/Model/ClienteViewModel.cs +++ b/StandManager/Model/ClienteViewModel.cs @@ -92,21 +92,4 @@ public class ClienteViewModel return model; } -} - -public class TipologiaClienteViewModel -{ - public Guid Id { get; set; } - public string Nome { get; set; } - - public static implicit operator TipologiaClienteViewModel(TipologiaCliente model) - { - return model == null - ? null - : new TipologiaClienteViewModel() - { - Id = model.Id, - Nome = model.Nome - }; - } -} +} \ No newline at end of file diff --git a/StandManager/Model/IscrizioneEventoViewModel.cs b/StandManager/Model/IscrizioneEventoViewModel.cs index 0e94f45..9803d56 100644 --- a/StandManager/Model/IscrizioneEventoViewModel.cs +++ b/StandManager/Model/IscrizioneEventoViewModel.cs @@ -12,6 +12,7 @@ public class IscrizioneEventoViewModel public InvitoEvento InvitoEvento { get; set; } public ClienteViewModel Cliente { get; set; } public Guid? ClienteId { get; set; } + public DestinazioneViewModel Destinazione { get; set; } public Guid? DestinazioneId { get; set; } /*[Range(1, int.MaxValue, ErrorMessage = "Inserire un numero di partecipanti valido")]*/ public int Partecipanti { get; set; } @@ -40,6 +41,8 @@ public class IscrizioneEventoViewModel public string RagioneSociale { get; set; } [Required(ErrorMessage = "Il campo è obbigatorio")] public string EsperienzaConDAC { get; set; } + + public TipologiaClienteViewModel TipologiaCliente { get; set; } [Required(ErrorMessage = "La tipologia è obbigatoria")] public Guid? TipologiaClienteId { get; set; } public RuoloTipo Ruolo { get; set; } @@ -48,9 +51,20 @@ public class IscrizioneEventoViewModel public string? PartitaIva { get; set; } [Required(ErrorMessage = "E' necessario indicare la data di partecipazione")] public DateTime? GiornoPresenza { get; set; } + public UtenteViewModel Agente { get; set; } public Guid? AgenteId { get; set; } + public UtenteViewModel Capoarea { get; set; } public Guid? CapoareaId { get; set; } + public string ProvinciaInfo => $"{Provincia?.Provincia ?? "--Non indicato"}"; + public string ComuneInfo => $"{Comune?.Comune ?? "--Non indicato"}"; + public string TipologiaClienteInfo => $"{TipologiaCliente?.Nome ?? "--Non indicato"}"; + public string DestinazioneInfo => $"{Destinazione?.RagioneSociale ?? "--Non indicato"}"; + public string RuoloInfo => $"{new EnumUtils().GetDescription(Ruolo)}"; + public string GiornoPresenzaInfo => $"{GiornoPresenza.GetValueOrDefault():dd/MM/yyyy}"; + public string AgenteInfo => $"{Agente?.Info ?? "--Non indicato"}"; + public string CapoareaInfo => $"{Capoarea?.Info ?? "--Non indicato"}"; + public IscrizioneEvento Map(IscrizioneEvento model) { model.Note = Note; @@ -105,6 +119,9 @@ public class IscrizioneEventoViewModel GiornoPresenza = model.GiornoPresenza, CapoareaId = model.CapoareaId, AgenteId = model.AgenteId, + TipologiaCliente = model.TipologiaCliente, + Agente = model.Agente, + Capoarea = model.Capoarea }; } } \ No newline at end of file diff --git a/StandManager/Model/TipologiaClienteViewModel.cs b/StandManager/Model/TipologiaClienteViewModel.cs new file mode 100644 index 0000000..2c927e5 --- /dev/null +++ b/StandManager/Model/TipologiaClienteViewModel.cs @@ -0,0 +1,20 @@ +using StandManager.Domain.Entita; + +namespace StandManager.Model; + +public class TipologiaClienteViewModel +{ + public Guid Id { get; set; } + public string Nome { get; set; } + + public static implicit operator TipologiaClienteViewModel(TipologiaCliente model) + { + return model == null + ? null + : new TipologiaClienteViewModel() + { + Id = model.Id, + Nome = model.Nome + }; + } +} \ No newline at end of file diff --git a/StandManager/Model/UtenteViewModel.cs b/StandManager/Model/UtenteViewModel.cs index 143fa75..390d878 100644 --- a/StandManager/Model/UtenteViewModel.cs +++ b/StandManager/Model/UtenteViewModel.cs @@ -19,7 +19,6 @@ public class UtenteViewModel public Guid? RuoloId { get; set; } public Guid? CapoareaId { get; set; } public bool IsCapoarea { get; set; } - public Guid? ProvinciaId { get; set; } public string Info => $"{Nome} {Cognome}"; public static implicit operator UtenteViewModel(Utente? model) @@ -33,8 +32,7 @@ public class UtenteViewModel Cognome = model.Cognome, RuoloId = model.Ruolo?.Id, CapoareaId = model.Capoarea?.Id, - IsCapoarea = model.IsCapoarea, - ProvinciaId = model.ProvinciaIstatId + IsCapoarea = model.IsCapoarea }; } @@ -44,7 +42,6 @@ public class UtenteViewModel model.Cognome = Cognome; model.Email = Email; model.IsCapoarea = IsCapoarea; - model.ProvinciaIstatId = ProvinciaId; return model; } diff --git a/Writerside.iml b/Writerside.iml new file mode 100644 index 0000000..9db9994 --- /dev/null +++ b/Writerside.iml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/script.sql b/script.sql index 3634a88..5bdddf5 100644 --- a/script.sql +++ b/script.sql @@ -1,51 +1,55 @@ BEGIN TRANSACTION; -CREATE TABLE [MailQueue] ( - [Id] uniqueidentifier NOT NULL, - [Subject] nvarchar(max) NOT NULL, - [Body] nvarchar(max) NOT NULL, - [ToList] nvarchar(max) NOT NULL, - [Args] nvarchar(max) NULL, - [From] int NOT NULL, - [Sent] bit NOT NULL, - [Error] nvarchar(max) NULL, - [DataCreazione] datetime2 NOT NULL, - [DataModifica] datetime2 NULL, - [Eliminato] bit NOT NULL, - [IdUtenteCreazione] uniqueidentifier NULL, - [IdUtenteModifica] uniqueidentifier NULL, - CONSTRAINT [PK_MailQueue] PRIMARY KEY ([Id]), - CONSTRAINT [FK_MailQueue_Utente_IdUtenteCreazione] FOREIGN KEY ([IdUtenteCreazione]) REFERENCES [Utente] ([Id]), - CONSTRAINT [FK_MailQueue_Utente_IdUtenteModifica] FOREIGN KEY ([IdUtenteModifica]) REFERENCES [Utente] ([Id]) -); - -CREATE INDEX [IX_MailQueue_IdUtenteCreazione] ON [MailQueue] ([IdUtenteCreazione]); - -CREATE INDEX [IX_MailQueue_IdUtenteModifica] ON [MailQueue] ([IdUtenteModifica]); +DROP TABLE [IscrizioneEventoPerMail]; INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) -VALUES (N'20260109133732_MailQueue', N'9.0.11'); +VALUES (N'20260122105724_Rimozione_IscrizioneEventoPerMail', N'9.0.11'); -CREATE TABLE [IscrizioneEventoPerMail] ( - [Id] uniqueidentifier NOT NULL, - [Mail] nvarchar(max) NOT NULL, - [Processata] bit NOT NULL, - [Inviata] bit NOT NULL, - [DataCreazione] datetime2 NOT NULL, - [DataModifica] datetime2 NULL, - [Eliminato] bit NOT NULL, - [IdUtenteCreazione] uniqueidentifier NULL, - [IdUtenteModifica] uniqueidentifier NULL, - CONSTRAINT [PK_IscrizioneEventoPerMail] PRIMARY KEY ([Id]), - CONSTRAINT [FK_IscrizioneEventoPerMail_Utente_IdUtenteCreazione] FOREIGN KEY ([IdUtenteCreazione]) REFERENCES [Utente] ([Id]), - CONSTRAINT [FK_IscrizioneEventoPerMail_Utente_IdUtenteModifica] FOREIGN KEY ([IdUtenteModifica]) REFERENCES [Utente] ([Id]) -); +ALTER TABLE [Utente] ADD [ProvinciaIstatId] uniqueidentifier NULL; -CREATE INDEX [IX_IscrizioneEventoPerMail_IdUtenteCreazione] ON [IscrizioneEventoPerMail] ([IdUtenteCreazione]); +ALTER TABLE [IscrizioneEvento] ADD [AgenteId] uniqueidentifier NULL; -CREATE INDEX [IX_IscrizioneEventoPerMail_IdUtenteModifica] ON [IscrizioneEventoPerMail] ([IdUtenteModifica]); +ALTER TABLE [IscrizioneEvento] ADD [CapoareaId] uniqueidentifier NULL; + +CREATE INDEX [IX_Utente_ProvinciaIstatId] ON [Utente] ([ProvinciaIstatId]); + +CREATE INDEX [IX_IscrizioneEvento_AgenteId] ON [IscrizioneEvento] ([AgenteId]); + +CREATE INDEX [IX_IscrizioneEvento_CapoareaId] ON [IscrizioneEvento] ([CapoareaId]); + +ALTER TABLE [IscrizioneEvento] ADD CONSTRAINT [FK_IscrizioneEvento_Utente_AgenteId] FOREIGN KEY ([AgenteId]) REFERENCES [Utente] ([Id]); + +ALTER TABLE [IscrizioneEvento] ADD CONSTRAINT [FK_IscrizioneEvento_Utente_CapoareaId] FOREIGN KEY ([CapoareaId]) REFERENCES [Utente] ([Id]); + +ALTER TABLE [Utente] ADD CONSTRAINT [FK_Utente_Province_ProvinciaIstatId] FOREIGN KEY ([ProvinciaIstatId]) REFERENCES [Province] ([Id]); INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) -VALUES (N'20260120130758_IscrizioneEventoPerMail', N'9.0.11'); +VALUES (N'20260204162205_CapiareaAgentiInIscrizioneEvento', N'9.0.11'); + +ALTER TABLE [Province] ADD [CapoareaDaVerificare] bit NOT NULL DEFAULT CAST(0 AS bit); + +INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) +VALUES (N'20260205095709_CapoareaDaVerificareInProvincia', N'9.0.11'); + +ALTER TABLE [Utente] DROP CONSTRAINT [FK_Utente_Province_ProvinciaIstatId]; + +DROP INDEX [IX_Utente_ProvinciaIstatId] ON [Utente]; + +DECLARE @var sysname; +SELECT @var = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Utente]') AND [c].[name] = N'ProvinciaIstatId'); +IF @var IS NOT NULL EXEC(N'ALTER TABLE [Utente] DROP CONSTRAINT [' + @var + '];'); +ALTER TABLE [Utente] DROP COLUMN [ProvinciaIstatId]; + +ALTER TABLE [Province] ADD [CapoareaId] uniqueidentifier NULL; + +CREATE INDEX [IX_Province_CapoareaId] ON [Province] ([CapoareaId]); + +ALTER TABLE [Province] ADD CONSTRAINT [FK_Province_Utente_CapoareaId] FOREIGN KEY ([CapoareaId]) REFERENCES [Utente] ([Id]); + +INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) +VALUES (N'20260206070903_CapoareaSuProvIstat', N'9.0.11'); COMMIT; GO