WIP: refactor

This commit is contained in:
Michał Zieliski
2024-06-18 19:40:16 +02:00
parent c2a98e0386
commit a0a228f86d
24 changed files with 1415 additions and 1654 deletions

View File

@@ -1,99 +1,121 @@
using System.Globalization;
using Google.Apis.Drive.v3.Data;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using WebAPI.Models;
using static Google.Apis.Drive.v3.FilesResource;
namespace WebAPI.Exports
namespace WebAPI.Exports;
public class GoogleSheetExport
{
public class googleSheetExport
private readonly GoogleDriveHelper _googleDriveHelper;
private readonly SpreadsheetsResource.ValuesResource _googleSheetValues;
private readonly IConfiguration _configuration;
public GoogleSheetExport(
GoogleDriveHelper googleDriveHelper,
SpreadsheetsResource.ValuesResource googleSheetValues,
IConfiguration configuration)
{
private GoogleDriveHelper googleDriveHelper;
private SpreadsheetsResource.ValuesResource googleSheetValues;
private readonly IConfiguration configuration;
public googleSheetExport(
GoogleDriveHelper _googleDriveHelper,
SpreadsheetsResource.ValuesResource _googleSheetValues,
IConfiguration _configuration)
_googleDriveHelper = googleDriveHelper;
_googleSheetValues = googleSheetValues;
_configuration = configuration;
}
public void Export(Layer layer)
{
if (_googleDriveHelper.Service is null)
{
googleDriveHelper = _googleDriveHelper;
googleSheetValues = _googleSheetValues;
configuration = _configuration;
throw new Exception("Google Drive API not initialized");
}
public void export(Layer layer)
try
{
if (googleDriveHelper.Service is null)
{
throw new Exception("Google Drive API not initialized");
}
try
{
List<IList<object>> data = new List<IList<object>>() { new List<object>() { layer.Name! } };
switch (layer.Type)
var data = new List<IList<object>> { new List<object> { layer.Name! } };
switch (layer.Type)
{
case LayerType.import:
{
case LayerType.import:
{
data.Add(new List<object> { "Code", "Value1" });
foreach (Record record in layer.Records!)
{
data.Add(new List<object> { record.Code!, record.Value1! });
}
break;
}
case LayerType.administration:
{
data.Add(new List<object> { "Code", "Desc1"});
foreach (Record record in layer.Records!)
{
data.Add(new List<object> { record.Code!, record.Desc1!});
}
break;
}
case LayerType.processed:
{
data.Add(new List<object> { "Code", "Value1", "Value2", "Value3", "Value3",
"Value5", "Value6", "Value7", "Value8", "Value9", "Value10",
"Value11", "Value12", "Value13", "Value14", "Value15", "Value16",
"Value17", "Value18", "Value19", "Value20", "Value21", "Value22",
"Value23", "Value24", "Value25", "Value26", "Value27", "Value28",
"Value29", "Value30", "Value31", "Value32"});
foreach (Record record in layer.Records!)
{
data.Add(new List<object> { record.Code!, record.Value1!, record.Value2!, record.Value3!, record.Value4!,
record.Value5!, record.Value6!, record.Value7!, record.Value8!, record.Value9!, record.Value10!,
record.Value11!, record.Value12!, record.Value13!, record.Value14!, record.Value15!, record.Value16!,
record.Value17!, record.Value18!, record.Value19!, record.Value20!, record.Value21!, record.Value22!,
record.Value23!, record.Value24!, record.Value25!, record.Value26!, record.Value27!, record.Value28!,
record.Value29!, record.Value30!, record.Value31!, record.Value32!});
}
break;
}
data.Add(new List<object> { "Code", "Value1" });
data.AddRange(layer.Records!.Select(record => new List<object> { record.Code!, record.Value1! }));
break;
}
case LayerType.administration:
{
data.Add(new List<object> { "Code", "Desc1"});
data.AddRange(layer.Records!.Select(record => new List<object> { record.Code!, record.Desc1! }));
break;
}
case LayerType.processed:
{
data.Add(new List<object> { "Code", "Value1", "Value2", "Value3", "Value3",
"Value5", "Value6", "Value7", "Value8", "Value9", "Value10",
"Value11", "Value12", "Value13", "Value14", "Value15", "Value16",
"Value17", "Value18", "Value19", "Value20", "Value21", "Value22",
"Value23", "Value24", "Value25", "Value26", "Value27", "Value28",
"Value29", "Value30", "Value31", "Value32"});
Google.Apis.Drive.v3.Data.File body = new Google.Apis.Drive.v3.Data.File();
body.Name = $"{DateTime.Now.ToString(new CultureInfo("pl-PL"))}";
body.MimeType = "application/vnd.google-apps.spreadsheet";
body.Parents = new List<string?> { configuration["exportDirectory"] };
CreateRequest request = googleDriveHelper.Service.Files.Create(body);
var file = request.Execute();
string sheetId = file.Id;
var range = $"Sheet1!A1:AG${data.Count}";
ValueRange valueRange = new ValueRange() { Values = data};
var updateRequest = googleSheetValues.Update(valueRange, sheetId, range);
updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW;
updateRequest.Execute();
} catch (Exception e)
{
Console.WriteLine(e.ToString());
data.AddRange(layer.Records!.Select(record => new List<object>
{
record.Code!,
record.Value1!,
record.Value2!,
record.Value3!,
record.Value4!,
record.Value5!,
record.Value6!,
record.Value7!,
record.Value8!,
record.Value9!,
record.Value10!,
record.Value11!,
record.Value12!,
record.Value13!,
record.Value14!,
record.Value15!,
record.Value16!,
record.Value17!,
record.Value18!,
record.Value19!,
record.Value20!,
record.Value21!,
record.Value22!,
record.Value23!,
record.Value24!,
record.Value25!,
record.Value26!,
record.Value27!,
record.Value28!,
record.Value29!,
record.Value30!,
record.Value31!,
record.Value32!
}));
break;
}
default:
throw new Exception("Wrong LayerType");
}
var body = new Google.Apis.Drive.v3.Data.File
{
Name = $"{DateTime.Now.ToString(new CultureInfo("pl-PL"))}",
MimeType = "application/vnd.google-apps.spreadsheet",
Parents = new List<string?> { _configuration["exportDirectory"] }
};
var request = _googleDriveHelper.Service.Files.Create(body);
var file = request.Execute();
var sheetId = file.Id;
var range = $"Sheet1!A1:AG${data.Count}";
var valueRange = new ValueRange { Values = data};
var updateRequest = _googleSheetValues.Update(valueRange, sheetId, range);
updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.RAW;
updateRequest.Execute();
} catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}