diff --git a/GPW.CORE.Data/DbModels/CheckVc19Model.cs b/GPW.CORE.Data/DbModels/CheckVc19Model.cs new file mode 100644 index 0000000..b9c7243 --- /dev/null +++ b/GPW.CORE.Data/DbModels/CheckVc19Model.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace GPW.CORE.Data.DbModels +{ + // + // This is here so CodeMaid doesn't reorganize this document + // + [Table("CheckVc19")] + public partial class CheckVc19Model + { + [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public int IdxCheckVc19 { get; set; } + public DateTime DtCheck { get; set; } = DateTime.Now; + public int IdxDipendente { get; set; } + public string Cognome { get; set; } = null!; + public string Nome { get; set; } = null!; + public DateTime Dob { get; set; } + public string Payload { get; set; } = null!; + + /// + /// Navigation property to Dipendente + /// + [ForeignKey("IdxDipendente")] + public virtual Dipendenti? DipNav { get; set; } + } +} diff --git a/GPW.CORE.Data/DbModels/Dipendenti.cs b/GPW.CORE.Data/DbModels/Dipendenti.cs new file mode 100644 index 0000000..01533af --- /dev/null +++ b/GPW.CORE.Data/DbModels/Dipendenti.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; + +namespace GPW.CORE.Data.DbModels +{ + public partial class Dipendenti + { + public Dipendenti() + { + RegAttivita = new HashSet(); + RilievoTemps = new HashSet(); + Timbratures = new HashSet(); + } + + public int IdxDipendente { get; set; } + public string? Matricola { get; set; } + public string Cf { get; set; } = null!; + public string? Cognome { get; set; } + public string? Nome { get; set; } + public DateTime? DataNascita { get; set; } + public string? LuogoNascita { get; set; } + public string? ProvNascita { get; set; } + public string? NazNascita { get; set; } + public string CodHw { get; set; } = null!; + public string? CodOrario { get; set; } + public bool? MailLastOp { get; set; } + public bool? MailDay { get; set; } + public bool? MailWeek { get; set; } + public bool? MailMonth { get; set; } + public string Email { get; set; } = null!; + public string AuthKey { get; set; } = null!; + /// + /// numero di impieghi della authKey + /// + public int? NumAuth { get; set; } + public string? WolMac { get; set; } + public string Dominio { get; set; } = null!; + public string Utente { get; set; } = null!; + /// + /// nome/codice dipendente per sistema esterno da importare + /// + public string CodDipendenteExt { get; set; } = null!; + public string? Gruppo { get; set; } + public DateTime? DataAssunzione { get; set; } + public DateTime? DataCessazione { get; set; } + public bool? Attivo { get; set; } + + public virtual ICollection RegAttivita { get; set; } + public virtual ICollection RilievoTemps { get; set; } + public virtual ICollection Timbratures { get; set; } + } +} diff --git a/GPW.CORE.Data/DbModels/RegAttivitum.cs b/GPW.CORE.Data/DbModels/RegAttivitum.cs new file mode 100644 index 0000000..bc0199d --- /dev/null +++ b/GPW.CORE.Data/DbModels/RegAttivitum.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; + +namespace GPW.CORE.Data.DbModels +{ + public partial class RegAttivitum + { + public int IdxRa { get; set; } + public int IdxDipendente { get; set; } + public int IdxFase { get; set; } + public DateTime Inizio { get; set; } + public DateTime Fine { get; set; } + public string? Descrizione { get; set; } + /// + /// Ore Attività - prima era ([dbo].[f_hourInterval]([inizio],[fine])) poi sostituita per performance + /// + public decimal? OreTot { get; set; } + public decimal? Importo { get; set; } + + public virtual Dipendenti IdxDipendenteNavigation { get; set; } = null!; + } +} diff --git a/GPW.CORE.Data/DbModels/RilievoTemp.cs b/GPW.CORE.Data/DbModels/RilievoTemp.cs new file mode 100644 index 0000000..fbf4d93 --- /dev/null +++ b/GPW.CORE.Data/DbModels/RilievoTemp.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; + +namespace GPW.CORE.Data.DbModels +{ + public partial class RilievoTemp + { + public int IdxDipendente { get; set; } + public DateTime DtRilievo { get; set; } + public decimal TempRil { get; set; } + + public virtual Dipendenti IdxDipendenteNavigation { get; set; } = null!; + } +} diff --git a/GPW.CORE.Data/DbModels/Timbrature.cs b/GPW.CORE.Data/DbModels/Timbrature.cs new file mode 100644 index 0000000..b326369 --- /dev/null +++ b/GPW.CORE.Data/DbModels/Timbrature.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; + +namespace GPW.CORE.Data.DbModels +{ + public partial class Timbrature + { + public DateTime DataOra { get; set; } + public int IdxDipendente { get; set; } + public bool? Entrata { get; set; } + public string? Ipv4 { get; set; } + public string? CodTipoTimb { get; set; } + /// + /// Approvazioen timbratura (default true...) + /// + public bool? Approv { get; set; } + + public virtual Dipendenti IdxDipendenteNavigation { get; set; } = null!; + } +} diff --git a/GPW.CORE.Data/GPW.CORE.Data.csproj b/GPW.CORE.Data/GPW.CORE.Data.csproj index 132c02c..d85ce3f 100644 --- a/GPW.CORE.Data/GPW.CORE.Data.csproj +++ b/GPW.CORE.Data/GPW.CORE.Data.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -6,4 +6,15 @@ enable + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + diff --git a/GPW.CORE.Data/GPWContext.cs b/GPW.CORE.Data/GPWContext.cs new file mode 100644 index 0000000..912d1cf --- /dev/null +++ b/GPW.CORE.Data/GPWContext.cs @@ -0,0 +1,345 @@ +using System; +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.Extensions.Configuration; +using NLog; + +namespace GPW.CORE.Data.DbModels +{ + public partial class GPWContext : DbContext + { + + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + + private IConfiguration _configuration = null!; + + public GPWContext() + { + } + + 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"); + } + } + + public virtual DbSet DbSetCheckVc19 { get; set; } = null!; + public virtual DbSet DbSetDipendenti { get; set; } = null!; + public virtual DbSet DbSetRegAttivita { get; set; } = null!; + public virtual DbSet DbSetRilievoTemp { get; set; } = null!; + public virtual DbSet DbSetTimbrature { get; set; } = null!; + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + if (!optionsBuilder.IsConfigured) + { + string connString = _configuration.GetConnectionString("NKC.DB"); + if (!string.IsNullOrEmpty(connString)) + { + optionsBuilder.UseSqlServer(connString); + } + else + { + optionsBuilder.UseSqlServer("Server=SQL2016DEV;Database=Sauder_NKC;Trusted_Connection=True;"); + optionsBuilder.UseSqlServer("Server=SQLSTEAM;Database=GPW;Trusted_Connection=True;"); + } + } + } + + 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"); + } + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.UseCollation("Latin1_General_CI_AS"); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.IdxCheckVc19) + .HasName("PK_CheckC19"); + + entity.ToTable("CheckVC19"); + + entity.Property(e => e.Cognome) + .HasMaxLength(100) + .HasColumnName("cognome") + .HasDefaultValueSql("('')"); + + entity.Property(e => e.Dob) + .HasColumnType("datetime") + .HasColumnName("DOB") + .HasDefaultValueSql("(getdate())"); + + entity.Property(e => e.DtCheck) + .HasColumnType("datetime") + .HasColumnName("dtCheck") + .HasDefaultValueSql("(getdate())"); + + entity.Property(e => e.IdxDipendente).HasColumnName("idxDipendente"); + + entity.Property(e => e.Nome) + .HasMaxLength(100) + .HasColumnName("nome") + .HasDefaultValueSql("('')"); + + entity.Property(e => e.Payload) + .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) + .HasMaxLength(50) + .HasColumnName("authKey") + .HasDefaultValueSql("('##########')"); + + entity.Property(e => e.Cf) + .HasMaxLength(16) + .HasColumnName("CF") + .HasDefaultValueSql("('0000000000000000')"); + + entity.Property(e => e.CodDipendenteExt) + .HasMaxLength(50) + .HasColumnName("codDipendenteExt") + .HasDefaultValueSql("('')") + .HasComment("nome/codice dipendente per sistema esterno da importare"); + + entity.Property(e => e.CodHw) + .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) + .HasMaxLength(50) + .HasColumnName("dominio") + .HasDefaultValueSql("('DOMINIO')"); + + entity.Property(e => e.Email) + .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) + .HasMaxLength(50) + .HasColumnName("utente") + .HasDefaultValueSql("('UTENTE')"); + + entity.Property(e => e.WolMac) + .HasMaxLength(50) + .HasColumnName("WOL_MAC"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.IdxRa); + + entity.HasIndex(e => e.Inizio, "ix_RA_inizio"); + + entity.HasIndex(e => new { e.IdxDipendente, e.Inizio }, "ix_idxDip"); + + entity.HasIndex(e => new { e.IdxFase, e.Inizio }, "ix_idxFase") + .HasFillFactor(100); + + entity.HasIndex(e => new { e.Inizio, e.IdxDipendente }, "ix_inizio"); + + entity.Property(e => e.IdxRa).HasColumnName("idxRA"); + + entity.Property(e => e.Descrizione) + .HasMaxLength(500) + .HasColumnName("descrizione"); + + entity.Property(e => e.Fine) + .HasColumnType("datetime") + .HasColumnName("fine"); + + entity.Property(e => e.IdxDipendente).HasColumnName("idxDipendente"); + + entity.Property(e => e.IdxFase).HasColumnName("idxFase"); + + entity.Property(e => e.Importo) + .HasColumnType("decimal(19, 4)") + .HasColumnName("importo") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.Inizio) + .HasColumnType("datetime") + .HasColumnName("inizio"); + + entity.Property(e => e.OreTot) + .HasColumnType("decimal(19, 4)") + .HasColumnName("oreTot") + .HasComputedColumnSql("(CONVERT([decimal](19,4),CONVERT([decimal](19,4),datediff(minute,isnull([inizio],'19000101'),isnull([fine],'19000101')),(0))/(60),(0)))", false) + .HasComment("Ore Attività - prima era ([dbo].[f_hourInterval]([inizio],[fine])) poi sostituita per performance"); + + entity.HasOne(d => d.IdxDipendenteNavigation) + .WithMany(p => p.RegAttivita) + .HasForeignKey(d => d.IdxDipendente) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("FK_RegAttivita_Dipendenti"); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => new { e.IdxDipendente, e.DtRilievo }); + + entity.ToTable("RilievoTemp"); + + entity.Property(e => e.IdxDipendente).HasColumnName("idxDipendente"); + + entity.Property(e => e.DtRilievo) + .HasColumnType("datetime") + .HasColumnName("dtRilievo"); + + entity.Property(e => e.TempRil) + .HasColumnType("decimal(9, 3)") + .HasColumnName("tempRil"); + + entity.HasOne(d => d.IdxDipendenteNavigation) + .WithMany(p => p.RilievoTemps) + .HasForeignKey(d => d.IdxDipendente) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("FK_RilievoTemp_Dipendenti"); + }); + + 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.IdxDipendenteNavigation) + .WithMany(p => p.Timbratures) + .HasForeignKey(d => d.IdxDipendente) + .OnDelete(DeleteBehavior.ClientSetNull) + .HasConstraintName("FK_Timbrature_Dipendenti"); + }); + + OnModelCreatingPartial(modelBuilder); + } + + partial void OnModelCreatingPartial(ModelBuilder modelBuilder); + } +}