From 23ef41089f4f2e0b783365c805a776b222e8cb1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zieli=C5=84ski?= Date: Sat, 7 Oct 2023 14:53:27 +0200 Subject: [PATCH] processedLayer - save fix --- WebAPI/Controllers/LayersController.cs | 9 ++- .../dataProcessors/deaggregation.processor.cs | 60 ++++++++++++------- 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/WebAPI/Controllers/LayersController.cs b/WebAPI/Controllers/LayersController.cs index 84bd298..fbe1d84 100644 --- a/WebAPI/Controllers/LayersController.cs +++ b/WebAPI/Controllers/LayersController.cs @@ -248,16 +248,15 @@ namespace WebAPI.Controllers return BadRequest(); } else { - Layer? processedLayer = null; switch (processType) { case "Copy": - CopyProcessor cp = new CopyProcessor(db, googleSheetValues, this); - cp.process(sourceLayer, processWorker?.Id); + //CopyProcessor cp = new CopyProcessor(db, googleSheetValues, this); + //cp.process(sourceLayer, processWorker?.Id); break; case "Deaggregation": - DeaggregationProcessor dp = new DeaggregationProcessor(db, googleSheetValues); - processedLayer = dp.process(sourceLayer, processWorker?.Id); + DeaggregationProcessor dp = new DeaggregationProcessor(db, googleSheetValues, this); + dp.process(sourceLayer, processWorker?.Id); break; } } diff --git a/WebAPI/dataProcessors/deaggregation.processor.cs b/WebAPI/dataProcessors/deaggregation.processor.cs index f8b0412..ed93602 100644 --- a/WebAPI/dataProcessors/deaggregation.processor.cs +++ b/WebAPI/dataProcessors/deaggregation.processor.cs @@ -1,7 +1,9 @@ using Google.Apis.Sheets.v4; +using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System; using System.Globalization; +using WebAPI.Controllers; using WebAPI.Models; namespace WebAPI.dataProcessors @@ -10,16 +12,19 @@ namespace WebAPI.dataProcessors { private AppDbContext db; private SpreadsheetsResource.ValuesResource googleSheetValues; + private LayersController controller; public DeaggregationProcessor( AppDbContext _db, - SpreadsheetsResource.ValuesResource _googleSheetValues) + SpreadsheetsResource.ValuesResource _googleSheetValues, + LayersController _controller) { db = _db; googleSheetValues = _googleSheetValues; + controller = _controller; } - public Layer process(Layer sourceImportWorker, Guid? parentId) + public void process(Layer sourceImportWorker, Guid? parentId) { string? sheetId = sourceImportWorker.Records!.Where(x => x.Code == "SheetId").FirstOrDefault()?.Desc1; if (sheetId == null) @@ -65,17 +70,34 @@ namespace WebAPI.dataProcessors throw new Exception($"ImportMonth cell is empty, {sourceImportWorker.Name}"); } - Layer response = new Layer - { - Id = Guid.NewGuid(), - Source = "", - Type = LayerType.processed, - ParentId = parentId, - Number = db.Layers.Count() + 1, - Records = new List(), - // Sources = new List() - }; - response.Name = $"L{response.Number}-P-{name}-{year}/{month}-{DateTime.Now.ToString("yyyyMMddHHmm")}"; + + Layer? processedLayer = db.Layers + .Where(x => x.ParentId == parentId) + .OrderByDescending(x => x.CreatedAt) + .FirstOrDefault(); + + if (processedLayer == null) + { + processedLayer = new Layer + { + Id = Guid.NewGuid(), + Source = "", + Type = LayerType.processed, + ParentId = parentId, + Number = db.Layers.Count() + 1, + }; + processedLayer.Name = $"L{processedLayer.Number}-P-{name}-{year}/{month}-{DateTime.Now.ToString("yyyyMMddHHmm")}"; + 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; + 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 dataSources = db.Layers .Include(x => x.Records) @@ -97,9 +119,7 @@ namespace WebAPI.dataProcessors } */ - List allRecords = dataSources.SelectMany(x => x.Records!).ToList(); - - + List allRecords = dataSources.SelectMany(x => x.Records!).Where(x => x.Code == "500").ToList(); foreach (Record baseRecord in dataSources.First()?.Records!) { @@ -123,8 +143,6 @@ namespace WebAPI.dataProcessors setValue(processedRecord, 1, firstVal); previousValue = firstVal; //days 2-29/30 - - for (int i=2; i