// 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("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("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("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); } } }