This commit is contained in:
zaccaria.majid
2023-06-06 11:19:22 +02:00
23 changed files with 1459 additions and 293 deletions
@@ -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
+6 -6
View File
@@ -22,6 +22,11 @@ namespace WebDoorCreator.Data.DbModels
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DoorId { get; set; }
/// <summary>
/// Parent element ID
/// </summary>
public int ParentId { get; set; }
/// <summary>
/// Ordine cui è associata la porta
/// </summary>
@@ -32,11 +37,6 @@ namespace WebDoorCreator.Data.DbModels
/// </summary>
public string MeasureUnit { get; set; } = "";
/// <summary>
/// Door's Type
/// </summary>
public int DoorIdParent { get; set; } = 0;
/// <summary>
/// Codice esterno x riferimento (es ERP)
/// </summary>
@@ -102,7 +102,7 @@ namespace WebDoorCreator.Data.DbModels
{
MeasureUnit = MeasureUnit,
OrderId = OrderId,
DoorIdParent = DoorIdParent,
ParentId = ParentId,
DoorExtCode = DoorExtCode,
DateIns = adesso,
UserIdIns = userId,
@@ -21,6 +21,11 @@ namespace WebDoorCreator.Data.DbModels
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int DoorOpTypId { get; set; }
/// <summary>
/// Indica Id del parent: se 0 sono root, altrimenti indica il type parent
/// </summary>
public int ParentId { get; set; } = 0;
/// <summary>
/// Codice univoco dell'operazione da svolgere (calcolato, idealmente 4 char da 36 val 0..Z)
/// </summary>
@@ -67,16 +72,6 @@ namespace WebDoorCreator.Data.DbModels
/// </summary>
public string FPath { get; set; } = "";
/// <summary>
/// Idx univoco dell'elemento parent (se 0 = root)
/// </summary>
public int ParentDoorOpId { get; set; } = 0;
///// <summary>
///// Idx univoco dell'elemento parent (se 0 = root)
///// </summary>
//public HierarchyId? DoorOpIdPathFromPatriarch { get; set; }
/// <summary>
/// Unit cost for the door
/// </summary>
@@ -14,7 +14,6 @@ namespace WebDoorCreator.Data.DbModels
/// <summary>
/// View to retrieve data from multiple tables
/// </summary>
//[Table("v_OrderStatus")]
public class OrderStatusViewModel
{
/// <summary>
@@ -90,12 +90,15 @@ namespace WebDoorCreator.Data.DbModels
/// </summary>
public string VAT { get; set; } = "";
/// <summary>
/// Current Door ID
/// </summary>
public int DoorId { get; set; }
/// <summary>
/// Door's Type
/// Door's parent ID
/// </summary>
public int TypeId { get; set; } = 0;
public int ParentId { get; set; } = 0;
/// <summary>
/// Codice esterno x riferimento (es ERP)
File diff suppressed because it is too large Load Diff
@@ -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");
}
}
}
@@ -224,9 +224,6 @@ namespace WebDoorCreator.Data.Migrations.WDCData
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("DoorIdParent")
.HasColumnType("int");
b.Property<string>("MeasureUnit")
.IsRequired()
.HasColumnType("nvarchar(max)");
@@ -234,6 +231,9 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.Property<int>("OrderId")
.HasColumnType("int");
b.Property<int>("ParentId")
.HasColumnType("int");
b.Property<int>("Quantity")
.HasColumnType("int");
@@ -366,7 +366,7 @@ namespace WebDoorCreator.Data.Migrations.WDCData
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("ParentDoorOpId")
b.Property<int>("ParentId")
.HasColumnType("int");
b.Property<string>("Rev")
@@ -865,6 +865,9 @@ namespace WebDoorCreator.Data.Migrations.WDCData
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("ParentId")
.HasColumnType("int");
b.Property<int>("Quantity")
.HasColumnType("int");
@@ -875,9 +878,6 @@ namespace WebDoorCreator.Data.Migrations.WDCData
b.Property<int>("Status")
.HasColumnType("int");
b.Property<int>("TypeId")
.HasColumnType("int");
b.Property<decimal>("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 =>
@@ -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;
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
+1
View File
@@ -135,6 +135,7 @@ namespace WebDoorCreator.Data
// Creazione viste migrate
modelBuilder.Entity<UsersViewModel>().ToView("v_UserRolesClaims");
modelBuilder.Entity<OrderStatusViewModel>().ToView("v_OrderStatus");
modelBuilder.Entity<PrtRepOrderModel>().ToView("v_PrtReport");
//modelBuilder.Entity<OrderStatusViewModel>().ToView(nameof(OrderStatusViewModel));
@@ -65,7 +65,10 @@
<None Update="SqlScripts\View\OrderStatusView.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="SqlScripts\View\UserView.sql">
<None Update="SqlScripts\View\UserRolesClaims.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="SqlScripts\View\PrtReport.sql">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
@@ -37,16 +37,16 @@
else
{
<div class=" py-1">
<HwSvgObj LineColor="#CFD8DC" LineWidth="8" ObjH="200" ObjW="700" EC_ExeFunct="@(()=> ToggleAddNew())" ObjId="ToggleShow" ItemName="Add new door" ItemCount="0" ShowPlus="true" ImagePath="images/icons/PlusWhite.svg"></HwSvgObj>
<HwSvgObj LineColor="#CFD8DC" LineWidth="8" ObjH="200" ObjW="700" EC_ExeFunct="()=> ToggleAddNew()" ObjId="ToggleShow" ItemName="Add new door" ItemCount="0" ShowPlus="true" ImagePath="images/icons/PlusWhite.svg"></HwSvgObj>
</div>
<div class=" py-1">
<HwSvgObj LineColor="#CFD8DC" LineWidth="8" ObjH="200" ObjW="700" EC_ExeFunct="@(()=> recalcSVGs())" ObjId="Svg" ItemName="Recalc all the SVGs" ItemCount="0" ShowPlus="true" ImagePath="images/icons/arrows-rotate-solid.svg"></HwSvgObj>
<HwSvgObj LineColor="#CFD8DC" LineWidth="8" ObjH="200" ObjW="700" EC_ExeFunct="()=> RecalcSVGs()" ObjId="Svg" ItemName="Recalc all the SVGs" ItemCount="0" ShowPlus="true" ImagePath="images/icons/arrows-rotate-solid.svg"></HwSvgObj>
</div>
<div class=" py-1">
<HwSvgObj LineColor="#CFD8DC" LineWidth="8" ObjH="200" ObjW="700" EC_ExeFunct="@(()=> reportUrl(currOrderId))" ObjId="Report" ItemName="Get the order estimate" ItemCount="0" ShowPlus="true" ImagePath="images/icons/file-pdf-regular.svg"></HwSvgObj>
<HwSvgObj LineColor="#CFD8DC" LineWidth="8" ObjH="200" ObjW="700" EC_ExeFunct="()=> reportUrl(currOrderId)" ObjId="Report" ItemName="Order PDF Report" ItemCount="0" ShowPlus="true" ImagePath="images/icons/file-pdf-regular.svg"></HwSvgObj>
</div>
<div class=" py-1">
<HwSvgObj LineColor="#CFD8DC" LineWidth="8" ObjH="200" ObjW="700" ObjId="Calc" ItemName="Calculate total cost" ItemCount="0" ShowPlus="true" ImagePath="images/icons/calculator-solid.svg"></HwSvgObj>
<HwSvgObj LineColor="#CFD8DC" LineWidth="8" ObjH="200" ObjW="700" ObjId="Calc" EC_ExeFunct="()=>RefreshCosts()" ItemName="Update costs" ItemCount="0" ShowPlus="true" ImagePath="images/icons/calculator-solid.svg"></HwSvgObj>
</div>
<div class=" py-1">
<HwSvgObj LineColor="#CFD8DC" LineWidth="8" ObjH="200" ObjW="700" EC_ExeFunct="@(()=> sendToCompany(currOrderId, orderStatus))" ObjId="-5" ItemName="Send to DCA" ItemCount="0" ShowPlus="true" ImagePath="images/icons/angles-right-solid.svg"></HwSvgObj>
@@ -72,4 +72,9 @@
}
}
</div>
}
else
{
<LoadingData></LoadingData>
}
@@ -49,6 +49,10 @@ namespace WebDoorCreator.UI.Components.DoorMan
protected Dictionary<string, string> AddDoorDict { get; set; } = new Dictionary<string, string>();
protected Dictionary<string, string> AddFromTemplDict { get; set; } = new Dictionary<string, string>();
[Inject]
protected IConfiguration Configuration { get; set; } = null!;
protected DoorModel? currDoor { get; set; } = null;
protected List<DoorOpModel>? DoorOpsList { get; set; } = null;
protected List<DoorModel>? 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<string, string> SendOrderDict { get; set; } = new Dictionary<string, string>();
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()
/// <summary>
/// Esecuzione ricalcolo SVG
/// </summary>
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);
}
/// <summary>
/// Chiamata x refresh costi
/// </summary>
protected async void RefreshCosts()
{
isRecalc = true;
await Task.Delay(1);
// FIXME TODO !!!! Fake Method (calcola costi casualmente...)
if (SimulateDoorCosts)
{
Dictionary<int, decimal> updateSet = new Dictionary<int, decimal>();
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<bool>("RuntimeOpt:SimulateDoorCosts");
if (currOrderId != -1)
{
var SearchRecords = await WDService.DoorGetByOrderId(currOrderId);
@@ -200,8 +200,8 @@ namespace WebDoorCreator.UI.Components.TemplateMan
{
Dictionary<string, string> answ = new Dictionary<string, string>();
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;
}
}
+1 -1
View File
@@ -133,7 +133,7 @@
<div class=" px-3 d-flex justify-content-between small">
<div>Door Type:</div>
<div>&nbsp;</div>
<div class=" fw-bold">@currDoor.DoorIdParent</div>
<div class=" fw-bold">@currDoor.ParentId</div>
</div>
<div class=" px-3 d-flex justify-content-between small">
<div>Door Price:</div>
@@ -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()
+105 -105
View File
@@ -8,117 +8,117 @@
<UserSecretsId>aspnet-WebDoorCreator.UI-dfe95fed-1398-4144-bd43-8b3a765d6608</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<Content Remove="compilerconfig.json" />
</ItemGroup>
<ItemGroup>
<Content Remove="compilerconfig.json" />
</ItemGroup>
<ItemGroup>
<_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" />
</ItemGroup>
<ItemGroup>
<_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" />
</ItemGroup>
<ItemGroup>
<Content Include="temp\Logo00.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="temp\Logo01.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="temp\Logo02.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="temp\Logo03.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="temp\Logo00.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="temp\Logo01.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="temp\Logo02.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="temp\Logo03.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Blazored.LocalStorage" Version="4.3.0" />
<PackageReference Include="Blazored.SessionStorage" Version="2.3.0" />
<PackageReference Include="EgwCoreLib.Razor" Version="1.4.2305.3021" />
<PackageReference Include="EgwCoreLib.Utils" Version="1.4.2305.3021" />
<PackageReference Include="EntityFrameworkCore.SqlServer.HierarchyId" Version="3.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.11" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.14" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.14" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.14" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.14">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.12" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="NLog" Version="5.1.2" />
<PackageReference Include="StackExchange.Redis" Version="2.6.96" />
<PackageReference Include="YamlDotNet" Version="13.1.0" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Blazored.LocalStorage" Version="4.3.0" />
<PackageReference Include="Blazored.SessionStorage" Version="2.3.0" />
<PackageReference Include="EgwCoreLib.Razor" Version="1.4.2305.3021" />
<PackageReference Include="EgwCoreLib.Utils" Version="1.4.2305.3021" />
<PackageReference Include="EntityFrameworkCore.SqlServer.HierarchyId" Version="3.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.11" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.14" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.14" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.14" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.14">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.12" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="NLog" Version="5.1.2" />
<PackageReference Include="StackExchange.Redis" Version="2.6.96" />
<PackageReference Include="YamlDotNet" Version="13.1.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WebDoorCreator.Core\WebDoorCreator.Core.csproj" />
<ProjectReference Include="..\WebDoorCreator.Data\WebDoorCreator.Data.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WebDoorCreator.Core\WebDoorCreator.Core.csproj" />
<ProjectReference Include="..\WebDoorCreator.Data\WebDoorCreator.Data.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Areas\Identity\Data\" />
<Folder Include="Reports\" />
<Folder Include="wwwroot\DoorOpTypeImg\" />
</ItemGroup>
<ItemGroup>
<Folder Include="Areas\Identity\Data\" />
<Folder Include="Reports\" />
<Folder Include="wwwroot\DoorOpTypeImg\" />
</ItemGroup>
<ItemGroup>
<None Include="compilerconfig.json" />
<None Include="Properties\PublishProfiles\IIS-PROD.pubxml.user" />
<None Include="Properties\PublishProfiles\IIS01.pubxml.user" />
<None Include="Properties\PublishProfiles\IIS02.pubxml.user" />
<None Include="Properties\PublishProfiles\IISProfile.pubxml.user" />
</ItemGroup>
<ItemGroup>
<None Include="compilerconfig.json" />
<None Include="Properties\PublishProfiles\IIS-PROD.pubxml.user" />
<None Include="Properties\PublishProfiles\IIS01.pubxml.user" />
<None Include="Properties\PublishProfiles\IIS02.pubxml.user" />
<None Include="Properties\PublishProfiles\IISProfile.pubxml.user" />
</ItemGroup>
<ItemGroup>
<Content Update="wwwroot\images\icons\angles-left-solid.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\angles-right-solid.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\arrows-rotate-solid.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\calculator-solid.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\clipboard-regular.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\clone.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\Exit.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\ExitWhite.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\file-pdf-regular.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\file.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\Plus.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\PlusWhite.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Update="wwwroot\images\icons\angles-left-solid.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\angles-right-solid.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\arrows-rotate-solid.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\calculator-solid.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\clipboard-regular.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\clone.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\Exit.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\ExitWhite.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\file-pdf-regular.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\file.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\Plus.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\images\icons\PlusWhite.svg">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<None Update="Reports\ReportOrder.rdlc">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\post-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath)" />
</Target>
<ItemGroup>
<None Update="Reports\ReportOrder.rdlc">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="powershell.exe -ExecutionPolicy Unrestricted -NoProfile -NonInteractive -File $(ProjectDir)\post-build.ps1 -ProjectDir $(ProjectDir) -ProjectPath $(ProjectPath)" />
</Target>
</Project>
+2 -1
View File
@@ -30,7 +30,8 @@
"RuntimeOpt": {
"VetoRemoveProcessing": 5,
"MaxDayCalcCache": 7,
"BaseUrl": "/WDC/UI"
"BaseUrl": "/WDC/UI",
"SimulateDoorCosts": true
},
"ConfDDF": {
"Header": [