diff --git a/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs b/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs
index 673efe9..5172253 100644
--- a/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs
+++ b/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs
@@ -3,8 +3,11 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using NLog;
using System.Collections.Generic;
+using System.ComponentModel.Design;
+using System.Data;
using WebDoorCreator.Data.DbModels;
using WebDoorCreator.Data.DTO;
+using static WebDoorCreator.Core.Enum;
namespace WebDoorCreator.Data.Controllers
{
@@ -676,8 +679,8 @@ namespace WebDoorCreator.Data.Controllers
try
{
dbCtx
- .Database
- .ExecuteSqlRaw("EXEC man.[stp_TruncTables]");
+ .Database
+ .ExecuteSqlRaw("EXEC man.[stp_TruncTables]");
dbResult = true;
}
@@ -836,55 +839,34 @@ namespace WebDoorCreator.Data.Controllers
///
/// Aggiunta di un nuovo set di lemmi
///
- ///
+ ///
///
- public async Task VocLemmaInsert(List newVocLemma)
+ public async Task VocLemmaInsert(List listNewTerms)
{
bool fatto = false;
- List list2Ins = new List();
- List list2Upd = new List();
using (WDCDataContext localDbCtx = new WDCDataContext(_configuration))
{
try
{
- var lisKey = localDbCtx
- .DbSetVocabulary
- .ToList();
-
- foreach (var item in newVocLemma)
- {
- var trovato = lisKey.Where(x => x.Lingua == item.Lingua && x.Lemma == item.Lemma).FirstOrDefault();
-
- if (trovato == null)
- {
- list2Ins.Add(item);
- }
- else
- {
- if (trovato.Traduzione != item.Traduzione)
- {
- list2Upd.Add(item);
- }
- }
- }
-
- //aggiungo i mancanti
+ // stored di reset vocabolario
+ var storedRes = localDbCtx
+ .Database
+ .ExecuteSqlRaw("exec dbo.stp_Voc_Prepare");
+ // import massivo dati in tab temp
localDbCtx
- .DbSetVocabulary
- .AddRange(list2Ins);
+ .DbSetVocabularyTemp
+ .AddRange(listNewTerms);
+
+ localDbCtx.SaveChanges();
+
+
+ // stored di merge dati in vocabolario
+ storedRes = localDbCtx
+ .Database
+ .ExecuteSqlRaw("exec dbo.stp_Voc_Import");
- foreach (var item in list2Upd)
- {
- var trovato = newVocLemma.Where(x => x.Lingua == item.Lingua && x.Lemma == item.Lemma).FirstOrDefault();
- if (trovato != null)
- {
- trovato.Traduzione = item.Traduzione;
- localDbCtx.Entry(trovato).State = EntityState.Modified;
- }
- }
- await localDbCtx.SaveChangesAsync();
fatto = true;
}
catch (Exception exc)
diff --git a/WebDoorCreator.Data/Migrations/WDCData/20230403140917_VocabularySetup.Designer.cs b/WebDoorCreator.Data/Migrations/WDCData/20230403140917_VocabularySetup.Designer.cs
new file mode 100644
index 0000000..b430324
--- /dev/null
+++ b/WebDoorCreator.Data/Migrations/WDCData/20230403140917_VocabularySetup.Designer.cs
@@ -0,0 +1,763 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using WebDoorCreator.Data;
+
+#nullable disable
+
+namespace WebDoorCreator.Data.Migrations.WDCData
+{
+ [DbContext(typeof(WDCDataContext))]
+ [Migration("20230403140917_VocabularySetup")]
+ partial class VocabularySetup
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .UseCollation("Latin1_General_CI_AS")
+ .HasAnnotation("ProductVersion", "6.0.14")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.AspNetRoles", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("ConcurrencyStamp")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("NormalizedName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("AspNetRoles", null, t => t.ExcludeFromMigrations());
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.AspNetUserRoles", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("RoleId")
+ .HasColumnType("nvarchar(450)");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetUserRoles", null, t => t.ExcludeFromMigrations());
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.AspNetUsers", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("AccessFailedCount")
+ .HasColumnType("int");
+
+ b.Property("ConcurrencyStamp")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("EmailConfirmed")
+ .HasColumnType("bit");
+
+ b.Property("LockoutEnabled")
+ .HasColumnType("bit");
+
+ b.Property("LockoutEnd")
+ .HasColumnType("datetimeoffset");
+
+ b.Property("NormalizedEmail")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("NormalizedUserName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PasswordHash")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PhoneNumber")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PhoneNumberConfirmed")
+ .HasColumnType("bit");
+
+ b.Property("SecurityStamp")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TwoFactorEnabled")
+ .HasColumnType("bit");
+
+ b.Property("UserName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("AspNetUsers", null, t => t.ExcludeFromMigrations());
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.CompanyModel", b =>
+ {
+ b.Property("CompanyId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("CompanyId"), 1L, 1);
+
+ b.Property("Address")
+ .IsRequired()
+ .HasMaxLength(250)
+ .HasColumnType("nvarchar(250)");
+
+ b.Property("City")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("CompanyExtCode")
+ .IsRequired()
+ .HasMaxLength(250)
+ .HasColumnType("nvarchar(250)");
+
+ b.Property("CompanyName")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("CompanyToken")
+ .IsRequired()
+ .HasMaxLength(150)
+ .HasColumnType("nvarchar(150)");
+
+ b.Property("PrivateNote")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)");
+
+ b.Property("State")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("VAT")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ZipCode")
+ .HasColumnType("int");
+
+ b.HasKey("CompanyId");
+
+ b.ToTable("Company");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorModel", b =>
+ {
+ b.Property("DoorId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DoorId"), 1L, 1);
+
+ b.Property("DateIns")
+ .HasColumnType("datetime2");
+
+ b.Property("DateLockExpiry")
+ .HasColumnType("datetime2");
+
+ b.Property("DateMod")
+ .HasColumnType("datetime2");
+
+ b.Property("DoorDescript")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("DoorExtCode")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MeasureUnit")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("OrderId")
+ .HasColumnType("int");
+
+ b.Property("Quantity")
+ .HasColumnType("int");
+
+ b.Property("TypeId")
+ .HasColumnType("int");
+
+ b.Property("UnitCost")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("UserIdIns")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserIdLock")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserIdMod")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("DoorId");
+
+ b.HasIndex("OrderId");
+
+ b.HasIndex("TypeId");
+
+ b.ToTable("Door");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorOpModel", b =>
+ {
+ b.Property("DoorOpId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DoorOpId"), 1L, 1);
+
+ b.Property("DateIns")
+ .HasColumnType("datetime2");
+
+ b.Property("DateMod")
+ .HasColumnType("datetime2");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("DoorId")
+ .HasColumnType("int");
+
+ b.Property("DoorOpTypId")
+ .HasColumnType("int");
+
+ b.Property("JsoncConfigVal")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserIdIns")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserIdMod")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("DoorOpId");
+
+ b.HasIndex("DoorId");
+
+ b.HasIndex("DoorOpTypId");
+
+ b.ToTable("DoorOp");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorOpTypeModel", b =>
+ {
+ b.Property("DoorOpTypId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DoorOpTypId"), 1L, 1);
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("DisplayUrl")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("DoorOpIdPathFromPatriarch")
+ .HasColumnType("hierarchyid");
+
+ b.Property("ExtDescript")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ExtOpCode")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("FPath")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("HasHw")
+ .HasColumnType("bit");
+
+ b.Property("HwCode")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("HwDescription")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("IsConcrete")
+ .HasColumnType("bit");
+
+ b.Property("IsDefault")
+ .HasColumnType("bit");
+
+ b.Property("JsoncConfig")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("MaxAllowed")
+ .HasColumnType("int");
+
+ b.Property("OpCode")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ParentDoorOpId")
+ .HasColumnType("int");
+
+ b.Property("Rev")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("ValidFrom")
+ .HasColumnType("datetime2");
+
+ b.Property("ValidUntil")
+ .HasColumnType("datetime2");
+
+ b.HasKey("DoorOpTypId");
+
+ b.ToTable("DoorOpType");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorTypeModel", b =>
+ {
+ b.Property("TypeId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("TypeId"), 1L, 1);
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("TypeCode")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("TypeId");
+
+ b.ToTable("DoorType");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.GraphicParamsModel", b =>
+ {
+ b.Property("GraphicParamId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("GraphicParamId"), 1L, 1);
+
+ b.Property("compoId")
+ .HasColumnType("int");
+
+ b.Property("graphicParamAlias")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("graphicParamDefaultVal")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("graphicParamKey")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("graphicParamName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("graphicParamType")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("graphicParamsN")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("GraphicParamId");
+
+ b.ToTable("GraphicParams");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.HardwareModel", b =>
+ {
+ b.Property("HardwareId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("HardwareId"), 1L, 1);
+
+ b.Property("compoAlias")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("compoLayerName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("compoName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("compoTemplateIsActive")
+ .HasColumnType("bit");
+
+ b.HasKey("HardwareId");
+
+ b.ToTable("Hardware");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.ListValuesModel", b =>
+ {
+ b.Property("TableName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("FieldName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("value")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("label")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ordinal")
+ .HasColumnType("int");
+
+ b.HasKey("TableName", "FieldName", "value");
+
+ b.ToTable("ListValues");
+
+ b.HasData(
+ new
+ {
+ TableName = "Opening",
+ FieldName = "Swing",
+ value = "LH",
+ label = "Left Handed",
+ ordinal = 1
+ },
+ new
+ {
+ TableName = "Opening",
+ FieldName = "Swing",
+ value = "RH",
+ label = "Right Handed",
+ ordinal = 2
+ },
+ new
+ {
+ TableName = "Opening",
+ FieldName = "Swing",
+ value = "LHR",
+ label = "Left Handed Reverse",
+ ordinal = 3
+ },
+ new
+ {
+ TableName = "Opening",
+ FieldName = "Swing",
+ value = "RHR",
+ label = "Right Handed Reverse",
+ ordinal = 4
+ },
+ new
+ {
+ TableName = "Edges",
+ FieldName = "EdgeType",
+ value = "BV",
+ label = "Bevel",
+ ordinal = 1
+ },
+ new
+ {
+ TableName = "Edges",
+ FieldName = "EdgeType",
+ value = "SQ",
+ label = "Squared",
+ ordinal = 2
+ },
+ new
+ {
+ TableName = "Edges",
+ FieldName = "EdgeType",
+ value = "1B",
+ label = "Bull Nose 1",
+ ordinal = 3
+ });
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.OrderModel", b =>
+ {
+ b.Property("OrderId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("OrderId"), 1L, 1);
+
+ b.Property("CompanyId")
+ .HasColumnType("int");
+
+ b.Property("DateIns")
+ .HasColumnType("datetime2");
+
+ b.Property("DateMod")
+ .HasColumnType("datetime2");
+
+ b.Property("OrderDescript")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("OrderExtCode")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Status")
+ .HasColumnType("int");
+
+ b.Property("UserIdIns")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserIdMod")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("OrderId");
+
+ b.HasIndex("CompanyId");
+
+ b.ToTable("Order");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.OrderStatusViewModel", b =>
+ {
+ b.Property("OrderId")
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("OrderId"), 1L, 1);
+
+ b.Property("CompanyId")
+ .HasColumnType("int");
+
+ b.Property("DateIns")
+ .HasColumnType("datetime2");
+
+ b.Property("NumDoors")
+ .HasColumnType("int");
+
+ b.Property("NumType")
+ .HasColumnType("int");
+
+ b.Property("OrderDescript")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("OrderExtCode")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("OrderStatus")
+ .HasColumnType("int");
+
+ b.Property("TotCost")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("UserIdIns")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserIdMod")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("OrderId");
+
+ b.ToView("OrderStatusViewModel");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.UsersViewModel", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("RoleId")
+ .HasColumnType("nvarchar(450)");
+
+ b.Property("Email")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("RoleName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("UserName")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.ToView("UsersViewModel");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.VocabularyModel", b =>
+ {
+ b.Property("Lingua")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("Lemma")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Traduzione")
+ .IsRequired()
+ .HasMaxLength(250)
+ .HasColumnType("nvarchar(250)");
+
+ b.HasKey("Lingua", "Lemma");
+
+ b.ToTable("Vocabulary");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.VocabularyTempModel", b =>
+ {
+ b.Property("Lingua")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("Lemma")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Traduzione")
+ .IsRequired()
+ .HasMaxLength(250)
+ .HasColumnType("nvarchar(250)");
+
+ b.HasKey("Lingua", "Lemma");
+
+ b.ToTable("VocabularyTemp");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.AspNetUserRoles", b =>
+ {
+ b.HasOne("WebDoorCreator.Data.DbModels.AspNetRoles", "RolesNav")
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("WebDoorCreator.Data.DbModels.AspNetUsers", "UsersNav")
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("RolesNav");
+
+ b.Navigation("UsersNav");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorModel", b =>
+ {
+ b.HasOne("WebDoorCreator.Data.DbModels.OrderModel", "OrderNav")
+ .WithMany()
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("WebDoorCreator.Data.DbModels.DoorTypeModel", "TypeNav")
+ .WithMany()
+ .HasForeignKey("TypeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("OrderNav");
+
+ b.Navigation("TypeNav");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorOpModel", b =>
+ {
+ b.HasOne("WebDoorCreator.Data.DbModels.DoorModel", "DoorNav")
+ .WithMany()
+ .HasForeignKey("DoorId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("WebDoorCreator.Data.DbModels.DoorOpTypeModel", "DoorOpTypeNav")
+ .WithMany()
+ .HasForeignKey("DoorOpTypId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("DoorNav");
+
+ b.Navigation("DoorOpTypeNav");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.OrderModel", b =>
+ {
+ b.HasOne("WebDoorCreator.Data.DbModels.CompanyModel", "CompanyNav")
+ .WithMany()
+ .HasForeignKey("CompanyId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("CompanyNav");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/WebDoorCreator.Data/Migrations/WDCData/20230403140917_VocabularySetup.cs b/WebDoorCreator.Data/Migrations/WDCData/20230403140917_VocabularySetup.cs
new file mode 100644
index 0000000..763bafa
--- /dev/null
+++ b/WebDoorCreator.Data/Migrations/WDCData/20230403140917_VocabularySetup.cs
@@ -0,0 +1,66 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace WebDoorCreator.Data.Migrations.WDCData
+{
+ public partial class VocabularySetup : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Vocabulary",
+ columns: table => new
+ {
+ Lingua = table.Column(type: "nvarchar(5)", maxLength: 5, nullable: false),
+ Lemma = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false),
+ Traduzione = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Vocabulary", x => new { x.Lingua, x.Lemma });
+ });
+
+ migrationBuilder.CreateTable(
+ name: "VocabularyTemp",
+ columns: table => new
+ {
+ Lingua = table.Column(type: "nvarchar(5)", maxLength: 5, nullable: false),
+ Lemma = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: false),
+ Traduzione = table.Column(type: "nvarchar(250)", maxLength: 250, nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_VocabularyTemp", x => new { x.Lingua, x.Lemma });
+ });
+
+
+ addStored(migrationBuilder, "stp_Voc_Prepare");
+ addStored(migrationBuilder, "stp_Voc_Import");
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "Vocabulary");
+
+ migrationBuilder.DropTable(
+ name: "VocabularyTemp");
+
+ remStored(migrationBuilder, "stp_Voc_Prepare");
+ remStored(migrationBuilder, "stp_Voc_Import");
+ }
+
+ private void addStored(MigrationBuilder migrationBuilder, string viewName)
+ {
+ string path = Path.Combine("SqlScripts", "Stored", $"{viewName}.sql");
+ string viewBody = File.ReadAllText(path);
+ migrationBuilder.Sql(viewBody);
+ }
+
+ private void remStored(MigrationBuilder migrationBuilder, string viewName)
+ {
+ migrationBuilder.Sql($"exec('DROP PROCEDURE dbo.{viewName}');");
+ }
+ }
+}
diff --git a/WebDoorCreator.Data/Migrations/WDCData/WDCDataContextModelSnapshot.cs b/WebDoorCreator.Data/Migrations/WDCData/WDCDataContextModelSnapshot.cs
index 432fc82..65a23f8 100644
--- a/WebDoorCreator.Data/Migrations/WDCData/WDCDataContextModelSnapshot.cs
+++ b/WebDoorCreator.Data/Migrations/WDCData/WDCDataContextModelSnapshot.cs
@@ -174,7 +174,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.HasKey("CompanyId");
- b.ToTable("Company", (string)null);
+ b.ToTable("Company");
});
modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorModel", b =>
@@ -236,7 +236,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.HasIndex("TypeId");
- b.ToTable("Door", (string)null);
+ b.ToTable("Door");
});
modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorOpModel", b =>
@@ -281,7 +281,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.HasIndex("DoorOpTypId");
- b.ToTable("DoorOp", (string)null);
+ b.ToTable("DoorOp");
});
modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorOpTypeModel", b =>
@@ -358,7 +358,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.HasKey("DoorOpTypId");
- b.ToTable("DoorOpType", (string)null);
+ b.ToTable("DoorOpType");
});
modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorTypeModel", b =>
@@ -379,7 +379,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.HasKey("TypeId");
- b.ToTable("DoorType", (string)null);
+ b.ToTable("DoorType");
});
modelBuilder.Entity("WebDoorCreator.Data.DbModels.GraphicParamsModel", b =>
@@ -419,7 +419,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.HasKey("GraphicParamId");
- b.ToTable("GraphicParams", (string)null);
+ b.ToTable("GraphicParams");
});
modelBuilder.Entity("WebDoorCreator.Data.DbModels.HardwareModel", b =>
@@ -447,7 +447,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.HasKey("HardwareId");
- b.ToTable("Hardware", (string)null);
+ b.ToTable("Hardware");
});
modelBuilder.Entity("WebDoorCreator.Data.DbModels.ListValuesModel", b =>
@@ -473,7 +473,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.HasKey("TableName", "FieldName", "value");
- b.ToTable("ListValues", (string)null);
+ b.ToTable("ListValues");
b.HasData(
new
@@ -574,7 +574,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.HasIndex("CompanyId");
- b.ToTable("Order", (string)null);
+ b.ToTable("Order");
});
modelBuilder.Entity("WebDoorCreator.Data.DbModels.OrderStatusViewModel", b =>
@@ -648,6 +648,46 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.ToView("UsersViewModel");
});
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.VocabularyModel", b =>
+ {
+ b.Property("Lingua")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("Lemma")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Traduzione")
+ .IsRequired()
+ .HasMaxLength(250)
+ .HasColumnType("nvarchar(250)");
+
+ b.HasKey("Lingua", "Lemma");
+
+ b.ToTable("Vocabulary");
+ });
+
+ modelBuilder.Entity("WebDoorCreator.Data.DbModels.VocabularyTempModel", b =>
+ {
+ b.Property("Lingua")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)");
+
+ b.Property("Lemma")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("Traduzione")
+ .IsRequired()
+ .HasMaxLength(250)
+ .HasColumnType("nvarchar(250)");
+
+ b.HasKey("Lingua", "Lemma");
+
+ b.ToTable("VocabularyTemp");
+ });
+
modelBuilder.Entity("WebDoorCreator.Data.DbModels.AspNetUserRoles", b =>
{
b.HasOne("WebDoorCreator.Data.DbModels.AspNetRoles", "RolesNav")
diff --git a/WebDoorCreator.Data/SqlScripts/Stored/stp_Voc_Import.sql b/WebDoorCreator.Data/SqlScripts/Stored/stp_Voc_Import.sql
new file mode 100644
index 0000000..4dce251
--- /dev/null
+++ b/WebDoorCreator.Data/SqlScripts/Stored/stp_Voc_Import.sql
@@ -0,0 +1,22 @@
+SET ANSI_NULLS ON
+GO
+SET QUOTED_IDENTIFIER ON
+GO
+-- =============================================
+-- Author: S.E.L.
+-- Create date: 2023.04.03
+-- Description: Esecuzione preparazione tab temp x import vocabolario
+-- =============================================
+ALTER PROCEDURE [dbo].[stp_Voc_Prepare]
+AS
+BEGIN
+ SET NOCOUNT ON;
+
+ BEGIN tran
+
+ -- effettua preparazione tab appoggio
+ TRUNCATE TABLE VocabularyTemp
+
+ COMMIT tran
+
+END
\ No newline at end of file
diff --git a/WebDoorCreator.Data/SqlScripts/Stored/stp_Voc_Prepare.sql b/WebDoorCreator.Data/SqlScripts/Stored/stp_Voc_Prepare.sql
new file mode 100644
index 0000000..af69d73
--- /dev/null
+++ b/WebDoorCreator.Data/SqlScripts/Stored/stp_Voc_Prepare.sql
@@ -0,0 +1,29 @@
+SET ANSI_NULLS ON
+GO
+SET QUOTED_IDENTIFIER ON
+GO
+-- =============================================
+-- Author: S.E.L.
+-- Create date: 2023.04.03
+-- Description: Esecuzione upsert vocabolario
+-- =============================================
+ALTER PROCEDURE [dbo].[stp_Voc_Import]
+AS
+BEGIN
+ SET NOCOUNT ON;
+
+ BEGIN tran
+
+ -- effettua merge dati vocabolario
+ MERGE Vocabulary as tgt
+ USING (SELECT Lingua, Lemma, Traduzione FROM VocabularyTemp) as src
+ ON tgt.Lemma = src.Lemma AND tgt.Lingua = src.Lingua
+ WHEN MATCHED THEN
+ UPDATE SET Traduzione = Traduzione
+ WHEN NOT MATCHED THEN
+ INSERT (Lingua, Lemma, Traduzione)
+ VALUES (Lingua, Lemma, Traduzione);
+
+ COMMIT tran
+
+END
\ No newline at end of file