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); }
//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; }
static void Main(string[] args) { //Creazione FileSystem Wathcer FileSystemWatcher fsw = new FileSystemWatcher(); Console.WriteLine("Watcher activated"); //path della cartella da controllare fsw.Path = @"C:\Users\tiziana.camboni\Desktop\Academy\Academy2\Settimana1\Week1Test"; // //controllo il file spese.txt fsw.Filter = "spese.txt"; //imposto notifiche fsw.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.FileName | NotifyFilters.DirectoryName; //abilitazione notifiche fsw.EnableRaisingEvents = true; // Gestione della creazione-> richiama metodo nella classe eventmanagement fsw.Created += EventManagementWatcher.NewFileAllert; var expensesList = EventManagementWatcher.NewListExp(); // chain of resp var ceo = new CEOHandler(); var OpManager = new OperationManagerHandler(); var Manager = new ManagerHandler(); Manager.SetNext(OpManager).SetNext(ceo); //concatenazione foreach (var item in expensesList) { var result = Manager.Handle(item.import); if (!(result == 0 || result == 1 || result == 2)) { Console.WriteLine("non è stata gestita"); } //string livello = null; switch (result) { case 0: item.livello = "Manager"; break; case 1: item.livello = "Operator Manager"; break; case 2: item.livello = "CEO"; break; } } //mi tiene il programma aperto durante il controllo Console.WriteLine("Press q to exit"); while (Console.Read() != 'q') { ; } }