diff --git a/.idea/.idea.DiunaBI/.idea/sqldialects.xml b/.idea/.idea.DiunaBI/.idea/sqldialects.xml
new file mode 100644
index 0000000..12912e7
--- /dev/null
+++ b/.idea/.idea.DiunaBI/.idea/sqldialects.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebAPI/Controllers/LayersController.cs b/WebAPI/Controllers/LayersController.cs
index 5a36685..3f20e99 100644
--- a/WebAPI/Controllers/LayersController.cs
+++ b/WebAPI/Controllers/LayersController.cs
@@ -280,6 +280,7 @@ public class LayersController : Controller
x.Name != null && x.Name.Contains(nameFilter) &&
x.Records!.Any(y => y.Code == "Type" && y.Desc1 == "ImportWorker") &&
x.Records!.Any(y => y.Code == "IsEnabled" && y.Desc1 == "True")
+
)
.OrderByDescending(x => x.CreatedAt)
.ToList();
@@ -456,6 +457,7 @@ public class LayersController : Controller
"T3-MultiSourceSummary", // AA
"T3-MultiSourceYearSummary", // AA/13
"T4-SingleSource",
+ "T5-LastValues",
"T1-R1_OLD",
"T1-R1",
"T4-R2",
@@ -662,6 +664,12 @@ public class LayersController : Controller
t4SingleSource.Process(processWorker);
break;
}
+ case "T5-LastValues":
+ {
+ var t5LastValues = new T5LastValuesProcessor(_db, this);
+ t5LastValues.Process(processWorker);
+ break;
+ }
case "T3-MultiSourceSummary":
{
var t3MultiSourceSummary =
diff --git a/WebAPI/Helpers/DbSeed/CreateImportWorker.sql b/WebAPI/Helpers/DbSeed/CreateImportWorker.sql
new file mode 100644
index 0000000..54fe69c
--- /dev/null
+++ b/WebAPI/Helpers/DbSeed/CreateImportWorker.sql
@@ -0,0 +1,74 @@
+-- ADD IMPORT LAYER
+DECLARE @LayerId UNIQUEIDENTIFIER;
+SET @LayerId = 'a190d9bc-b9c4-4111-b83b-d3d781bb40e6';
+
+INSERT INTO [diunabi-morska].[dbo].[Layers]
+([Id], [Number], [Name], [CreatedAt], [ModifiedAt], [IsDeleted],
+ [CreatedById], [ModifiedById], [Type])
+VALUES ((SELECT @LayerId), 3490, 'L3490-A-IW_FK-2024/12-202411261702',
+ GETDATE(), GETDATE(), 0, '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 2);
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'StartDate', '2024.11.29',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'EndDate', '2025.01.05',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'GoogleSheet',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SheetTabName', 'Grudzien_2024',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SheetId', '1k_frcE49O-J_n5MaNiVLKq62-OTCJku1qutGb8YF9M0',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'DataRange', 'D4:DA5',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportName', 'D3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportMonth', 'F3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportYear', 'E3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'CheckSum', 'G3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Type', 'ImportWorker',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'IsEnabled', 'True',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportType', 'Standard',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
\ No newline at end of file
diff --git a/WebAPI/Helpers/DbSeed/CreateImportWorkerD1.sql b/WebAPI/Helpers/DbSeed/CreateImportWorkerD1.sql
new file mode 100644
index 0000000..f75f2e2
--- /dev/null
+++ b/WebAPI/Helpers/DbSeed/CreateImportWorkerD1.sql
@@ -0,0 +1,69 @@
+-- ADD IMPORT LAYER
+DECLARE @LayerId UNIQUEIDENTIFIER;
+SET @LayerId = '3a24d537-a0c8-4be8-a6e0-fb5eb80c90cd';
+
+INSERT INTO [diunabi-morska].[dbo].[Layers]
+([Id], [Number], [Name], [CreatedAt], [ModifiedAt], [IsDeleted],
+[CreatedById], [ModifiedById], [Type])
+VALUES ((SELECT @LayerId), 2989, 'L2989-A-IW_D1-2024/09-202410171035',
+GETDATE(), GETDATE(), 0, '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 2);
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'StartDate', '2024.10.15',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'EndDate', '2024.10.30',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'GoogleSheet',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SheetTabName', 'Wrzesien_2024',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SheetId', '1wplF3CRHweDE8A3Dk9dYbhWAatj1kp0UBM7MiFE26hE',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'DataRange', 'A7:O200',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportName', 'F1',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportYear', 'G1',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportMonth', 'H1',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Type', 'ImportWorker',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'IsEnabled', 'True',
+GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportType', 'D1',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
\ No newline at end of file
diff --git a/WebAPI/Helpers/DbSeed/CreateImportWorkerFK2.sql b/WebAPI/Helpers/DbSeed/CreateImportWorkerFK2.sql
new file mode 100644
index 0000000..df274d6
--- /dev/null
+++ b/WebAPI/Helpers/DbSeed/CreateImportWorkerFK2.sql
@@ -0,0 +1,147 @@
+-- ADD IMPORT LAYER
+DECLARE @LayerId UNIQUEIDENTIFIER;
+SET @LayerId = '2cb4e716-0488-43d8-b172-93cbf3db222a';
+
+INSERT INTO [diunabi-morska].[dbo].[Layers]
+([Id], [Number], [Name], [CreatedAt], [ModifiedAt], [IsDeleted],
+ [CreatedById], [ModifiedById], [Type])
+VALUES ((SELECT @LayerId), 3130, 'L3130-A-IW_FK2-2024/11-202410311640',
+ GETDATE(), GETDATE(), 0, '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 2);
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'StartDate', '2024.10.29',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'EndDate', '2024.12.05',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'GoogleSheet',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SheetTabName', 'Listopad_2024',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SheetId', '1k_frcE49O-J_n5MaNiVLKq62-OTCJku1qutGb8YF9M0',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'DataRange', 'A8:I1652',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportName', 'D3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportMonth', 'F3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportYear', 'E3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'CheckSum', 'G3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Type', 'ImportWorker',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+-- ADD IMPORT LAYER
+DECLARE @LayerId UNIQUEIDENTIFIER;
+SET @LayerId = '999a1a57-f586-4bba-9166-ef4c99ede9a9';
+
+INSERT INTO [diunabi-morska].[dbo].[Layers]
+([Id], [Number], [Name], [CreatedAt], [ModifiedAt], [IsDeleted],
+ [CreatedById], [ModifiedById], [Type])
+VALUES ((SELECT @LayerId), 3491, 'L3491-A-IW_FK2-2024/12-202411261705',
+ GETDATE(), GETDATE(), 0, '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 2);
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'StartDate', '2024.11.29',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'EndDate', '2025.01.05',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'GoogleSheet',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SheetTabName', 'Grudzien_2024',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SheetId', '1k_frcE49O-J_n5MaNiVLKq62-OTCJku1qutGb8YF9M0',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'DataRange', 'A8:I1652',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportName', 'E3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportMonth', 'G3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportYear', 'F3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'CheckSum', 'H3',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Type', 'ImportWorker',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'IsEnabled', 'True',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportType', 'FK2',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'IsEnabled', 'True',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ImportType', 'FK2',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
\ No newline at end of file
diff --git a/WebAPI/Helpers/DbSeed/CreateProcessWorker-T3MultiSourceSummary-AA.sql b/WebAPI/Helpers/DbSeed/CreateProcessWorker-T3MultiSourceSummary-AA.sql
new file mode 100644
index 0000000..fa929c9
--- /dev/null
+++ b/WebAPI/Helpers/DbSeed/CreateProcessWorker-T3MultiSourceSummary-AA.sql
@@ -0,0 +1,59 @@
+-- T3-MultiSourceSummary
+DECLARE @LayerId UNIQUEIDENTIFIER;
+SET @LayerId = '2cddcb1d-b944-4020-a66d-ebbe567e8093';
+
+INSERT INTO [diunabi-morska].[dbo].[Layers]
+([Id], [Number], [Name], [CreatedAt], [ModifiedAt], [IsDeleted],
+ [CreatedById], [ModifiedById], [Type])
+VALUES ((SELECT @LayerId), 3497, 'L3497-A-PW_AA-2024/12-202411261724',
+ GETDATE(), GETDATE(), 0, '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 2);
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'K5',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'M7',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'PU',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'FK',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Type', 'ProcessWorker',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ProcessType', 'T3-MultiSourceSummary',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'IsEnabled', 'True',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Year', '2024',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Month', '12',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'DynamicCode-0', '[1001]=[9000]+[9005]',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
\ No newline at end of file
diff --git a/WebAPI/Helpers/DbSeed/CreateProcessWorker-T3SingleSource.sql b/WebAPI/Helpers/DbSeed/CreateProcessWorker-T3SingleSource.sql
new file mode 100644
index 0000000..a5622ee
--- /dev/null
+++ b/WebAPI/Helpers/DbSeed/CreateProcessWorker-T3SingleSource.sql
@@ -0,0 +1,45 @@
+--ADD PROCESS LAYERS
+-- T3-SingleSource
+DECLARE @LayerId UNIQUEIDENTIFIER;
+SET @LayerId = 'e05463e4-033c-4d0b-ad90-41a15021b178';
+
+INSERT INTO [diunabi-morska].[dbo].[Layers]
+([Id], [Number], [Name], [CreatedAt], [ModifiedAt], [IsDeleted],
+ [CreatedById], [ModifiedById], [Type])
+VALUES ((SELECT @LayerId), 3495, 'L3495-A-PW_FK-2024/12-202411261713',
+ GETDATE(), GETDATE(), 0, '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 2);
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'FK',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SourceLayer', 'L3490-A-IW_FK-2024/12-202411261702',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Type', 'ProcessWorker',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ProcessType', 'T3-SingleSource',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'IsEnabled', 'True',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Year', '2024',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Month', '12',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
diff --git a/WebAPI/Helpers/DbSeed/CreateProcessWorker-T4SingleSource.sql b/WebAPI/Helpers/DbSeed/CreateProcessWorker-T4SingleSource.sql
new file mode 100644
index 0000000..27dc1ef
--- /dev/null
+++ b/WebAPI/Helpers/DbSeed/CreateProcessWorker-T4SingleSource.sql
@@ -0,0 +1,45 @@
+--ADD PROCESS LAYERS
+-- T4-SingleSource
+DECLARE @LayerId UNIQUEIDENTIFIER;
+SET @LayerId = 'd1ab4a01-cd5a-4547-b830-d4c59f8e2bff';
+
+INSERT INTO [diunabi-morska].[dbo].[Layers]
+([Id], [Number], [Name], [CreatedAt], [ModifiedAt], [IsDeleted],
+ [CreatedById], [ModifiedById], [Type])
+VALUES ((SELECT @LayerId), 3496, 'L3496-A-PW_FK2-2024/12-202411261715',
+ GETDATE(), GETDATE(), 0, '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 2);
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'FK2',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SourceLayer', 'L3134-A-PW_FK2-2024/11-202410311655',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Type', 'ProcessWorker',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ProcessType', 'T4-SingleSource',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'IsEnabled', 'True',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Year', '2024',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Month', '12',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
diff --git a/WebAPI/Helpers/DbSeed/CreateProcessWorker-T5LastValue.sql b/WebAPI/Helpers/DbSeed/CreateProcessWorker-T5LastValue.sql
new file mode 100644
index 0000000..d117c81
--- /dev/null
+++ b/WebAPI/Helpers/DbSeed/CreateProcessWorker-T5LastValue.sql
@@ -0,0 +1,46 @@
+--ADD PROCESS LAYER
+-- T5-LastValue
+
+DECLARE @LayerId UNIQUEIDENTIFIER;
+SET @LayerId = NEWID();
+
+INSERT INTO [diunabi-morska].[dbo].[Layers]
+([Id], [Number], [Name], [CreatedAt], [ModifiedAt], [IsDeleted],
+ [CreatedById], [ModifiedById], [Type])
+VALUES ((SELECT @LayerId), 3890, 'L3890-A-PW_D1-2024/09-202412181946',
+ GETDATE(), GETDATE(), 0, '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 2);
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'D1',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'SourceLayer', 'L2989-A-IW_D1-2024/09-202410172040',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Type', 'ProcessWorker',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'ProcessType', 'T5-LastValues',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'IsEnabled', 'True',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Year', '2024',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Month', '09',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0, (SELECT @LayerId));
diff --git a/WebAPI/Helpers/DbSeed/CreateRecord.sql b/WebAPI/Helpers/DbSeed/CreateRecord.sql
new file mode 100644
index 0000000..52f9f98
--- /dev/null
+++ b/WebAPI/Helpers/DbSeed/CreateRecord.sql
@@ -0,0 +1,7 @@
+
+
+INSERT INTO [diunabi-morska].[dbo].[Records]
+([Id], [Code], [Desc1], [CreatedAt], [ModifiedAt], [CreatedById], [ModifiedById], [IsDeleted], [LayerId])
+VALUES ((SELECT NEWID()), 'Source', 'FK',
+ GETDATE(), GETDATE(), '117be4f0-b5d1-41a1-a962-39dc30cce368', '117be4f0-b5d1-41a1-a962-39dc30cce368', 0,
+ 'e5315187-5bcb-496a-8c63-4c6575e7e04c');
diff --git a/WebAPI/Helpers/HttpRequests/AddDataInbox.http b/WebAPI/Helpers/HttpRequests/AddDataInbox.http
new file mode 100644
index 0000000..1d48192
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/AddDataInbox.http
@@ -0,0 +1,12 @@
+###
+PUT http://localhost:5400/api/DataInbox/Add/10763478CB738D4ecb2h76g803478CB738D4e
+Content-Type: application/json
+Authorization: Basic bW9yc2thOjBGOUM3RThDQjczOGdLMmg3Nmc4MDM0NzhDQg==
+
+{
+"Name": "Test-Name",
+"Source": "Test-Source",
+"Data": "Ww0KICB7DQogICAgIlZhbHVlMiI6IDguMDYwNDM2MTcwNDU0NzIsDQogICAgIklEIjogOTUsDQogICAgIkRpZmZlcmVuY2VSZXN1bHQiOiA4Ni40ODEwOTgzOTM4OTc0OCwNCiAgICAiU3VtUmVzdWx0IjogMTAyLjYwMTk3MDczNDgwNjkzLA0KICAgICJRdW90aWVudFJlc3VsdCI6IDExLjcyOTA4NDIwNDAxNTA3NCwNCiAgICAiUHJvZHVjdFJlc3VsdCI6IDc2Mi4wNDYwMDQ4MTI3OTk3LA0KICAgICJWYWx1ZTEiOiA5NC41NDE1MzQ1NjQzNTIyDQogIH0sDQogIHsNCiAgICAiVmFsdWUyIjogOTAuNzQyMDQ1Nzg1OTQyNDcsDQogICAgIklEIjogODgsDQogICAgIkRpZmZlcmVuY2VSZXN1bHQiOiAtNDUuODY5NzQ0OTgxMTE3OTgsDQogICAgIlN1bVJlc3VsdCI6IDEzNS42MTQzNDY1OTA3NjY5NiwNCiAgICAiUXVvdGllbnRSZXN1bHQiOiAwLjQ5NDUwMzk1ODA3MzM4MDcsDQogICAgIlByb2R1Y3RSZXN1bHQiOiA0MDcxLjgwNDM3NDE1MTk2NjQsDQogICAgIlZhbHVlMSI6IDQ0Ljg3MjMwMDgwNDgyNDQ4NA0KICB9DQpd"
+}
+
+
diff --git a/WebAPI/Helpers/HttpRequests/AddDataInboxProd.http b/WebAPI/Helpers/HttpRequests/AddDataInboxProd.http
new file mode 100644
index 0000000..16ac457
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/AddDataInboxProd.http
@@ -0,0 +1,11 @@
+PUT https://diunabi-morska.bim-it.pl/api/DataInbox/Add/10763478CB738D4ecb2h76g803478CB738D4e
+Content-Type: application/json
+Authorization: Basic bW9yc2thOmZlNDM4ZWhyOWs5ZWNiMmhmZTQzOGVocjlrOWVjYjJoMDE1Ng==
+
+{
+"Name": "Test-Name",
+"Source": "Test-Source",
+"Data": "WwANAAoAIAAgAHsADQAKACAAIAAgACAAIgBWAGEAbAB1AGUAMgAiADoAIAAzADgALgAxADEAMwAzADEAMwA4ADgAMQAxADUANgA5ADMALAANAAoAIAAgACAAIAAiAEkARAAiADoAIAAzADYALAANAAoAIAAgACAAIAAiAEQAaQBmAGYAZQByAGUAbgBjAGUAUgBlAHMAdQBsAHQAIgA6ACAALQAzADAALgA3ADAANAA1ADYANAA5ADIANQA4ADUAMgAwADgANgAsAA0ACgAgACAAIAAgACIAUwB1AG0AUgBlAHMAdQBsAHQAIgA6ACAANAA1AC4ANQAyADIAMAA2ADIAOAAzADYANAA2ADEANwA3ACwADQAKACAAIAAgACAAIgBRAHUAbwB0AGkAZQBuAHQAUgBlAHMAdQBsAHQAIgA6ACAAMAAuADEAOQA0ADMAOAA3ADQAMgA1ADMAMAA3ADcANgA2ADIALAANAAoAIAAgACAAIAAiAFAAcgBvAGQAdQBjAHQAUgBlAHMAdQBsAHQAIgA6ACAAMgA4ADIALgAzADcAMQA5ADcANAA0ADAAMAAyADIANgA4ADYALAANAAoAIAAgACAAIAAiAFYAYQBsAHUAZQAxACIAOgAgADcALgA0ADAAOAA3ADQAOAA5ADUANQAzADAANAA4ADQAMQANAAoAIAAgAH0ALAANAAoAIAAgAHsADQAKACAAIAAgACAAIgBWAGEAbAB1AGUAMgAiADoAIAA3ADIALgA1ADIANwA4ADMANAAyADgAMQA5ADAAOAAwADcALAANAAoAIAAgACAAIAAiAEkARAAiADoAIAA1ACwADQAKACAAIAAgACAAIgBEAGkAZgBmAGUAcgBlAG4AYwBlAFIAZQBzAHUAbAB0ACIAOgAgAC0AMQAwAC4AOQAwADkAMQAxADMAOAAxADgAMAA5ADkANwA2ADIALAANAAoAIAAgACAAIAAiAFMAdQBtAFIAZQBzAHUAbAB0ACIAOgAgADEAMwA0AC4AMQA0ADYANQA1ADQANwA0ADUANwAxADYAMwA3ACwADQAKACAAIAAgACAAIgBRAHUAbwB0AGkAZQBuAHQAUgBlAHMAdQBsAHQAIgA6ACAAMAAuADgANAA5ADUAOAA3ADIAMQAxADIAMgA1ADcAMwAxADkALAANAAoAIAAgACAAIAAiAFAAcgBvAGQAdQBjAHQAUgBlAHMAdQBsAHQAIgA6ACAANAA0ADYAOQAuADAANwAyADMANAA2ADQANgAyADMAMAA3ACwADQAKACAAIAAgACAAIgBWAGEAbAB1AGUAMQAiADoAIAA2ADEALgA2ADEAOAA3ADIAMAA0ADYAMwA4ADAAOAAzADEADQAKACAAIAB9AA0ACgBdAA=="
+}
+
+
diff --git a/WebAPI/Helpers/HttpRequests/AddToQueue.http b/WebAPI/Helpers/HttpRequests/AddToQueue.http
new file mode 100644
index 0000000..7d2928a
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/AddToQueue.http
@@ -0,0 +1,2 @@
+###
+POST http://localhost:5400/api/Admin/AddToQueue
diff --git a/WebAPI/Helpers/HttpRequests/AutoImport.http b/WebAPI/Helpers/HttpRequests/AutoImport.http
new file mode 100644
index 0000000..d8cfd30
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/AutoImport.http
@@ -0,0 +1,3 @@
+###
+GET http://localhost:5400/api/Layers/AutoImport/10763478CB738D4ecb2h76g803478CB738D4e/D1-
+
diff --git a/WebAPI/Helpers/HttpRequests/AutoProcess.http b/WebAPI/Helpers/HttpRequests/AutoProcess.http
new file mode 100644
index 0000000..e9dd29e
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/AutoProcess.http
@@ -0,0 +1,2 @@
+###
+GET http://localhost:5400/api/Layers/AutoProcess/10763478CB738D4ecb2h76g803478CB738D4e
diff --git a/WebAPI/Helpers/HttpRequests/BackupDatabase.http b/WebAPI/Helpers/HttpRequests/BackupDatabase.http
new file mode 100644
index 0000000..539564b
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/BackupDatabase.http
@@ -0,0 +1,2 @@
+###
+GET http://localhost:5400/api/Admin/BackupDatabase/10763478CB738D4ecb2h76g803478CB738D4e
diff --git a/WebAPI/Helpers/HttpRequests/CMMorska-Pacjenci.http b/WebAPI/Helpers/HttpRequests/CMMorska-Pacjenci.http
new file mode 100644
index 0000000..b73d05f
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/CMMorska-Pacjenci.http
@@ -0,0 +1,10 @@
+###
+GET https://www.cmmorska.pl/skap/analiza_pacjenci_export.php
+Authorization: Bearer HJFkKrpYUmXatk$
+
+<> 2024-11-14T170743.200.json
+<> 2024-11-14T170726.200.html
+
+
+
+
diff --git a/WebAPI/Helpers/HttpRequests/DiunaBI-endpoints_2.http b/WebAPI/Helpers/HttpRequests/DiunaBI-endpoints_2.http
new file mode 100644
index 0000000..7be683b
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/DiunaBI-endpoints_2.http
@@ -0,0 +1,2 @@
+###
+GET https://localhost:/api/Layers/AutoProcess/{{apiKey}}
\ No newline at end of file
diff --git a/WebAPI/Helpers/HttpRequests/GetQueue.http b/WebAPI/Helpers/HttpRequests/GetQueue.http
new file mode 100644
index 0000000..110921f
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/GetQueue.http
@@ -0,0 +1,2 @@
+###
+GET http://localhost:5400/api/Admin/GetQueue
diff --git a/WebAPI/Helpers/HttpRequests/ProcessQueue.http b/WebAPI/Helpers/HttpRequests/ProcessQueue.http
new file mode 100644
index 0000000..6d8defa
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/ProcessQueue.http
@@ -0,0 +1,2 @@
+###
+GET http://localhost:5400/api/Layers/ProcessQueue/10763478CB738D4ecb2h76g803478CB738D4e
diff --git a/WebAPI/Helpers/HttpRequests/getForPowerBI.http b/WebAPI/Helpers/HttpRequests/getForPowerBI.http
new file mode 100644
index 0000000..863a4e9
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/getForPowerBI.http
@@ -0,0 +1,3 @@
+###
+http://localhost:5400/api/layers/getForPowerBI/10763478CB738D4ecb2h76g803478CB738D4e/1205
+Authorization: Basic powerbi 0F9C7E2D19FSLOCgKexz2h76g802tj6a
diff --git a/WebAPI/Helpers/HttpRequests/getMorskaClients.http b/WebAPI/Helpers/HttpRequests/getMorskaClients.http
new file mode 100644
index 0000000..74bb056
--- /dev/null
+++ b/WebAPI/Helpers/HttpRequests/getMorskaClients.http
@@ -0,0 +1,5 @@
+###
+https://www.cmmorska.pl/skap/analiza_pacjenci_export.php
+Authorization: Bearer HJFkKrpYUmXatk$
+
+
diff --git a/WebAPI/dataProcessors/t3.SingleSource.processor.cs b/WebAPI/dataProcessors/t3.SingleSource.processor.cs
index 197b854..bc29dc5 100644
--- a/WebAPI/dataProcessors/t3.SingleSource.processor.cs
+++ b/WebAPI/dataProcessors/t3.SingleSource.processor.cs
@@ -5,19 +5,10 @@ using WebAPI.Models;
namespace WebAPI.dataProcessors;
-public class T3SingleSourceProcessor
+public class T3SingleSourceProcessor(
+ AppDbContext db,
+ LayersController controller)
{
- private readonly AppDbContext _db;
- private readonly LayersController _controller;
-
- public T3SingleSourceProcessor(
- AppDbContext db,
- LayersController controller)
- {
- _db = db;
- _controller = controller;
- }
-
public void Process(Layer processWorker)
{
var year = int.Parse(processWorker.Records?.SingleOrDefault(x => x.Code == "Year")?.Desc1!);
@@ -27,7 +18,7 @@ public class T3SingleSourceProcessor
{
throw new Exception("SourceLayer record not found");
}
- var sourceImportWorker = _db.Layers.SingleOrDefault(x => x.Name == sourceLayer);
+ var sourceImportWorker = db.Layers.SingleOrDefault(x => x.Name == sourceLayer);
if (sourceImportWorker == null)
{
throw new Exception("SourceImportWorkerL layer not found");
@@ -38,7 +29,7 @@ public class T3SingleSourceProcessor
throw new Exception("Source record not found");
}
- var processedLayer = _db.Layers
+ var processedLayer = db.Layers
.Where(x => x.ParentId == processWorker.Id)
.OrderByDescending(x => x.CreatedAt)
.FirstOrDefault();
@@ -52,7 +43,7 @@ public class T3SingleSourceProcessor
Id = Guid.NewGuid(),
Type = LayerType.Processed,
ParentId = processWorker.Id,
- Number = _db.Layers.Count() + 1
+ Number = db.Layers.Count() + 1
};
processedLayer.Name = $"L{processedLayer.Number}-P-{year}/{month}-{source}-T3";
processedLayer.CreatedById = Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D");
@@ -67,7 +58,7 @@ public class T3SingleSourceProcessor
var newRecords = new List();
- var dataSources = _db.Layers
+ var dataSources = db.Layers
.Include(x => x.Records)
.Where(x => x.ParentId == sourceImportWorker.Id
&& !x.IsDeleted)
@@ -135,13 +126,13 @@ public class T3SingleSourceProcessor
if (isNew)
{
- _db.Layers.Add(processedLayer);
+ db.Layers.Add(processedLayer);
} else
{
- _db.Layers.Update(processedLayer);
+ db.Layers.Update(processedLayer);
}
- _controller.SaveRecords(processedLayer.Id, newRecords, Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D"));
- _db.SaveChanges();
+ controller.SaveRecords(processedLayer.Id, newRecords, Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D"));
+ db.SaveChanges();
}
}
\ No newline at end of file
diff --git a/WebAPI/dataProcessors/t5.LastValues.processor.cs b/WebAPI/dataProcessors/t5.LastValues.processor.cs
new file mode 100644
index 0000000..5287f89
--- /dev/null
+++ b/WebAPI/dataProcessors/t5.LastValues.processor.cs
@@ -0,0 +1,93 @@
+using DiunaBIWebAPI.dataProcessors;
+using Microsoft.EntityFrameworkCore;
+using WebAPI.Controllers;
+using WebAPI.Models;
+
+namespace WebAPI.dataProcessors;
+
+public class T5LastValuesProcessor(
+ AppDbContext db,
+ LayersController controller)
+{
+ public void Process(Layer processWorker)
+ {
+ var year = int.Parse(processWorker.Records?.SingleOrDefault(x => x.Code == "Year")?.Desc1!);
+ var month = int.Parse(processWorker.Records?.SingleOrDefault(x => x.Code == "Month")?.Desc1!);
+ var sourceLayer = processWorker.Records?.SingleOrDefault(x => x.Code == "SourceLayer")?.Desc1;
+ if (sourceLayer == null) throw new Exception("SourceLayer record not found");
+ var sourceImportWorker = db.Layers.SingleOrDefault(x => x.Name == sourceLayer);
+ if (sourceImportWorker == null) throw new Exception("SourceImportWorker layer not found");
+ var source = processWorker.Records?.SingleOrDefault(x => x.Code == "Source")?.Desc1;
+ if (sourceLayer == null) throw new Exception("Source record not found");
+
+ var processedLayer = db.Layers
+ .Where(x => x.ParentId == processWorker.Id)
+ .OrderByDescending(x => x.CreatedAt)
+ .FirstOrDefault();
+
+ var isNew = false;
+ if (processedLayer == null)
+ {
+ isNew = true;
+ processedLayer = new Layer
+ {
+ Id = Guid.NewGuid(),
+ Type = LayerType.Processed,
+ ParentId = processWorker.Id,
+ Number = db.Layers.Count() + 1
+ };
+ processedLayer.Name = $"L{processedLayer.Number}-P-{year}/{month:D2}-{source}-T5";
+ processedLayer.CreatedById = Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D");
+ processedLayer.ModifiedById = Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D");
+ processedLayer.CreatedAt = DateTime.UtcNow;
+ processedLayer.ModifiedAt = DateTime.UtcNow;
+ }
+
+ processedLayer.ModifiedById = Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D");
+ processedLayer.ModifiedAt = DateTime.UtcNow;
+
+ var newRecords = new List();
+
+ var dataSources = db.Layers
+ .Include(x => x.Records)
+ .Where(x => x.ParentId == sourceImportWorker.Id
+ && !x.IsDeleted)
+ .OrderByDescending(x => x.CreatedAt)
+ .ToList();
+
+ if (dataSources.Count == 0) throw new Exception($"DataSource is empty, {sourceImportWorker.Name}");
+
+ var codes = dataSources.SelectMany(x => x.Records!).Select(x => x.Code).Distinct().ToList();
+
+ foreach (var code in codes)
+ {
+ var lastRecord = dataSources.SelectMany(x => x.Records!).Where(x => x.Code == code).OrderByDescending(x => x.CreatedAt).FirstOrDefault();
+ if (lastRecord == null) continue;
+
+ var processedRecord = new Record
+ {
+ Id = Guid.NewGuid(),
+ Code = code,
+ CreatedAt = DateTime.UtcNow,
+ ModifiedAt = DateTime.UtcNow
+ };
+
+ for (var i = 1; i < 33; i++)
+ {
+ if (ProcessHelper.GetValue(lastRecord, i) != null)
+ {
+ ProcessHelper.SetValue(processedRecord, i, ProcessHelper.GetValue(lastRecord, i));
+ }
+ }
+
+ newRecords.Add(processedRecord);
+ }
+
+ if (isNew)
+ db.Layers.Add(processedLayer);
+ else
+ db.Layers.Update(processedLayer);
+ controller.SaveRecords(processedLayer.Id, newRecords, Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D"));
+ db.SaveChanges();
+ }
+}
\ No newline at end of file