From 31436101be2b4a16c468acad6053afd7ab5c6965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zieli=C5=84ski?= Date: Wed, 11 Oct 2023 12:52:17 +0200 Subject: [PATCH] Deagregation processor fix --- WebAPI/Controllers/LayersController.cs | 5 +++++ .../dataProcessors/deaggregation.processor.cs | 17 +++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/WebAPI/Controllers/LayersController.cs b/WebAPI/Controllers/LayersController.cs index fbe1d84..c7d920c 100644 --- a/WebAPI/Controllers/LayersController.cs +++ b/WebAPI/Controllers/LayersController.cs @@ -405,6 +405,11 @@ namespace WebAPI.Controllers { try { + List toDelete = db.Records.Where(x => x.LayerId == id).ToList(); + if (toDelete.Count > 0) + { + db.Records.RemoveRange(toDelete); + } foreach (Record record in records) { record.CreatedById = currentUserId; diff --git a/WebAPI/dataProcessors/deaggregation.processor.cs b/WebAPI/dataProcessors/deaggregation.processor.cs index ed93602..5fd7ad8 100644 --- a/WebAPI/dataProcessors/deaggregation.processor.cs +++ b/WebAPI/dataProcessors/deaggregation.processor.cs @@ -93,12 +93,12 @@ namespace WebAPI.dataProcessors processedLayer.ModifiedAt = DateTime.UtcNow; db.Layers.Add(processedLayer); } - - processedLayer.Records = new List(); processedLayer.Sources = new List(); processedLayer.ModifiedById = Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D"); processedLayer.ModifiedAt = DateTime.UtcNow; + List newRecords = new List(); + List dataSources = db.Layers .Include(x => x.Records) .Where(x => x.ParentId == sourceImportWorker.Id @@ -119,7 +119,7 @@ namespace WebAPI.dataProcessors } */ - List allRecords = dataSources.SelectMany(x => x.Records!).Where(x => x.Code == "500").ToList(); + List allRecords = dataSources.SelectMany(x => x.Records!).ToList(); foreach (Record baseRecord in dataSources.First()?.Records!) { @@ -151,12 +151,13 @@ namespace WebAPI.dataProcessors .FirstOrDefault()?.Value1; if (dayVal == null) { + //TODO: missing day value? Should I log it? setValue(processedRecord, i, 0); } else { float processedVal = (dayVal ?? 0) - previousValue; setValue(processedRecord, i, processedVal); - previousValue = processedVal; + previousValue = dayVal ?? 0; } } //last day @@ -173,14 +174,18 @@ namespace WebAPI.dataProcessors setValue(processedRecord, lastDayInMonth, (lastVal ?? 0) - previousValue); } - processedLayer.Records.Add(processedRecord); + newRecords.Add(processedRecord); } - controller.SaveRecords(processedLayer.Id, processedLayer.Records, Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D")); + controller.SaveRecords(processedLayer.Id, newRecords, Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D")); db.Layers.Update(processedLayer); db.SaveChanges(); } private void setValue(Record record, int number, float? value) { + if (record.Code == "500") + { + Console.WriteLine("SetValue " + number + " | " + value); + } switch (number) { case 1: