131 lines
4.7 KiB
C#
131 lines
4.7 KiB
C#
// See https://aka.ms/new-console-template for more information
|
|
using MapoDataFiller;
|
|
using MapoDataFiller.Filler;
|
|
using Spectre.Console;
|
|
|
|
|
|
AnsiConsole.Write(
|
|
new FigletText("MapoDataFiller")
|
|
.LeftAligned()
|
|
.Color(Color.Blue1));
|
|
var rule = new Rule("[green]Setup data[/]");
|
|
rule.Alignment = Justify.Left;
|
|
AnsiConsole.Write(rule);
|
|
|
|
// recupero configurazione...
|
|
MConf currConf = new MConf();
|
|
if (File.Exists("conf.yaml"))
|
|
{
|
|
currConf = CMan.readConf("conf.yaml");
|
|
}
|
|
AnsiConsole.WriteLine();
|
|
|
|
AnsiConsole.MarkupLineInterpolated($"Conf ConfDir: [yellow]{currConf.ConfDir}[/]");
|
|
var pathOk = AnsiConsole.Confirm("Confermi ConfDir?");
|
|
while (!pathOk)
|
|
{
|
|
currConf.ConfDir = AnsiConsole.Ask<string>("Inserisci ConfDir desiderato:");
|
|
AnsiConsole.WriteLine(currConf.ConfDir);
|
|
pathOk = AnsiConsole.Confirm("Confermi ConfDir?");
|
|
}
|
|
|
|
// ora leggo i file di conf yaml e presento opzione...
|
|
if (!Directory.Exists(currConf.ConfDir))
|
|
{
|
|
// segnalo errore, credo directory
|
|
AnsiConsole.WriteLine("Conf directory not found! exiting...");
|
|
Directory.CreateDirectory(currConf.ConfDir);
|
|
}
|
|
else
|
|
{
|
|
// leggo elenco file yaml e presento alternativa
|
|
var fileOpt = Directory.GetFiles(currConf.ConfDir, "*.yaml");
|
|
if (fileOpt.Length == 0)
|
|
{
|
|
AnsiConsole.WriteLine("Sim Conf file not found, exiting!");
|
|
}
|
|
else
|
|
{
|
|
var fileSel = AnsiConsole.Prompt(
|
|
new SelectionPrompt<string>()
|
|
.Title("Quale file vuoi [green]processare[/]?")
|
|
.PageSize(10)
|
|
.MoreChoicesText("[grey](Usare up/down per scorrere)[/]")
|
|
.AddChoices(fileOpt));
|
|
|
|
// leggo la conf del file selezionato...
|
|
if (!string.IsNullOrEmpty(fileSel))
|
|
{
|
|
currConf = CMan.readConf(fileSel);
|
|
|
|
#if false
|
|
// procedo come prima
|
|
AnsiConsole.MarkupLineInterpolated($"Conf FillMode: [yellow]{currConf.FillMode}[/]");
|
|
var fillOK = AnsiConsole.Confirm("Confermi FillMode?");
|
|
while (!fillOK)
|
|
{
|
|
currConf.FillMode = AnsiConsole.Ask<string>("Inserisci il modo desiderato:");
|
|
AnsiConsole.WriteLine(currConf.FillMode);
|
|
fillOK = AnsiConsole.Confirm("Confermi FillMode?");
|
|
}
|
|
|
|
AnsiConsole.MarkupLineInterpolated($"Conf HasHeader: [yellow]{currConf.HasHeader}[/]");
|
|
var headOK = AnsiConsole.Confirm("Confermi HasHeader?");
|
|
while (!headOK)
|
|
{
|
|
currConf.HasHeader = AnsiConsole.Ask<bool>("HasHeader (true/false)?");
|
|
AnsiConsole.WriteLine(currConf.HasHeader);
|
|
headOK = AnsiConsole.Confirm("Confermi HasHeader?");
|
|
}
|
|
#endif
|
|
|
|
// leggo timetable
|
|
string filePath = Path.Combine(currConf.ConfDir, currConf.TimeTable);
|
|
if (File.Exists(filePath))
|
|
{
|
|
var righe = File.ReadAllLines(filePath).ToList();
|
|
// se devo saltare
|
|
if (currConf.HasHeader)
|
|
{
|
|
righe = righe.Skip(1).ToList();
|
|
}
|
|
// svuoto cartella output
|
|
if (!Directory.Exists(currConf.OutFolder))
|
|
{
|
|
Directory.CreateDirectory(currConf.OutFolder);
|
|
}
|
|
var fileList = Directory.GetFiles(currConf.OutFolder);
|
|
foreach (var file in fileList)
|
|
{
|
|
File.Delete(file);
|
|
}
|
|
|
|
// verifico quale oggetto sim avviare... x ora SOLO interclays
|
|
InterClays currSim = new InterClays();
|
|
// ciclo su ogni record
|
|
foreach (var riga in righe)
|
|
{
|
|
// recupero dati del giorno corrente
|
|
var giornata = new DayConf("CsvDateDur", riga);
|
|
|
|
var simDataBlock = currSim.GetDataRows(currConf.CodIOB, giornata);
|
|
// scrivo sul file annuale i dati del singolo giorno...
|
|
string pathFileFL = Path.Combine(currConf.OutFolder, $"{currConf.CodIOB}_FL_{giornata.dtStart:yyyy}.csv");
|
|
if (!File.Exists(pathFileFL))
|
|
{
|
|
File.WriteAllText(pathFileFL, "");
|
|
}
|
|
string pathFileEL = Path.Combine(currConf.OutFolder, $"{currConf.CodIOB}_EL_{giornata.dtStart:yyyy}.csv");
|
|
if (!File.Exists(pathFileEL))
|
|
{
|
|
File.WriteAllText(pathFileEL, "");
|
|
}
|
|
// vado in append...
|
|
File.AppendAllLines(pathFileFL, simDataBlock.FlList);
|
|
File.AppendAllLines(pathFileEL, simDataBlock.EvList);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
} |