From 8ab34f0189bd4e73fc7e9eedc7b37751c24fae6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Zieli=C5=84ski?= Date: Thu, 28 Dec 2023 14:26:29 +0100 Subject: [PATCH] AB - google export --- WebAPI/Controllers/LayersController.cs | 1 + ....MultiSourceCopySelectedCodes.processor.cs | 124 ++++++++++++------ 2 files changed, 85 insertions(+), 40 deletions(-) diff --git a/WebAPI/Controllers/LayersController.cs b/WebAPI/Controllers/LayersController.cs index e38baff..71821f0 100644 --- a/WebAPI/Controllers/LayersController.cs +++ b/WebAPI/Controllers/LayersController.cs @@ -385,6 +385,7 @@ namespace WebAPI.Controllers { T3MultiSourceCopySelectedCodesProcessor processor = new T3MultiSourceCopySelectedCodesProcessor(db, googleSheetValues, this); processor.process(processWorker!); + processor.updateReport(); break; } } diff --git a/WebAPI/dataProcessors/t3.MultiSourceCopySelectedCodes.processor.cs b/WebAPI/dataProcessors/t3.MultiSourceCopySelectedCodes.processor.cs index 539c16c..9aa9b70 100644 --- a/WebAPI/dataProcessors/t3.MultiSourceCopySelectedCodes.processor.cs +++ b/WebAPI/dataProcessors/t3.MultiSourceCopySelectedCodes.processor.cs @@ -1,5 +1,6 @@ using DiunaBIWebAPI.dataProcessors; using Google.Apis.Sheets.v4; +using Google.Apis.Sheets.v4.Data; using Microsoft.EntityFrameworkCore; using WebAPI.Controllers; using WebAPI.Models; @@ -100,51 +101,13 @@ namespace WebAPI.dataProcessors CreatedAt = DateTime.UtcNow, ModifiedAt = DateTime.UtcNow }; - for (var i = 1; i < 33; i++) { + for (var i = 1; i < 33; i++) + { ProcessHelper.setValue(newRecord, i, ProcessHelper.getValue(x, i)); } return newRecord; }) .ToList(); - - /* - foreach (Record baseRecord in dataSources.Last()?.Records!) - { - - List codeRecords = allRecords.Where(x => - x.Code!.Substring(1) == baseRecord.Code!.Substring(1)) - .ToList(); - List codeRecordsValidation = allRecords.Where(x => - x.Code!.Substring(1) == baseRecord.Code!.Substring(1)) - .ToList(); - Record processedRecord = new Record - { - Id = Guid.NewGuid(), - Code = $"19{baseRecord.Code!.Substring(Math.Max(0, baseRecord.Code!.Length - 2))}", - CreatedAt = DateTime.UtcNow, - ModifiedAt = DateTime.UtcNow - }; - Record validationRecord = new Record(); - for (var i = 1; i < 33; i++) - { - ProcessHelper.setValue(processedRecord, i, - codeRecords.Sum(x => ProcessHelper.getValue(x, i))); - - ProcessHelper.setValue(validationRecord, i, - codeRecordsValidation.Sum(x => ProcessHelper.getValue(x, i))); - - if ( - ProcessHelper.getValue(processedRecord,i) != - ProcessHelper.getValue(validationRecord, i)) - { - throw new Exception($"ValidationError: Code {baseRecord.Code!}, " + - $"Value{i} ({ProcessHelper.getValue(processedRecord, i)} | " + - $"{ProcessHelper.getValue(validationRecord, i)})"); - } - } - newRecords.Add(processedRecord); - } - */ if (isNew) { db.Layers.Add(processedLayer); @@ -156,5 +119,86 @@ namespace WebAPI.dataProcessors controller.SaveRecords(processedLayer.Id, newRecords, Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D")); db.SaveChanges(); } + + public void updateReport() + { + string sheetId = "1pph-XowjlK5CIaCEV_A5buK4ceJ0Z0YoUlDI4VMkhhA"; + string sheetName = "Raport_AB_Eksport"; + // load google spreadsheet with sheetId + SpreadsheetsResource.ValuesResource.GetRequest request = googleSheetValues.Get(sheetId, "C4:CH4"); + var response = request.Execute(); + Layer? november = db.Layers + .Where(x => x.Number == 491) + .Include(x => x.Records) + .FirstOrDefault(); + + Layer? december = db.Layers + .Where(x => x.Number == 509) + .Include(x => x.Records) + .FirstOrDefault(); + + List novemberValues = new List(); + List decemberValues = new List(); + + var codesRow = response.Values[0]; + foreach (string code in codesRow) + { + Record? novemberRecord = november!.Records?.SingleOrDefault(x => x.Code == code); + Record? decemberRecord = december!.Records?.SingleOrDefault(x => x.Code == code); + if (novemberRecord != null) + { + float? novemberValue = ProcessHelper.getValue(novemberRecord, 32); + novemberValues.Add(novemberValue!.Value); + } else { + novemberValues.Add(""); + } + if (decemberRecord != null) + { + float? decemberValue = ProcessHelper.getValue(decemberRecord, 32); + decemberValues.Add(decemberValue!.Value); + } else { + decemberValues.Add(""); + } + } + + + ValueRange novemberValueRange = new ValueRange + { + Values = new List> { novemberValues } + }; + SpreadsheetsResource.ValuesResource.UpdateRequest updateNovember = googleSheetValues.Update(novemberValueRange, sheetId, $"{sheetName}!C10:CH10"); + updateNovember.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED; + updateNovember.Execute(); + + ValueRange decemberValueRange = new ValueRange + { + Values = new List> { decemberValues } + }; + SpreadsheetsResource.ValuesResource.UpdateRequest updateDecember = googleSheetValues.Update(decemberValueRange, sheetId, $"{sheetName}!C11:CH11"); + updateDecember.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED; + updateDecember.Execute(); + } + + private void updateCell(string sheetId, string range, float value) + { + ValueRange valueRange = new ValueRange + { + Values = new List> { new List { value } } + }; + SpreadsheetsResource.ValuesResource.UpdateRequest updateRequest = googleSheetValues.Update(valueRange, sheetId, range); + updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED; + updateRequest.Execute(); + } + private string intToExcelColumnName(int number) + { + string columnName = ""; + while (number > 0) + { + int modulo = (number - 1) % 26; + columnName = Convert.ToChar(65 + modulo).ToString() + columnName; + number = (number - modulo) / 26; + } + return columnName; + } } }