100 lines
4.7 KiB
C#
100 lines
4.7 KiB
C#
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
|
|
{
|
|
public class googleSheetExport
|
|
{
|
|
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)
|
|
{
|
|
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)
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
|
|
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());
|
|
}
|
|
}
|
|
}
|
|
}
|