From a7b987d09de2e043902fb2a22ff3e2c73f057f00 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 18 Oct 2021 16:36:20 +0200 Subject: [PATCH] Fix context x metodi necessari --- GPW.Api/GPW.Data/DBModels/GPWContext.cs | 63 --- GPW.Api/GPW.Data/GPWContext.cs | 598 ++++++++++++++---------- 2 files changed, 360 insertions(+), 301 deletions(-) delete mode 100644 GPW.Api/GPW.Data/DBModels/GPWContext.cs diff --git a/GPW.Api/GPW.Data/DBModels/GPWContext.cs b/GPW.Api/GPW.Data/DBModels/GPWContext.cs deleted file mode 100644 index af85638..0000000 --- a/GPW.Api/GPW.Data/DBModels/GPWContext.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata; - -#nullable disable - -namespace GPW.Data.DBModels -{ - public partial class GPWContext : DbContext - { - public GPWContext() - { - } - - public GPWContext(DbContextOptions options) - : base(options) - { - } - - public virtual DbSet CheckVc19s { get; set; } - - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - if (!optionsBuilder.IsConfigured) - { -#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263. - optionsBuilder.UseSqlServer("Server=SQLSTEAM;Database=GPW;Trusted_Connection=True;"); - } - } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - modelBuilder.HasAnnotation("Relational:Collation", "Latin1_General_CI_AS"); - - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.IdxCheck) - .HasName("PK_CheckC19"); - - entity.ToTable("CheckVC19"); - - entity.Property(e => e.IdxCheck).ValueGeneratedNever(); - - entity.Property(e => e.DtCheck) - .HasColumnType("datetime") - .HasColumnName("dtCheck") - .HasDefaultValueSql("(getdate())"); - - entity.Property(e => e.IdxDipendente).HasColumnName("idxDipendente"); - - entity.Property(e => e.Payload) - .IsRequired() - .HasMaxLength(500) - .HasColumnName("payload") - .HasDefaultValueSql("('')"); - }); - - OnModelCreatingPartial(modelBuilder); - } - - partial void OnModelCreatingPartial(ModelBuilder modelBuilder); - } -} diff --git a/GPW.Api/GPW.Data/GPWContext.cs b/GPW.Api/GPW.Data/GPWContext.cs index 9dfa929..dfcf3b8 100644 --- a/GPW.Api/GPW.Data/GPWContext.cs +++ b/GPW.Api/GPW.Data/GPWContext.cs @@ -2,6 +2,9 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; using GPW.Data.DBModels; +using NLog.Fluent; +using NLog; +using Microsoft.Extensions.Configuration; #nullable disable @@ -9,66 +12,134 @@ namespace GPW.Data { public partial class GPWContext : DbContext { + #region Private Fields + + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + + private IConfiguration _configuration; + + #endregion Private Fields + #region Public Constructors public GPWContext() { } - public GPWContext(DbContextOptions options) - : base(options) + public GPWContext(IConfiguration configuration) { + _configuration = configuration; + } + + public GPWContext(DbContextOptions options) : base(options) + { + try + { + // se non ci fosse... crea o migra! + Database.Migrate(); + } + catch (Exception exc) + { + Log.Error(exc, "Exception during context initialization 02"); + } } #endregion Public Constructors +#if false + public virtual DbSet AnagClassiOraries { get; set; } + + public virtual DbSet AnagClientis { get; set; } + + public virtual DbSet AnagDevices { get; set; } + + public virtual DbSet AnagFasis { get; set; } + + public virtual DbSet AnagGiusts { get; set; } + + public virtual DbSet AnagGruppis { get; set; } + + public virtual DbSet AnagKeyValues { get; set; } + + public virtual DbSet AnagOraris { get; set; } + + public virtual DbSet AnagProgettis { get; set; } + + public virtual DbSet AnagraficaEventis { get; set; } + + public virtual DbSet AnagRuolis { get; set; } + + public virtual DbSet AnagTipoChecks { get; set; } + + public virtual DbSet AnagTipoTimbs { get; set; } + + public virtual DbSet CalendFesteFeries { get; set; } + + public virtual DbSet Configs { get; set; } + + public virtual DbSet Contatoris { get; set; } + + public virtual DbSet ControlloDefrags { get; set; } + + public virtual DbSet Dipendenti2Ruolis { get; set; } + + public virtual DbSet ElencoReports { get; set; } + + public virtual DbSet Funzionis { get; set; } + + public virtual DbSet Giustificativis { get; set; } + + public virtual DbSet ImportEgalteches { get; set; } + + public virtual DbSet ImportEgaltechFases { get; set; } + + public virtual DbSet ImportEgaltechNews { get; set; } + + public virtual DbSet ListValues { get; set; } + + public virtual DbSet LogAttivita { get; set; } + + public virtual DbSet LogUpdateDbs { get; set; } + + public virtual DbSet OreMensiliExports { get; set; } + + public virtual DbSet PeriodiLavs { get; set; } + + public virtual DbSet Permessi2Funziones { get; set; } + + public virtual DbSet Permessis { get; set; } + + public virtual DbSet RegAttivita { get; set; } + + public virtual DbSet RegAttivitaEgals { get; set; } + + public virtual DbSet RegAttivitaExpls { get; set; } + + public virtual DbSet RegistroEventis { get; set; } + + public virtual DbSet RilievoTemps { get; set; } + + public virtual DbSet Sottoscrizionis { get; set; } + + public virtual DbSet StoricoAnagFasis { get; set; } + + public virtual DbSet StoricoAnagProgettis { get; set; } + + public virtual DbSet TabWols { get; set; } + + public virtual DbSet Tallies { get; set; } + + public virtual DbSet TimbratureExpls { get; set; } + + public virtual DbSet TransizioneEventis { get; set; } +#endif + #region Public Properties - public virtual DbSet AnagClassiOraries { get; set; } - public virtual DbSet AnagClientis { get; set; } - public virtual DbSet AnagDevices { get; set; } - public virtual DbSet AnagFasis { get; set; } - public virtual DbSet AnagGiusts { get; set; } - public virtual DbSet AnagGruppis { get; set; } - public virtual DbSet AnagKeyValues { get; set; } - public virtual DbSet AnagOraris { get; set; } - public virtual DbSet AnagProgettis { get; set; } - public virtual DbSet AnagraficaEventis { get; set; } - public virtual DbSet AnagRuolis { get; set; } - public virtual DbSet AnagTipoChecks { get; set; } - public virtual DbSet AnagTipoTimbs { get; set; } - public virtual DbSet CalendFesteFeries { get; set; } - public virtual DbSet Configs { get; set; } - public virtual DbSet Contatoris { get; set; } - public virtual DbSet ControlloDefrags { get; set; } - public virtual DbSet Dipendenti2Ruolis { get; set; } - public virtual DbSet Dipendentis { get; set; } - public virtual DbSet ElencoReports { get; set; } - public virtual DbSet Funzionis { get; set; } - public virtual DbSet Giustificativis { get; set; } - public virtual DbSet ImportEgalteches { get; set; } - public virtual DbSet ImportEgaltechFases { get; set; } - public virtual DbSet ImportEgaltechNews { get; set; } - public virtual DbSet ListValues { get; set; } - public virtual DbSet LogAttivita { get; set; } - public virtual DbSet LogUpdateDbs { get; set; } - public virtual DbSet OreMensiliExports { get; set; } - public virtual DbSet PeriodiLavs { get; set; } - public virtual DbSet Permessi2Funziones { get; set; } - public virtual DbSet Permessis { get; set; } - public virtual DbSet RegAttivita { get; set; } - public virtual DbSet RegAttivitaEgals { get; set; } - public virtual DbSet RegAttivitaExpls { get; set; } - public virtual DbSet RegistroEventis { get; set; } - public virtual DbSet RilievoTemps { get; set; } - public virtual DbSet Sottoscrizionis { get; set; } - public virtual DbSet StoricoAnagFasis { get; set; } - public virtual DbSet StoricoAnagProgettis { get; set; } - public virtual DbSet TabWols { get; set; } - public virtual DbSet Tallies { get; set; } - public virtual DbSet TimbratureExpls { get; set; } - public virtual DbSet Timbratures { get; set; } - public virtual DbSet TransizioneEventis { get; set; } + public virtual DbSet DbSetCheckVc19 { get; set; } + public virtual DbSet DbSetDipendenti { get; set; } + + public virtual DbSet DbSetTimbrature { get; set; } #endregion Public Properties @@ -84,7 +155,15 @@ namespace GPW.Data { if (!optionsBuilder.IsConfigured) { - optionsBuilder.UseSqlServer("Server=SQLSTEAM;Database=GPW;Trusted_Connection=True;"); + string connString = _configuration.GetConnectionString("GPW.Data"); + if (!string.IsNullOrEmpty(connString)) + { + optionsBuilder.UseSqlServer(connString); + } + else + { + optionsBuilder.UseSqlServer("Server=SQLSTEAM;Database=GPW;Trusted_Connection=True;"); + } } } @@ -92,26 +171,27 @@ namespace GPW.Data { modelBuilder.HasAnnotation("Relational:Collation", "Latin1_General_CI_AS"); +#if false modelBuilder.Entity(entity => - { - entity.HasKey(e => e.CodClasse); + { + entity.HasKey(e => e.CodClasse); - entity.ToTable("AnagClassiOrarie"); + entity.ToTable("AnagClassiOrarie"); - entity.Property(e => e.CodClasse) - .HasMaxLength(10) - .HasColumnName("codClasse") - .HasComment("codice univoco"); + entity.Property(e => e.CodClasse) + .HasMaxLength(10) + .HasColumnName("codClasse") + .HasComment("codice univoco"); - entity.Property(e => e.DescrClasse) - .HasMaxLength(250) - .HasColumnName("descrClasse"); + entity.Property(e => e.DescrClasse) + .HasMaxLength(250) + .HasColumnName("descrClasse"); - entity.Property(e => e.Peso) - .HasColumnType("decimal(6, 3)") - .HasColumnName("peso") - .HasComment("peso (per calcolo ore \"produttive\")"); - }); + entity.Property(e => e.Peso) + .HasColumnType("decimal(6, 3)") + .HasColumnName("peso") + .HasComment("peso (per calcolo ore \"produttive\")"); + }); modelBuilder.Entity(entity => { @@ -625,140 +705,6 @@ namespace GPW.Data .HasColumnName("type_desc"); }); - modelBuilder.Entity(entity => - { - entity.HasKey(e => e.IdxDipendente); - - entity.ToTable("Dipendenti"); - - entity.Property(e => e.IdxDipendente).HasColumnName("idxDipendente"); - - entity.Property(e => e.Attivo) - .HasColumnName("attivo") - .HasDefaultValueSql("((1))"); - - entity.Property(e => e.AuthKey) - .IsRequired() - .HasMaxLength(50) - .HasColumnName("authKey") - .HasDefaultValueSql("('##########')"); - - entity.Property(e => e.Cf) - .IsRequired() - .HasMaxLength(16) - .HasColumnName("CF") - .HasDefaultValueSql("('0000000000000000')"); - - entity.Property(e => e.CodDipendenteExt) - .IsRequired() - .HasMaxLength(50) - .HasColumnName("codDipendenteExt") - .HasDefaultValueSql("('')") - .HasComment("nome/codice dipendente per sistema esterno da importare"); - - entity.Property(e => e.CodHw) - .IsRequired() - .HasMaxLength(50) - .HasColumnName("codHw") - .HasDefaultValueSql("('')"); - - entity.Property(e => e.CodOrario) - .HasMaxLength(50) - .HasColumnName("codOrario"); - - entity.Property(e => e.Cognome).HasMaxLength(50); - - entity.Property(e => e.DataAssunzione) - .HasColumnType("date") - .HasColumnName("dataAssunzione") - .HasDefaultValueSql("('1900-01-01')"); - - entity.Property(e => e.DataCessazione) - .HasColumnType("date") - .HasColumnName("dataCessazione") - .HasDefaultValueSql("('9999-12-31')"); - - entity.Property(e => e.DataNascita) - .HasColumnType("datetime") - .HasColumnName("dataNascita"); - - entity.Property(e => e.Dominio) - .IsRequired() - .HasMaxLength(50) - .HasColumnName("dominio") - .HasDefaultValueSql("('DOMINIO')"); - - entity.Property(e => e.Email) - .IsRequired() - .HasMaxLength(250) - .HasColumnName("email") - .HasDefaultValueSql("('')"); - - entity.Property(e => e.Gruppo) - .HasMaxLength(50) - .HasColumnName("gruppo") - .HasDefaultValueSql("('NA')"); - - entity.Property(e => e.LuogoNascita) - .HasMaxLength(50) - .HasColumnName("luogoNascita"); - - entity.Property(e => e.MailDay) - .HasColumnName("mailDay") - .HasDefaultValueSql("((0))"); - - entity.Property(e => e.MailLastOp) - .HasColumnName("mailLastOp") - .HasDefaultValueSql("((0))"); - - entity.Property(e => e.MailMonth) - .HasColumnName("mailMonth") - .HasDefaultValueSql("((0))"); - - entity.Property(e => e.MailWeek) - .HasColumnName("mailWeek") - .HasDefaultValueSql("((0))"); - - entity.Property(e => e.Matricola) - .HasMaxLength(50) - .HasColumnName("matricola"); - - entity.Property(e => e.NazNascita) - .HasMaxLength(50) - .HasColumnName("nazNascita"); - - entity.Property(e => e.Nome).HasMaxLength(50); - - entity.Property(e => e.NumAuth) - .HasColumnName("numAuth") - .HasDefaultValueSql("((0))") - .HasComment("numero di impieghi della authKey"); - - entity.Property(e => e.ProvNascita) - .HasMaxLength(50) - .HasColumnName("provNascita"); - - entity.Property(e => e.Utente) - .IsRequired() - .HasMaxLength(50) - .HasColumnName("utente") - .HasDefaultValueSql("('UTENTE')"); - - entity.Property(e => e.WolMac) - .HasMaxLength(50) - .HasColumnName("WOL_MAC"); - - entity.HasOne(d => d.CodOrarioNavigation) - .WithMany(p => p.Dipendentis) - .HasForeignKey(d => d.CodOrario) - .HasConstraintName("FK_Dipendenti_AnagOrari"); - - entity.HasOne(d => d.GruppoNavigation) - .WithMany(p => p.Dipendentis) - .HasForeignKey(d => d.Gruppo) - .HasConstraintName("FK_Dipendenti_AnagGruppi"); - }); - modelBuilder.Entity(entity => { entity.HasKey(e => new { e.IdxDipendente, e.CodRuolo }); @@ -1412,47 +1358,6 @@ namespace GPW.Data entity.ToTable("Tally"); }); - modelBuilder.Entity(entity => - { - entity.HasKey(e => new { e.IdxDipendente, e.DataOra }); - - entity.ToTable("Timbrature"); - - entity.HasIndex(e => new { e.IdxDipendente, e.Entrata }, "ix_Timbrature_IdxDip_Entrata"); - - entity.Property(e => e.IdxDipendente).HasColumnName("idxDipendente"); - - entity.Property(e => e.DataOra) - .HasColumnType("datetime") - .HasColumnName("dataOra"); - - entity.Property(e => e.Approv) - .HasDefaultValueSql("((0))") - .HasComment("Approvazioen timbratura (default true...)"); - - entity.Property(e => e.CodTipoTimb) - .HasMaxLength(10) - .HasDefaultValueSql("(N'BC')"); - - entity.Property(e => e.Entrata).HasColumnName("entrata"); - - entity.Property(e => e.Ipv4) - .HasMaxLength(15) - .HasColumnName("IPv4") - .HasDefaultValueSql("(N'0.0.0.0')"); - - entity.HasOne(d => d.CodTipoTimbNavigation) - .WithMany(p => p.Timbratures) - .HasForeignKey(d => d.CodTipoTimb) - .HasConstraintName("FK_Timbrature_AnagTipoTimb"); - - entity.HasOne(d => d.IdxDipendenteNavigation) - .WithMany(p => p.Timbratures) - .HasForeignKey(d => d.IdxDipendente) - .OnDelete(DeleteBehavior.ClientSetNull) - .HasConstraintName("FK_Timbrature_Dipendenti"); - }); - modelBuilder.Entity(entity => { entity.HasKey(e => new { e.DataLav, e.IdxDipendente }) @@ -1633,10 +1538,227 @@ namespace GPW.Data .HasForeignKey(d => d.IdxTipoEvento) .HasConstraintName("FK_TransizioneEventi_AnagraficaEventi"); }); +#endif + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.IdxCheck) + .HasName("PK_CheckC19"); + + entity.ToTable("CheckVC19"); + + entity.Property(e => e.IdxCheck).ValueGeneratedNever(); + + entity.Property(e => e.DtCheck) + .HasColumnType("datetime") + .HasColumnName("dtCheck") + .HasDefaultValueSql("(getdate())"); + + entity.Property(e => e.IdxDipendente).HasColumnName("idxDipendente"); + + entity.Property(e => e.Payload) + .IsRequired() + .HasMaxLength(500) + .HasColumnName("payload") + .HasDefaultValueSql("('')"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.IdxDipendente); + + entity.ToTable("Dipendenti"); + + entity.Property(e => e.IdxDipendente).HasColumnName("idxDipendente"); + + entity.Property(e => e.Attivo) + .HasColumnName("attivo") + .HasDefaultValueSql("((1))"); + + entity.Property(e => e.AuthKey) + .IsRequired() + .HasMaxLength(50) + .HasColumnName("authKey") + .HasDefaultValueSql("('##########')"); + + entity.Property(e => e.Cf) + .IsRequired() + .HasMaxLength(16) + .HasColumnName("CF") + .HasDefaultValueSql("('0000000000000000')"); + + entity.Property(e => e.CodDipendenteExt) + .IsRequired() + .HasMaxLength(50) + .HasColumnName("codDipendenteExt") + .HasDefaultValueSql("('')") + .HasComment("nome/codice dipendente per sistema esterno da importare"); + + entity.Property(e => e.CodHw) + .IsRequired() + .HasMaxLength(50) + .HasColumnName("codHw") + .HasDefaultValueSql("('')"); + + entity.Property(e => e.CodOrario) + .HasMaxLength(50) + .HasColumnName("codOrario"); + + entity.Property(e => e.Cognome).HasMaxLength(50); + + entity.Property(e => e.DataAssunzione) + .HasColumnType("date") + .HasColumnName("dataAssunzione") + .HasDefaultValueSql("('1900-01-01')"); + + entity.Property(e => e.DataCessazione) + .HasColumnType("date") + .HasColumnName("dataCessazione") + .HasDefaultValueSql("('9999-12-31')"); + + entity.Property(e => e.DataNascita) + .HasColumnType("datetime") + .HasColumnName("dataNascita"); + + entity.Property(e => e.Dominio) + .IsRequired() + .HasMaxLength(50) + .HasColumnName("dominio") + .HasDefaultValueSql("('DOMINIO')"); + + entity.Property(e => e.Email) + .IsRequired() + .HasMaxLength(250) + .HasColumnName("email") + .HasDefaultValueSql("('')"); + + entity.Property(e => e.Gruppo) + .HasMaxLength(50) + .HasColumnName("gruppo") + .HasDefaultValueSql("('NA')"); + + entity.Property(e => e.LuogoNascita) + .HasMaxLength(50) + .HasColumnName("luogoNascita"); + + entity.Property(e => e.MailDay) + .HasColumnName("mailDay") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.MailLastOp) + .HasColumnName("mailLastOp") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.MailMonth) + .HasColumnName("mailMonth") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.MailWeek) + .HasColumnName("mailWeek") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.Matricola) + .HasMaxLength(50) + .HasColumnName("matricola"); + + entity.Property(e => e.NazNascita) + .HasMaxLength(50) + .HasColumnName("nazNascita"); + + entity.Property(e => e.Nome).HasMaxLength(50); + + entity.Property(e => e.NumAuth) + .HasColumnName("numAuth") + .HasDefaultValueSql("((0))") + .HasComment("numero di impieghi della authKey"); + + entity.Property(e => e.ProvNascita) + .HasMaxLength(50) + .HasColumnName("provNascita"); + + entity.Property(e => e.Utente) + .IsRequired() + .HasMaxLength(50) + .HasColumnName("utente") + .HasDefaultValueSql("('UTENTE')"); + + entity.Property(e => e.WolMac) + .HasMaxLength(50) + .HasColumnName("WOL_MAC"); + + entity.HasOne(d => d.CodOrarioNavigation) + .WithMany(p => p.Dipendentis) + .HasForeignKey(d => d.CodOrario) + .HasConstraintName("FK_Dipendenti_AnagOrari"); + + entity.HasOne(d => d.GruppoNavigation) + .WithMany(p => p.Dipendentis) + .HasForeignKey(d => d.Gruppo) + .HasConstraintName("FK_Dipendenti_AnagGruppi"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => new { e.IdxDipendente, e.DataOra }); + + entity.ToTable("Timbrature"); + + entity.HasIndex(e => new { e.IdxDipendente, e.Entrata }, "ix_Timbrature_IdxDip_Entrata"); + + entity.Property(e => e.IdxDipendente).HasColumnName("idxDipendente"); + + entity.Property(e => e.DataOra) + .HasColumnType("datetime") + .HasColumnName("dataOra"); + + entity.Property(e => e.Approv) + .HasDefaultValueSql("((0))") + .HasComment("Approvazioen timbratura (default true...)"); + + entity.Property(e => e.CodTipoTimb) + .HasMaxLength(10) + .HasDefaultValueSql("(N'BC')"); + + entity.Property(e => e.Entrata).HasColumnName("entrata"); + + entity.Property(e => e.Ipv4) + .HasMaxLength(15) + .HasColumnName("IPv4") + .HasDefaultValueSql("(N'0.0.0.0')"); + + entity.HasOne(d => d.CodTipoTimbNavigation) + .WithMany(p => p.Timbratures) + .HasForeignKey(d => d.CodTipoTimb) + .HasConstraintName("FK_Timbrature_AnagTipoTimb"); + + entity.HasOne(d => d.IdxDipendenteNavigation) + .WithMany(p => p.Timbratures) + .HasForeignKey(d => d.IdxDipendente) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("FK_Timbrature_Dipendenti"); + }); OnModelCreatingPartial(modelBuilder); } #endregion Protected Methods + + #region Public Methods + + public void DbForceMigrate() + { + try + { + // se non ci fosse... crea o migra! + Database.Migrate(); + Log.Info("DbForceMigrate: done!"); + } + catch (Exception exc) + { + Log.Error(exc, "DbForceMigrate: Exception during context initialization 01"); + } + } + + #endregion Public Methods } } \ No newline at end of file