diff --git a/WebDoorCreator.Data/DbModels/OrderStatusViewModel.cs b/WebDoorCreator.Data/DbModels/OrderStatusViewModel.cs
index d1911bf..1108cec 100644
--- a/WebDoorCreator.Data/DbModels/OrderStatusViewModel.cs
+++ b/WebDoorCreator.Data/DbModels/OrderStatusViewModel.cs
@@ -14,7 +14,7 @@ namespace WebDoorCreator.Data.DbModels
///
/// View to retrieve data from multiple tables
///
- [Table("v_OrderStatus")]
+ //[Table("v_OrderStatus")]
public class OrderStatusViewModel
{
///
diff --git a/WebDoorCreator.Data/DbModels/UsersViewModel.cs b/WebDoorCreator.Data/DbModels/UsersViewModel.cs
index 64f91e5..9bad0f2 100644
--- a/WebDoorCreator.Data/DbModels/UsersViewModel.cs
+++ b/WebDoorCreator.Data/DbModels/UsersViewModel.cs
@@ -14,7 +14,7 @@ namespace WebDoorCreator.Data.DbModels
///
/// View to retrieve data from multiple tables
///
- [Table("v_UserRolesClaims")]
+ //[Table("v_UserRolesClaims")]
public class UsersViewModel
{
///
diff --git a/WebDoorCreator.Data/Migrations/WDCData/20230317080448_UserAndOrderStatusViews.Designer.cs b/WebDoorCreator.Data/Migrations/WDCData/20230317080448_UserAndOrderStatusViews.Designer.cs
new file mode 100644
index 0000000..b3bd3da
--- /dev/null
+++ b/WebDoorCreator.Data/Migrations/WDCData/20230317080448_UserAndOrderStatusViews.Designer.cs
@@ -0,0 +1,445 @@
+//
+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("20230317080448_UserAndOrderStatusViews")]
+ partial class UserAndOrderStatusViews
+ {
+ 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("DateMod")
+ .HasColumnType("datetime2");
+
+ b.Property("DoorDescript")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("DoorExtCode")
+ .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("UserIdMod")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("DoorId");
+
+ b.HasIndex("OrderId");
+
+ b.HasIndex("TypeId");
+
+ b.ToTable("Door");
+ });
+
+ 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.ListValues", b =>
+ {
+ b.Property("TableName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("FieldName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("label")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.Property("ordinal")
+ .HasColumnType("int");
+
+ b.Property("value")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)");
+
+ b.HasKey("TableName", "FieldName");
+
+ b.ToTable("ListValues");
+ });
+
+ 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.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.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/20230317080448_UserAndOrderStatusViews.cs b/WebDoorCreator.Data/Migrations/WDCData/20230317080448_UserAndOrderStatusViews.cs
new file mode 100644
index 0000000..d967682
--- /dev/null
+++ b/WebDoorCreator.Data/Migrations/WDCData/20230317080448_UserAndOrderStatusViews.cs
@@ -0,0 +1,35 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace WebDoorCreator.Data.Migrations.WDCData
+{
+ public partial class UserAndOrderStatusViews : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ // aggiunta views
+ addView(migrationBuilder, "UserView");
+ addView(migrationBuilder, "OrderStatusView");
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ // rimozione views
+ remView(migrationBuilder, "UserView");
+ remView(migrationBuilder, "OrderStatusView");
+ }
+
+ private void addView(MigrationBuilder migrationBuilder, string viewName)
+ {
+ string path = Path.Combine("SqlScripts", "View", $"{viewName}.sql");
+ string viewBody = File.ReadAllText(path);
+ migrationBuilder.Sql(viewBody);
+ }
+
+ private void remView(MigrationBuilder migrationBuilder, string viewName)
+ {
+ migrationBuilder.Sql($"exec('drop view dbo.{viewName}');");
+ }
+ }
+}
diff --git a/WebDoorCreator.Data/SqlScripts/View/OrderStatusView.sql b/WebDoorCreator.Data/SqlScripts/View/OrderStatusView.sql
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/WebDoorCreator.Data/SqlScripts/View/OrderStatusView.sql
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/WebDoorCreator.Data/SqlScripts/View/UserView.sql b/WebDoorCreator.Data/SqlScripts/View/UserView.sql
new file mode 100644
index 0000000..5f28270
--- /dev/null
+++ b/WebDoorCreator.Data/SqlScripts/View/UserView.sql
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/WebDoorCreator.Data/WebDoorCreator.Data.csproj b/WebDoorCreator.Data/WebDoorCreator.Data.csproj
index 66a6b55..df771e2 100644
--- a/WebDoorCreator.Data/WebDoorCreator.Data.csproj
+++ b/WebDoorCreator.Data/WebDoorCreator.Data.csproj
@@ -23,4 +23,8 @@
+
+
+
+