94 lines
3.1 KiB
C#
94 lines
3.1 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?");
|
|
}
|
|
|
|
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?");
|
|
}
|
|
|
|
// verifico se devo generare i file...
|
|
if (currConf.FileOutReq == "FL")
|
|
{
|
|
// 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 elencoRighe = currSim.GetDataRows(currConf.FillMode, currConf.FileOutReq, giornata);
|
|
// scrivo sul file mensile i dati del singolo giorno...
|
|
string monthFile = Path.Combine("", $"{currConf.FillMode}_{currConf.FileOutReq}_{giornata.dtStart:yyyy-MM}.csv");
|
|
string fileOutPath=Path.Combine(currConf.OutFolder, monthFile);
|
|
if(!File.Exists(fileOutPath))
|
|
{
|
|
File.Create(fileOutPath);
|
|
}
|
|
// vado in append...
|
|
File.AppendAllLines(fileOutPath, elencoRighe);
|
|
}
|
|
}
|
|
} |