//creo un nuovo file "file" //creo il gestore dell'evento che mi dici chi sta mandando l'evento e qual'è public static void Gestore(object sender, FileSystemEventArgs file) { List <Spesa> spese = new List <Spesa>(); if (file.Name == "spese.txt") { Console.WriteLine("Un nuovo file è stato creato: " + file.Name); Console.WriteLine(); //deve aspettare di finire di leggere il file Thread.Sleep(1000); //legge l'intero file using (StreamReader reader = File.OpenText(file.FullPath)) { //stampa il nome del file che sta leggendo Console.WriteLine("- Inizio File:"); Console.WriteLine(); string line; //leggo ogni riga finchè non è null while ((line = reader.ReadLine()) != "") { Console.WriteLine(line); string[] riga = line.Split(","); Spesa spesa = new Spesa { Data = riga[0], Categoria = riga[1], Descrizione = riga[2], Importo = Convert.ToDouble(riga[3]) }; spese.Add(spesa); } Console.WriteLine(); Console.WriteLine("- Fine File"); Console.WriteLine(); //chiudo il reader reader.Close(); //factory List <Double> Rimborsi = new List <double>(); foreach (var category in spese) { var categoria = category.Categoria; var euro = category.Importo; double rimborso = Factory.Factory.FatoryCategoria(categoria, euro); Rimborsi.Add(rimborso); } //creo le istanze della catena di responsabilità List <string> LivApprovazione = new List <string>(); var manager = new ManagerHandler(); var opManager = new OperationalManagerHandler(); var ceo = new CEOHandler(); //concateniamo i vari handler: monkey, dog, cat manager.SetNext(opManager).SetNext(ceo); //per ogno spesa la passo a chi la deve rimborsare foreach (var soldi in spese) { Console.WriteLine("Spese: " + soldi.Importo); //metto solo il primo anello della catena, che se non è lui la manda agli anelli dopo var result = manager.Handle(soldi.Importo); if (result != null) { Console.WriteLine(result); LivApprovazione.Add(result); Console.WriteLine(); } else { Console.WriteLine(soldi.Importo + " non è stato pagatto da nessuno!"); LivApprovazione.Add("-"); Console.WriteLine(); } } //creo il nuovo file List <Spesa> speseRimborsate = new List <Spesa>(); //scrivere su un file using (StreamWriter writer = File.CreateText(@"C:\Users\maria.chiara.colla\Documents\EsamiAccademy\week1\Spese\spese_elaborate.txt")) { int i = 0; foreach (var riga in spese) { if (LivApprovazione[i] != "-") { writer.WriteLine(riga.Data + "," + riga.Categoria + "," + riga.Descrizione + "," + riga.Importo + "," + "APPROVATA," + LivApprovazione[i] + "," + Rimborsi[i]); i++; } else { writer.WriteLine(riga.Data + "," + riga.Categoria + "," + riga.Descrizione + "," + riga.Importo + "," + "NEGATA," + LivApprovazione[i] + "," + "-"); i++; } } writer.Close(); } } } return; }
public static List <string> Get(List <string> testo) { List <string> letturaFile = new List <string>(); letturaFile = testo; string[] p = null; string primaRiga = null; List <string> categoria = new List <string>(); List <string> importo = new List <string>(); List <string> livelloDiApprovazione = new List <string>(); List <string> categoriaApprovata = new List <string>(); List <string> data = new List <string>(); List <string> descrizione = new List <string>(); for (int i = 0; i < letturaFile.Count; i++) { if (i == 0) { primaRiga = letturaFile[i]; } else { p = letturaFile[i].Split(";"); data.Add(p[0]); categoria.Add(p[1]); descrizione.Add(p[2]); importo.Add(p[3]); } } //Gestione approvazione var ceo = new CEOHandler(); var manager = new ManagerHandler(); var operationalManager = new OperationalManagerHandler(); //creazione catena handler ceo.SetNext(manager).SetNext(operationalManager); int count = 0; List <string> importoRimborsato = new List <string>(); List <string> pApp = new List <string>(); foreach (var i in importo) { var result = ceo.Handle(i); if (result != null) { pApp.Add(result); livelloDiApprovazione.Add("APPROVATA"); categoriaApprovata.Add(categoria[count]); //Importo rimborsato in base alla categoria int x = Factory.GestioneImporto.GetImporto(categoria[count], i); importoRimborsato.Add(x.ToString()); } else { pApp.Add("-"); livelloDiApprovazione.Add("RESPINTA"); importoRimborsato.Add("-"); } count++; } List <string> lista = new List <string>(); lista.Add(primaRiga); for (int i = 0; i < livelloDiApprovazione.Count; i++) { lista.Add($"{data[i]}; {categoria[i]}; {descrizione[i]}; {livelloDiApprovazione[i]}; {pApp[i]}; {importoRimborsato[i]}"); } return(lista); }