diff --git a/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs b/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs index e97a380..c20c453 100644 --- a/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs +++ b/WebDoorCreator.Data/Controllers/WebDoorCreatorController.cs @@ -733,7 +733,7 @@ namespace WebDoorCreator.Data.Controllers currRec.Quantity = addEditRec.Quantity; currRec.DoorExtCode = addEditRec.DoorExtCode; currRec.DoorDescript = addEditRec.DoorDescript; - currRec.DoorIdParent = addEditRec.DoorIdParent; + currRec.ParentId = addEditRec.ParentId; localDbCtx.Entry(currRec).State = EntityState.Modified; } else //if is null add the record as new in the table diff --git a/WebDoorCreator.Data/DbModels/DoorModel.cs b/WebDoorCreator.Data/DbModels/DoorModel.cs index 1e5f472..8c77093 100644 --- a/WebDoorCreator.Data/DbModels/DoorModel.cs +++ b/WebDoorCreator.Data/DbModels/DoorModel.cs @@ -22,6 +22,11 @@ namespace WebDoorCreator.Data.DbModels [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int DoorId { get; set; } + /// + /// Parent element ID + /// + public int ParentId { get; set; } + /// /// Ordine cui è associata la porta /// @@ -32,11 +37,6 @@ namespace WebDoorCreator.Data.DbModels /// public string MeasureUnit { get; set; } = ""; - /// - /// Door's Type - /// - public int DoorIdParent { get; set; } = 0; - /// /// Codice esterno x riferimento (es ERP) /// @@ -102,7 +102,7 @@ namespace WebDoorCreator.Data.DbModels { MeasureUnit = MeasureUnit, OrderId = OrderId, - DoorIdParent = DoorIdParent, + ParentId = ParentId, DoorExtCode = DoorExtCode, DateIns = adesso, UserIdIns = userId, diff --git a/WebDoorCreator.Data/DbModels/DoorOpTypeModel.cs b/WebDoorCreator.Data/DbModels/DoorOpTypeModel.cs index f9d0081..51bfc41 100644 --- a/WebDoorCreator.Data/DbModels/DoorOpTypeModel.cs +++ b/WebDoorCreator.Data/DbModels/DoorOpTypeModel.cs @@ -21,6 +21,11 @@ namespace WebDoorCreator.Data.DbModels [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int DoorOpTypId { get; set; } + /// + /// Indica Id del parent: se 0 sono root, altrimenti indica il type parent + /// + public int ParentId { get; set; } = 0; + /// /// Codice univoco dell'operazione da svolgere (calcolato, idealmente 4 char da 36 val 0..Z) /// @@ -67,16 +72,6 @@ namespace WebDoorCreator.Data.DbModels /// public string FPath { get; set; } = ""; - /// - /// Idx univoco dell'elemento parent (se 0 = root) - /// - public int ParentDoorOpId { get; set; } = 0; - - ///// - ///// Idx univoco dell'elemento parent (se 0 = root) - ///// - //public HierarchyId? DoorOpIdPathFromPatriarch { get; set; } - /// /// Unit cost for the door /// diff --git a/WebDoorCreator.Data/DbModels/OrderStatusViewModel.cs b/WebDoorCreator.Data/DbModels/OrderStatusViewModel.cs index 7c3fd85..bbb95b4 100644 --- a/WebDoorCreator.Data/DbModels/OrderStatusViewModel.cs +++ b/WebDoorCreator.Data/DbModels/OrderStatusViewModel.cs @@ -14,7 +14,6 @@ namespace WebDoorCreator.Data.DbModels /// /// View to retrieve data from multiple tables /// - //[Table("v_OrderStatus")] public class OrderStatusViewModel { /// diff --git a/WebDoorCreator.Data/DbModels/PrtRepOrderModel.cs b/WebDoorCreator.Data/DbModels/PrtRepOrderModel.cs index 0883d47..cf03473 100644 --- a/WebDoorCreator.Data/DbModels/PrtRepOrderModel.cs +++ b/WebDoorCreator.Data/DbModels/PrtRepOrderModel.cs @@ -90,12 +90,15 @@ namespace WebDoorCreator.Data.DbModels /// public string VAT { get; set; } = ""; + /// + /// Current Door ID + /// public int DoorId { get; set; } /// - /// Door's Type + /// Door's parent ID /// - public int TypeId { get; set; } = 0; + public int ParentId { get; set; } = 0; /// /// Codice esterno x riferimento (es ERP) diff --git a/WebDoorCreator.Data/Migrations/WDCData/20230606081147_repFixTypeId.Designer.cs b/WebDoorCreator.Data/Migrations/WDCData/20230606081147_repFixTypeId.Designer.cs new file mode 100644 index 0000000..a0289ed --- /dev/null +++ b/WebDoorCreator.Data/Migrations/WDCData/20230606081147_repFixTypeId.Designer.cs @@ -0,0 +1,1055 @@ +// +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("20230606081147_repFixTypeId")] + partial class repFixTypeId + { + 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.ConfigModel", b => + { + b.Property("chiave") + .HasColumnType("nvarchar(450)"); + + b.Property("note") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("valore") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("valoreStd") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("chiave"); + + b.ToTable("Config"); + }); + + 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("ParentId") + .HasColumnType("int"); + + b.Property("Quantity") + .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.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("DtConfirm") + .HasColumnType("datetime2"); + + b.Property("JsoncActVal") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("JsoncConfigVal") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ObjectId") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserIdIns") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserIdMod") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("userConfirm") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("DoorOpId"); + + b.HasIndex("DoorId"); + + 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("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("MaxAllowed") + .HasColumnType("int"); + + b.Property("OpCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ParentId") + .HasColumnType("int"); + + b.Property("Rev") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UnitCost") + .HasColumnType("decimal(18,2)"); + + b.Property("ValidFrom") + .HasColumnType("datetime2"); + + b.Property("ValidUntil") + .HasColumnType("datetime2"); + + b.HasKey("DoorOpTypId"); + + b.ToTable("DoorOpType"); + }); + + modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorOpTypeTempModel", 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("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("MaxAllowed") + .HasColumnType("int"); + + b.Property("OpCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ParentDoorOpId") + .HasColumnType("int"); + + b.Property("Rev") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UnitCost") + .HasColumnType("decimal(18,2)"); + + b.Property("ValidFrom") + .HasColumnType("datetime2"); + + b.Property("ValidUntil") + .HasColumnType("datetime2"); + + b.HasKey("DoorOpTypId"); + + b.ToTable("DoorOpTypeTemp"); + }); + + 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.LanguageModel", b => + { + b.Property("CodLingua") + .HasMaxLength(5) + .HasColumnType("nvarchar(5)"); + + b.Property("DescrizioneLingua") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("CodLingua"); + + b.ToTable("Languages"); + + b.HasData( + new + { + CodLingua = "EN", + DescrizioneLingua = "English" + }, + new + { + CodLingua = "IT", + DescrizioneLingua = "Italiano" + }); + }); + + 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("DefaultVal") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InputType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Label") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Ordinal") + .HasColumnType("int"); + + b.Property("isSerializable") + .HasMaxLength(5) + .HasColumnType("bit"); + + b.HasKey("TableName", "FieldName", "Value"); + + b.ToTable("ListValues"); + + b.HasData( + new + { + TableName = "Opening", + FieldName = "Swing", + Value = "LH", + Label = "Left Handed", + Ordinal = 1, + isSerializable = false + }, + new + { + TableName = "Opening", + FieldName = "Swing", + Value = "RH", + Label = "Right Handed", + Ordinal = 2, + isSerializable = false + }, + new + { + TableName = "Opening", + FieldName = "Swing", + Value = "LHR", + Label = "Left Handed Reverse", + Ordinal = 3, + isSerializable = false + }, + new + { + TableName = "Opening", + FieldName = "Swing", + Value = "RHR", + Label = "Right Handed Reverse", + Ordinal = 4, + isSerializable = false + }, + new + { + TableName = "Edges", + FieldName = "EdgeType", + Value = "BV", + Label = "Bevel", + Ordinal = 1, + isSerializable = false + }, + new + { + TableName = "Edges", + FieldName = "EdgeType", + Value = "SQ", + Label = "Squared", + Ordinal = 2, + isSerializable = false + }, + new + { + TableName = "Edges", + FieldName = "EdgeType", + Value = "1B", + Label = "Bull Nose 1", + Ordinal = 3, + isSerializable = false + }); + }); + + modelBuilder.Entity("WebDoorCreator.Data.DbModels.ListValuesTempModel", 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("DefaultVal") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("InputType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Label") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Ordinal") + .HasColumnType("int"); + + b.Property("isSerializable") + .HasMaxLength(5) + .HasColumnType("bit"); + + b.HasKey("TableName", "FieldName", "Value"); + + b.ToTable("ListValuesTemp"); + }); + + 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("DateDelivery") + .HasColumnType("datetime2"); + + b.Property("DateIns") + .HasColumnType("datetime2"); + + b.Property("DateMod") + .HasColumnType("datetime2"); + + b.Property("Discount") + .HasColumnType("float"); + + 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("DateDelivery") + .HasColumnType("datetime2"); + + b.Property("DateIns") + .HasColumnType("datetime2"); + + b.Property("Discount") + .HasColumnType("float"); + + 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("v_OrderStatus"); + }); + + modelBuilder.Entity("WebDoorCreator.Data.DbModels.PrtRepOrderModel", b => + { + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("DoorId") + .HasColumnType("int"); + + b.Property("ObjectKey") + .HasColumnType("nvarchar(450)"); + + b.Property("Address") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("City") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CompanyExtCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CompanyId") + .HasColumnType("int"); + + b.Property("CompanyName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + 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("MeasureUnit") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ObjectQty") + .HasColumnType("int"); + + b.Property("ObjectType") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ObjectVal") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("OrderDescript") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("OrderExtCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ParentId") + .HasColumnType("int"); + + b.Property("Quantity") + .HasColumnType("int"); + + b.Property("State") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("UnitCost") + .HasColumnType("decimal(18,2)"); + + b.Property("UserIdIns") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserIdMod") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("VAT") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ZipCode") + .HasColumnType("int"); + + b.HasKey("OrderId", "DoorId", "ObjectKey"); + + b.ToView("v_PrtReport"); + }); + + modelBuilder.Entity("WebDoorCreator.Data.DbModels.SerializedDoorsModel", b => + { + b.Property("DoorTmpId") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("DoorTmpId"), 1L, 1); + + b.Property("DoorSerVal") + .HasColumnType("nvarchar(max)"); + + b.Property("Lock") + .HasColumnType("bit"); + + b.HasKey("DoorTmpId"); + + b.ToTable("SerializedDoors"); + }); + + modelBuilder.Entity("WebDoorCreator.Data.DbModels.UsersViewModel", b => + { + b.Property("UserId") + .HasColumnType("nvarchar(450)"); + + b.Property("RoleId") + .HasColumnType("nvarchar(450)"); + + b.Property("ClaimId") + .HasColumnType("int"); + + b.Property("ClaimType") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClaimValue") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + 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", "ClaimId"); + + b.ToView("v_UserRolesClaims"); + }); + + 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(500) + .HasColumnType("nvarchar(500)"); + + 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(500) + .HasColumnType("nvarchar(500)"); + + 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.Navigation("OrderNav"); + }); + + modelBuilder.Entity("WebDoorCreator.Data.DbModels.DoorOpModel", b => + { + b.HasOne("WebDoorCreator.Data.DbModels.DoorModel", "DoorNav") + .WithMany() + .HasForeignKey("DoorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DoorNav"); + }); + + 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/20230606081147_repFixTypeId.cs b/WebDoorCreator.Data/Migrations/WDCData/20230606081147_repFixTypeId.cs new file mode 100644 index 0000000..e93c0e3 --- /dev/null +++ b/WebDoorCreator.Data/Migrations/WDCData/20230606081147_repFixTypeId.cs @@ -0,0 +1,37 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace WebDoorCreator.Data.Migrations.WDCData +{ + public partial class repFixTypeId : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "ParentDoorOpId", + table: "DoorOpType", + newName: "ParentId"); + + migrationBuilder.RenameColumn( + name: "DoorIdParent", + table: "Door", + newName: "ParentId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "ParentId", + table: "DoorOpType", + newName: "ParentDoorOpId"); + + migrationBuilder.RenameColumn( + name: "ParentId", + table: "Door", + newName: "DoorIdParent"); + + } + } +} diff --git a/WebDoorCreator.Data/Migrations/WDCData/WDCDataContextModelSnapshot.cs b/WebDoorCreator.Data/Migrations/WDCData/WDCDataContextModelSnapshot.cs index fe285ad..2ed35e6 100644 --- a/WebDoorCreator.Data/Migrations/WDCData/WDCDataContextModelSnapshot.cs +++ b/WebDoorCreator.Data/Migrations/WDCData/WDCDataContextModelSnapshot.cs @@ -224,9 +224,6 @@ namespace WebDoorCreator.Data.Migrations.WDCData .IsRequired() .HasColumnType("nvarchar(max)"); - b.Property("DoorIdParent") - .HasColumnType("int"); - b.Property("MeasureUnit") .IsRequired() .HasColumnType("nvarchar(max)"); @@ -234,6 +231,9 @@ namespace WebDoorCreator.Data.Migrations.WDCData b.Property("OrderId") .HasColumnType("int"); + b.Property("ParentId") + .HasColumnType("int"); + b.Property("Quantity") .HasColumnType("int"); @@ -366,7 +366,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData .IsRequired() .HasColumnType("nvarchar(max)"); - b.Property("ParentDoorOpId") + b.Property("ParentId") .HasColumnType("int"); b.Property("Rev") @@ -865,6 +865,9 @@ namespace WebDoorCreator.Data.Migrations.WDCData .IsRequired() .HasColumnType("nvarchar(max)"); + b.Property("ParentId") + .HasColumnType("int"); + b.Property("Quantity") .HasColumnType("int"); @@ -875,9 +878,6 @@ namespace WebDoorCreator.Data.Migrations.WDCData b.Property("Status") .HasColumnType("int"); - b.Property("TypeId") - .HasColumnType("int"); - b.Property("UnitCost") .HasColumnType("decimal(18,2)"); @@ -898,7 +898,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData b.HasKey("OrderId", "DoorId", "ObjectKey"); - b.ToTable("DbSetPrtRepOrder"); + b.ToView("v_PrtReport"); }); modelBuilder.Entity("WebDoorCreator.Data.DbModels.SerializedDoorsModel", b => diff --git a/WebDoorCreator.Data/Services/WebDoorCreatorService.cs b/WebDoorCreator.Data/Services/WebDoorCreatorService.cs index 3c8f291..183576d 100644 --- a/WebDoorCreator.Data/Services/WebDoorCreatorService.cs +++ b/WebDoorCreator.Data/Services/WebDoorCreatorService.cs @@ -649,7 +649,7 @@ namespace WebDoorCreator.Data.Services DoorExtCode = $"ORD {idOrd} | Ext Code --", Quantity = 1, UnitCost = 0, - DoorIdParent = 1 + ParentId = 1 }; // chiamo metodo x insert... var doorId = await DoorInsert(newDoor); @@ -996,7 +996,7 @@ namespace WebDoorCreator.Data.Services var doorToAdd = CurrDoor.ObjClone(userName); // imposto dati per la porta... doorToAdd.OrderId = orderId; - doorToAdd.DoorIdParent = isClone ? CurrDoor.DoorId : 1; + doorToAdd.ParentId = isClone ? CurrDoor.DoorId : 1; doorToAdd.Quantity = 1; doorToAdd.DoorExtCode = doorCode; doorToAdd.DoorDescript = doorDescr; diff --git a/WebDoorCreator.Data/SqlScripts/Stored/stp_prt_OrderReportExpl.sql b/WebDoorCreator.Data/SqlScripts/Stored/stp_prt_OrderReportExpl.sql index a8e568a..bdaadad 100644 --- a/WebDoorCreator.Data/SqlScripts/Stored/stp_prt_OrderReportExpl.sql +++ b/WebDoorCreator.Data/SqlScripts/Stored/stp_prt_OrderReportExpl.sql @@ -1,14 +1,14 @@ SET ANSI_NULLS ON GO - SET QUOTED_IDENTIFIER ON GO + -- ============================================= -- Author: S.E.L. -- Description: Door Order Report data exploded by OrderId -- Create date: 2023.05.22 -- ============================================= -CREATE PROCEDURE [dbo].[stp_prt_OrderReportExpl] +ALTER PROCEDURE [dbo].[stp_prt_OrderReportExpl] ( @OrderId INT = 0 ) @@ -18,58 +18,61 @@ BEGIN SET NOCOUNT ON; -- Insert statements for procedure here - SELECT - ORD.OrderId, - ORD.CompanyId, - ORD.OrderExtCode, - ORD.DateIns, - ORD.UserIdIns, - ORD.DateMod, - ORD.UserIdMod, - ORD.Status, - ORD.OrderDescript, - COM.CompanyExtCode, - COM.CompanyName, - COM.Address, - COM.ZipCode, - COM.City, - COM.State, - COM.VAT, - DOR.DoorId, - ROW_NUMBER() OVER ( PARTITION BY DOR.DoorId ORDER BY DOR.DoorId) AS RowDoor, -- mi serve per i totoali sul report - DOR.TypeId, - DOR.DoorExtCode, - DOR.DoorDescript, - DOR.Quantity, - DOR.UnitCost, - DOR.MeasureUnit, - CASE - WHEN DOP.ObjectId IN ('Profiles','Size','Swing') THEN 'INFO' - WHEN DOP.ObjectId IN ('Properties','Finishing') THEN 'OPTIONS' - --WHEN CHARINDEX('template', DOP.JsoncActVal) > 0 THEN 'HARDWARE' - ELSE 'HARDWARE' END AS ObjectType, - DOP.ObjectId as ObjectKey, + -- spostato in vista x poter gestire meglio creazione e indicizzazione in EFCore + SELECT * + FROM v_PrtReport + WHERE OrderId = @OrderId + + --SELECT + -- ORD.OrderId, + -- ORD.CompanyId, + -- ORD.OrderExtCode, + -- ORD.DateIns, + -- ORD.UserIdIns, + -- ORD.DateMod, + -- ORD.UserIdMod, + -- ORD.Status, + -- ORD.OrderDescript, + -- COM.CompanyExtCode, + -- COM.CompanyName, + -- COM.Address, + -- COM.ZipCode, + -- COM.City, + -- COM.State, + -- COM.VAT, + -- DOR.DoorId, + -- ROW_NUMBER() OVER ( PARTITION BY DOR.DoorId ORDER BY DOR.DoorId) AS RowDoor, -- mi serve per i totoali sul report + -- DOR.DoorIdParent, + -- DOR.DoorExtCode, + -- DOR.DoorDescript, + -- DOR.Quantity, + -- DOR.UnitCost, + -- DOR.MeasureUnit, + -- CASE + -- WHEN DOP.ObjectId IN ('Profiles','Size','Swing') THEN 'INFO' + -- WHEN DOP.ObjectId IN ('Properties','Finishing') THEN 'OPTIONS' + -- --WHEN CHARINDEX('template', DOP.JsoncActVal) > 0 THEN 'HARDWARE' + -- ELSE 'HARDWARE' END AS ObjectType, + -- DOP.ObjectId as ObjectKey, - CASE - WHEN DOP.ObjectId = 'Properties' THEN JSON_VALUE(JsoncActVal,'$.Properties.Properties') - WHEN DOP.ObjectId = 'Finishing' THEN JSON_VALUE(JsoncActVal,'$.Finishing.Finishing') - WHEN DOP.ObjectId = 'Size' THEN JSON_QUERY(JsoncActVal,'$.Size') - WHEN DOP.ObjectId = 'Swing' THEN JSON_VALUE(JsoncActVal,'$.Swing.Swing') - --WHEN DOP.ObjectId = 'Profiles' THEN JSON_QUERY(JsoncActVal,'$.Profiles') - --WHEN CHARINDEX('template', DOP.JsoncActVal) > 0 THEN 'HARDWARE' - ELSE DOP.JsoncActVal END AS ObjectVal, - --DOP.JsoncActVal as ObjectVal, - 1 as ObjectQty - FROM - [Order] AS ORD - INNER JOIN Company AS COM ON ORD.CompanyId = COM.CompanyId - INNER JOIN Door AS DOR ON ORD.OrderId = DOR.OrderId - INNER JOIN DoorOp AS DOP ON DOR.DoorId = DOP.DoorId - WHERE - ORD.OrderId = @OrderId + -- CASE + -- WHEN DOP.ObjectId = 'Properties' THEN JSON_VALUE(JsoncActVal,'$.Properties.Properties') + -- WHEN DOP.ObjectId = 'Finishing' THEN JSON_VALUE(JsoncActVal,'$.Finishing.Finishing') + -- WHEN DOP.ObjectId = 'Size' THEN JSON_QUERY(JsoncActVal,'$.Size') + -- WHEN DOP.ObjectId = 'Swing' THEN JSON_VALUE(JsoncActVal,'$.Swing.Swing') + -- --WHEN DOP.ObjectId = 'Profiles' THEN JSON_QUERY(JsoncActVal,'$.Profiles') + -- --WHEN CHARINDEX('template', DOP.JsoncActVal) > 0 THEN 'HARDWARE' + -- ELSE DOP.JsoncActVal END AS ObjectVal, + -- --DOP.JsoncActVal as ObjectVal, + -- 1 as ObjectQty + --FROM + -- [Order] AS ORD + -- INNER JOIN Company AS COM ON ORD.CompanyId = COM.CompanyId + -- INNER JOIN Door AS DOR ON ORD.OrderId = DOR.OrderId + -- INNER JOIN DoorOp AS DOP ON DOR.DoorId = DOP.DoorId + --WHERE + -- ORD.OrderId = @OrderId END -GO - diff --git a/WebDoorCreator.Data/SqlScripts/View/OrderStatusView.sql b/WebDoorCreator.Data/SqlScripts/View/OrderStatusView.sql index 94bea48..0d0f706 100644 --- a/WebDoorCreator.Data/SqlScripts/View/OrderStatusView.sql +++ b/WebDoorCreator.Data/SqlScripts/View/OrderStatusView.sql @@ -1,50 +1,35 @@ -/****** Object: View [dbo].[v_OrderStatus] Script Date: 17/03/2023 08:48:45 ******/ -SET ANSI_NULLS ON +SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO - CREATE VIEW [dbo].[v_OrderStatus] AS - -WITH cteDoorGroup AS -( - SELECT OrderId - ,COUNT(DISTINCT DoorIdParent) AS NumType - ,SUM(Quantity) AS NumDoors - ,SUM(Quantity*UnitCost) AS TotCost - FROM Door +WITH cteDoorGroup +AS ( + SELECT OrderId + ,COUNT(DISTINCT ParentId) AS NumType + ,SUM(Quantity) AS NumDoors + ,SUM(Quantity * UnitCost) AS TotCost + FROM dbo.Door GROUP BY OrderId -) - -SELECT - ord.OrderId + ) +SELECT ord.OrderId ,ord.CompanyId ,ord.OrderExtCode ,ord.DateIns ,ord.UserIdIns ,ord.DateMod ,ord.UserIdMod - ,ord.STATUS as OrderStatus + ,ord.STATUS AS OrderStatus ,ord.OrderDescript ,ISNULL(cte.NumType, 0) AS NumType ,ISNULL(cte.NumDoors, 0) AS NumDoors ,ISNULL(cte.TotCost, 0) AS TotCost - --,dbo.Door.DoorId - --,dbo.Door.OrderId - --,dbo.Door.TypeId - --,dbo.Door.DoorExtCode - --,dbo.Door.DateIns - --,dbo.Door.UserIdIns - --,dbo.Door.DateMod - --,dbo.Door.UserIdMod - --,dbo.Door.DoorDescript - --,dbo.Door.Quantity - --,dbo.Door.UnitCost - -FROM dbo.[Order] as ord -LEFT OUTER JOIN cteDoorGroup cte ON ord.OrderId = cte.OrderId + ,ord.DateDelivery + ,ord.Discount +FROM dbo.[Order] AS ord +LEFT OUTER JOIN cteDoorGroup AS cte ON ord.OrderId = cte.OrderId GO \ No newline at end of file diff --git a/WebDoorCreator.Data/SqlScripts/View/PrtReport.sql b/WebDoorCreator.Data/SqlScripts/View/PrtReport.sql new file mode 100644 index 0000000..61ec5e0 --- /dev/null +++ b/WebDoorCreator.Data/SqlScripts/View/PrtReport.sql @@ -0,0 +1,58 @@ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +ALTER VIEW [dbo].[v_PrtReport] +AS +SELECT + ORD.OrderId, + ORD.CompanyId, + ORD.OrderExtCode, + ORD.DateIns, + ORD.UserIdIns, + ORD.DateMod, + ORD.UserIdMod, + ORD.Status, + ORD.OrderDescript, + COM.CompanyExtCode, + COM.CompanyName, + COM.Address, + COM.ZipCode, + COM.City, + COM.State, + COM.VAT, + DOR.DoorId, + ROW_NUMBER() OVER ( PARTITION BY DOR.DoorId ORDER BY DOR.DoorId) AS RowDoor, -- mi serve per i totoali sul report + DOR.DoorIdParent, + DOR.DoorExtCode, + DOR.DoorDescript, + DOR.Quantity, + DOR.UnitCost, + DOR.MeasureUnit, + CASE + WHEN DOP.ObjectId IN ('Profiles','Size','Swing') THEN 'INFO' + WHEN DOP.ObjectId IN ('Properties','Finishing') THEN 'OPTIONS' + --WHEN CHARINDEX('template', DOP.JsoncActVal) > 0 THEN 'HARDWARE' + ELSE 'HARDWARE' END AS ObjectType, + DOP.ObjectId as ObjectKey, + + CASE + WHEN DOP.ObjectId = 'Properties' THEN JSON_VALUE(JsoncActVal,'$.Properties.Properties') + WHEN DOP.ObjectId = 'Finishing' THEN JSON_VALUE(JsoncActVal,'$.Finishing.Finishing') + WHEN DOP.ObjectId = 'Size' THEN JSON_QUERY(JsoncActVal,'$.Size') + WHEN DOP.ObjectId = 'Swing' THEN JSON_VALUE(JsoncActVal,'$.Swing.Swing') + --WHEN DOP.ObjectId = 'Profiles' THEN JSON_QUERY(JsoncActVal,'$.Profiles') + --WHEN CHARINDEX('template', DOP.JsoncActVal) > 0 THEN 'HARDWARE' + ELSE DOP.JsoncActVal END AS ObjectVal, + --DOP.JsoncActVal as ObjectVal, + 1 as ObjectQty + FROM + [Order] AS ORD + INNER JOIN Company AS COM ON ORD.CompanyId = COM.CompanyId + INNER JOIN Door AS DOR ON ORD.OrderId = DOR.OrderId + INNER JOIN DoorOp AS DOP ON DOR.DoorId = DOP.DoorId +GO + + diff --git a/WebDoorCreator.Data/SqlScripts/View/UserRolesClaims.sql b/WebDoorCreator.Data/SqlScripts/View/UserRolesClaims.sql new file mode 100644 index 0000000..0f0d347 --- /dev/null +++ b/WebDoorCreator.Data/SqlScripts/View/UserRolesClaims.sql @@ -0,0 +1,46 @@ +SET ANSI_NULLS ON +GO + +SET QUOTED_IDENTIFIER ON +GO + +CREATE VIEW [dbo].[v_UserRolesClaims] +AS +/* + + + Mod: 2023.05.26 agg. campi Claims +*/ + +SELECT + NU.Id AS UserId + ,NU.UserName + ,NU.Email + ,ISNULL(UR.RoleId, '') AS RoleId + ,ISNULL(ANR.Name, '') AS RoleName + ,UC.Id AS ClaimId + ,UC.UserId AS ClaimUserId + ,UC.ClaimType + ,UC.ClaimValue + --,ANR.Id + --,ANR.NormalizedName + --,ANR.ConcurrencyStamp + --,UR.UserId + --,NU.NormalizedUserName + --,NU.NormalizedEmail + --,NU.EmailConfirmed + --,NU.PasswordHash + --,NU.SecurityStamp + --,NU.ConcurrencyStamp AS Expr2 + --,NU.PhoneNumber + --,NU.PhoneNumberConfirmed + --,NU.TwoFactorEnabled + --,NU.LockoutEnd + --,NU.LockoutEnabled + --,NU.AccessFailedCount +FROM dbo.AspNetRoles ANR +INNER JOIN dbo.AspNetUserRoles UR ON ANR.Id = UR.RoleId +RIGHT OUTER JOIN dbo.AspNetUsers NU ON UR.UserId = NU.Id +LEFT OUTER JOIN dbo.AspNetUserClaims UC ON NU.Id = UC.UserId + +GO \ No newline at end of file diff --git a/WebDoorCreator.Data/SqlScripts/View/UserView.sql b/WebDoorCreator.Data/SqlScripts/View/UserView.sql deleted file mode 100644 index 99c6824..0000000 --- a/WebDoorCreator.Data/SqlScripts/View/UserView.sql +++ /dev/null @@ -1,46 +0,0 @@ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO - -CREATE VIEW [dbo].[v_UserRolesClaims] -AS -/* - - - Mod: 2023.05.26 agg. campi Claims -*/ - -SELECT - NU.Id AS UserId - ,NU.UserName - ,NU.Email - ,ISNULL(UR.RoleId, '') AS RoleId - ,ISNULL(ANR.Name, '') AS RoleName - ,UC.Id AS ClaimId - ,UC.UserId AS ClaimUserId - ,UC.ClaimType - ,UC.ClaimValue - --,ANR.Id - --,ANR.NormalizedName - --,ANR.ConcurrencyStamp - --,UR.UserId - --,NU.NormalizedUserName - --,NU.NormalizedEmail - --,NU.EmailConfirmed - --,NU.PasswordHash - --,NU.SecurityStamp - --,NU.ConcurrencyStamp AS Expr2 - --,NU.PhoneNumber - --,NU.PhoneNumberConfirmed - --,NU.TwoFactorEnabled - --,NU.LockoutEnd - --,NU.LockoutEnabled - --,NU.AccessFailedCount -FROM dbo.AspNetRoles ANR -INNER JOIN dbo.AspNetUserRoles UR ON ANR.Id = UR.RoleId -RIGHT OUTER JOIN dbo.AspNetUsers NU ON UR.UserId = NU.Id -LEFT OUTER JOIN dbo.AspNetUserClaims UC ON NU.Id = UC.UserId - -GO \ No newline at end of file diff --git a/WebDoorCreator.Data/WDCDataContext.cs b/WebDoorCreator.Data/WDCDataContext.cs index 84a6410..26c9b71 100644 --- a/WebDoorCreator.Data/WDCDataContext.cs +++ b/WebDoorCreator.Data/WDCDataContext.cs @@ -135,6 +135,7 @@ namespace WebDoorCreator.Data // Creazione viste migrate modelBuilder.Entity().ToView("v_UserRolesClaims"); modelBuilder.Entity().ToView("v_OrderStatus"); + modelBuilder.Entity().ToView("v_PrtReport"); //modelBuilder.Entity().ToView(nameof(OrderStatusViewModel)); diff --git a/WebDoorCreator.Data/WebDoorCreator.Data.csproj b/WebDoorCreator.Data/WebDoorCreator.Data.csproj index 1ef6a60..827477b 100644 --- a/WebDoorCreator.Data/WebDoorCreator.Data.csproj +++ b/WebDoorCreator.Data/WebDoorCreator.Data.csproj @@ -65,7 +65,10 @@ Always - + + Always + + Always diff --git a/WebDoorCreator.UI/Components/DoorMan/DoorList.razor b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor index 920041f..8ceaace 100644 --- a/WebDoorCreator.UI/Components/DoorMan/DoorList.razor +++ b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor @@ -37,16 +37,16 @@ else {
- +
- +
- +
- +
@@ -72,4 +72,9 @@ } }
+} +else +{ + + } \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs index f6614d1..de19b61 100644 --- a/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs +++ b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs @@ -49,6 +49,10 @@ namespace WebDoorCreator.UI.Components.DoorMan protected Dictionary AddDoorDict { get; set; } = new Dictionary(); protected Dictionary AddFromTemplDict { get; set; } = new Dictionary(); + + [Inject] + protected IConfiguration Configuration { get; set; } = null!; + protected DoorModel? currDoor { get; set; } = null; protected List? DoorOpsList { get; set; } = null; protected List? DoorsList { get; set; } = null; @@ -57,9 +61,7 @@ namespace WebDoorCreator.UI.Components.DoorMan protected bool IsChanged { get; set; } = false; protected bool isCloneMode { get; set; } - protected bool isRecalc { get; set; } = false; - protected bool isTpl { get; set; } = false; [Inject] @@ -74,6 +76,7 @@ namespace WebDoorCreator.UI.Components.DoorMan protected QueueDataService QDService { get; set; } = null!; protected Dictionary SendOrderDict { get; set; } = new Dictionary(); + protected bool SimulateDoorCosts { get; set; } = false; [Inject] protected WDCUserService WDCUService { get; set; } = null!; @@ -202,7 +205,10 @@ namespace WebDoorCreator.UI.Components.DoorMan await ReloadData(); } - protected async void recalcSVGs() + /// + /// Esecuzione ricalcolo SVG + /// + protected async void RecalcSVGs() { isRecalc = true; // recupero elenco porte come list interi... @@ -231,24 +237,39 @@ namespace WebDoorCreator.UI.Components.DoorMan } } isRecalc = false; - await InvokeAsync(StateHasChanged); + NavManager.NavigateTo(NavManager.Uri, true); + } + + /// + /// Chiamata x refresh costi + /// + protected async void RefreshCosts() + { + isRecalc = true; + await Task.Delay(1); + // FIXME TODO !!!! Fake Method (calcola costi casualmente...) + if (SimulateDoorCosts) + { + Dictionary updateSet = new Dictionary(); + Random rnd = new Random(); + var SearchRecords = await WDService.DoorGetByOrderId(currOrderId); + if (SearchRecords != null) + { + // popolo con valori simulati... + updateSet = SearchRecords.ToDictionary(x => x.DoorId, x => (decimal)rnd.Next(800, 1200) / 10); + } + // attesa fake... + await Task.Delay(500); + bool fatto = await WDService.DoorUpdateCosts(updateSet); + } + await Task.Delay(1); + isRecalc = true; NavManager.NavigateTo(NavManager.Uri, true); } protected async Task ReloadData() { - if (!AddDoorDict.ContainsKey("ADD NEW DOOR")) - { - AddDoorDict.Add("ADD NEW DOOR", ""); - } - if (!AddFromTemplDict.ContainsKey("ADD NEW DOOR FROM TEMPLATE")) - { - AddFromTemplDict.Add("ADD NEW DOOR FROM TEMPLATE", ""); - } - if (!SendOrderDict.ContainsKey("SEND TO DCA")) - { - SendOrderDict.Add("SEND TO DCA", ""); - } + SimulateDoorCosts = Configuration.GetValue("RuntimeOpt:SimulateDoorCosts"); if (currOrderId != -1) { var SearchRecords = await WDService.DoorGetByOrderId(currOrderId); diff --git a/WebDoorCreator.UI/Components/TemplateMan/TemplModal.razor.cs b/WebDoorCreator.UI/Components/TemplateMan/TemplModal.razor.cs index fb4e21e..ee205e6 100644 --- a/WebDoorCreator.UI/Components/TemplateMan/TemplModal.razor.cs +++ b/WebDoorCreator.UI/Components/TemplateMan/TemplModal.razor.cs @@ -200,8 +200,8 @@ namespace WebDoorCreator.UI.Components.TemplateMan { Dictionary answ = new Dictionary(); answ.Add("Door ID:", $"{door.DoorId}"); - answ.Add("Model #:", $"{door.DoorIdParent}"); - answ.Add("Door Price:", $"{(door.Quantity * door.UnitCost):C2}"); + answ.Add($"{door.DoorExtCode} {door.DoorDescript}", ""); + answ.Add("Unit Price:", $"{door.UnitCost:C2}"); return answ; } } diff --git a/WebDoorCreator.UI/Pages/OrdersHomePage.razor b/WebDoorCreator.UI/Pages/OrdersHomePage.razor index d8218b4..e93d00b 100644 --- a/WebDoorCreator.UI/Pages/OrdersHomePage.razor +++ b/WebDoorCreator.UI/Pages/OrdersHomePage.razor @@ -133,7 +133,7 @@
Door Type:
 
-
@currDoor.DoorIdParent
+
@currDoor.ParentId
Door Price:
diff --git a/WebDoorCreator.UI/Pages/OrdersHomePage.razor.cs b/WebDoorCreator.UI/Pages/OrdersHomePage.razor.cs index d4c04ee..4a1147a 100644 --- a/WebDoorCreator.UI/Pages/OrdersHomePage.razor.cs +++ b/WebDoorCreator.UI/Pages/OrdersHomePage.razor.cs @@ -63,7 +63,7 @@ namespace WebDoorCreator.UI.Pages protected DoorModel? currDoor { get; set; } = null; protected DoorModel? currDoorModal { get; set; } = null; - protected int currDoorType { get; set; } = 0; + protected int currParentId { get; set; } = 0; protected OrderSelectFilter currFilter { get; set; } = new OrderSelectFilter(); protected int CurrLevel { get; set; } = 1; protected int currOrderId { get; set; } = 0; @@ -195,11 +195,11 @@ namespace WebDoorCreator.UI.Pages { DoorModel? addRec = new DoorModel(); - if (currDoorType != 0) + if (currParentId != 0) { if (DoorsList != null) { - addRec = DoorsList.Where(x => x.DoorIdParent == currDoorType).FirstOrDefault(); + addRec = DoorsList.Where(x => x.ParentId == currParentId).FirstOrDefault(); } } @@ -309,10 +309,10 @@ namespace WebDoorCreator.UI.Pages } } - protected async Task SetCurrDoorType(int doorType) + protected async Task SetCurrDoorType(int parentId) { await Task.Delay(1); - currDoorType = doorType; + currParentId = parentId; } protected async Task setEmpty() diff --git a/WebDoorCreator.UI/WebDoorCreator.UI.csproj b/WebDoorCreator.UI/WebDoorCreator.UI.csproj index 013eec7..b1869c7 100644 --- a/WebDoorCreator.UI/WebDoorCreator.UI.csproj +++ b/WebDoorCreator.UI/WebDoorCreator.UI.csproj @@ -8,117 +8,117 @@ aspnet-WebDoorCreator.UI-dfe95fed-1398-4144-bd43-8b3a765d6608 - - - + + + - - <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS-PROD.pubxml" /> - <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS01.pubxml" /> - <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS02.pubxml" /> - <_WebToolingArtifacts Remove="Properties\PublishProfiles\IISProfile.pubxml" /> - + + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS-PROD.pubxml" /> + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS01.pubxml" /> + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS02.pubxml" /> + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IISProfile.pubxml" /> + - - - Always - - - Always - - - Always - - - Always - - + + + Always + + + Always + + + Always + + + Always + + - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + - - - - + + + + - - - - - + + + + + - - - - - - - + + + + + + + - - - Never - - - Never - - - Never - - - Never - - - Never - - - Never - - - Never - - - Never - - - Never - - - Never - - - Never - - - Never - - + + + Never + + + Never + + + Never + + + Never + + + Never + + + Never + + + Never + + + Never + + + Never + + + Never + + + Never + + + Never + + - - - Always - - - - - + + + Always + + + + + diff --git a/WebDoorCreator.UI/appsettings.json b/WebDoorCreator.UI/appsettings.json index 0dc395c..d7c5785 100644 --- a/WebDoorCreator.UI/appsettings.json +++ b/WebDoorCreator.UI/appsettings.json @@ -30,7 +30,8 @@ "RuntimeOpt": { "VetoRemoveProcessing": 5, "MaxDayCalcCache": 7, - "BaseUrl": "/WDC/UI" + "BaseUrl": "/WDC/UI", + "SimulateDoorCosts": true }, "ConfDDF": { "Header": [