public static string Chain(int spesa) { //Costruisco gli oggetti della catena var manager = new Manager(); var operational = new OperationalManager(); var ceo = new Ceo(); //Concateno gli anelli manager.Next(operational).Next(ceo); //Gli passo le spese per approvarle var approvata = manager.Handle(spesa); if (approvata != null) { //Se qualcuno la riesce a gestire stampa il risultato Console.WriteLine(approvata); return(approvata); } else { Console.WriteLine($"Nessuno può approvare una spesa di {spesa} euro"); return("RESPINTA"); } }
public static void Approve(ICategoria spesa) { var manager = new Manager(); var OpManager = new OperationalManager(); var CEO = new CEO(); //concateno i livelli di approvazione manager.SetNext(OpManager).SetNext(CEO); List <ICategoria> spese = new List <ICategoria> { }; //foreach (var import in spese) //{ // var approve = manager.Handle(import); // if (approve != null) // { // //approvazione // } // else if (import > 2500) // { // Console.WriteLine($"La spesa non è stata approvata"); // } // else // { // Console.WriteLine($"ERRORE"); // } //} }
static void Main(string[] args) { FileSystemWatcher fsw = new FileSystemWatcher(); //specifico la directory da tenere sotto controllo fsw.Path = @"C:\Users\simona.loperfido\Desktop\7 MAGGIO\ProvaPratica"; //filtro che caratterizza i file da tenere sotto controllo fsw.Filter = "*.txt"; //richiedo la notifica di un insieme di eventi fsw.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.LastAccess; //abilitiamo le notifiche fsw.EnableRaisingEvents = true; //multicast delegate -> alla creazione del file viene gestito l'evento fsw.Created += GestioneSpesa.HandleNewTextFile; IFileSerializable spesa = new GestioneSpesa(); spesa.LoadFromFile("spesa.txt"); spesa.SaveToFile("spesa.txt"); //Dovrei fare queste operazioni per ogni riga che vado a leggere //Chain of Responsibility pattern var manager = new Manager(); var operationalManager = new OperationalManager(); var ceo = new Ceo(); var noApp = new NoApprovazione(); //catena di responsabilità: manager.SetNext(operationalManager).SetNext(ceo).SetNext(noApp); //List<double> importo = new List<double> { 400, 560, 2000, 150, 60, 2700 }; //foreach (var imp in importo) //{ // Console.WriteLine($"Hai speso {imp} euro - Sarà approvata la tua spesa?"); // var result = manager.Handle(imp); //invio richiesta // //gestione risultato // if (result != null) // { // Console.WriteLine(result); // } // else // { // Console.WriteLine("Nessuna spesa viene approvata sopra i " + imp); // } //} //Factory pattern //ICategoria categoria = CategoriaFactory.FactoryCategoria(param); //Console.WriteLine(categoria.TipoCategoria()); }
// metodo per definire la catena public static AbstractHandler SetExpenseChain() { // inizializzazione di un handler var manager = new ManagerHandler(); var operationalManager = new OperationalManager(); var ceo = new CeoHandler(); manager.SetNext(operationalManager).SetNext(ceo); return(manager); }
public void LoadFromFile(string fileName, MyExpense myExpense) { var manager = new Manager(); var operationalManager = new OperationalManager(); var CEO = new CEO(); try { using (StreamReader reader = File.OpenText($"C:\\Users\\WORK\\Desktop\\MyFolder\\{fileName}")) { string myLine = Console.ReadLine(); string[] data = myLine.Split(';'); myExpense.Data = Convert.ToDateTime(data[0]); myExpense.Categoria = data[1]; myExpense.Descrizione = data[2]; myExpense.ImportoSpesa = Convert.ToInt32(data[3]); reader.Close(); manager.SetNextInLine(operationalManager).SetNextInLine(CEO); string result = manager.Approve(myExpense.ImportoSpesa); if (result.Equals("RESPINTA;-;-")) { string[] denial = result.Split(';'); myExpense.Approvazione = denial[0]; myExpense.LvlApprovazione = denial[1]; myExpense.ImportoRimborso = denial[2]; } else { string[] approved = result.Split(';'); myExpense.Approvazione = approved[0]; myExpense.LvlApprovazione = approved[1]; myExpense.ImportoRimborso = Convert.ToString(MyFactory.ExpenseFactory(myExpense.Categoria, myExpense.ImportoSpesa)); } } } catch (IOException ex) { Console.WriteLine(ex.Message); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
static void Main(string[] args) { FileSystemWatcher watcher = new FileSystemWatcher(); //Directory monitorata watcher.Path = @"C:\Users\graziella.caputo\Desktop\PROVA\ProvaGC"; //File d'interesse watcher.Filter = "*.txt"; //Notifico l'evento in cui venga creato il file d'interesse watcher.NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.LastAccess; //Abilito notifiche watcher.EnableRaisingEvents = true; //Istanzio oggetti di tipo spesa Spesa spesa1 = new Spesa("2020/12/3", "Viaggio", "Roma-Milano", 50); Spesa spesa2 = new Spesa("2020/7/9", "Alloggio", "Hotel Eden", 250); Spesa spesa3 = new Spesa("2020/7/9", "Vitto", "Pranzo", 34); Spesa spesa4 = new Spesa("2020/7/9", "Viaggio", "Roma-Berlino", 350); Spesa spesa5 = new Spesa("2020/8/10", "Altro", "Acquisti Personali", 3000); Spesa spesa6 = new Spesa("2021/7/9", "Alloggio", "Hotel Luxury", 1500); Spesa spesa7 = new Spesa("2021/7/9", "Vitto", "Cena", 500); //Creo una lista con le spese effettuate List <Spesa> list = new List <Spesa>(); list.Add(spesa1); list.Add(spesa2); list.Add(spesa3); list.Add(spesa4); list.Add(spesa5); list.Add(spesa6); list.Add(spesa7); //Scrivo su file tutte le spese effettuate foreach (Spesa sp in list) { sp.SaveToFile("spese.txt"); } //Al momento della creazione gestisco l'evento che apre e legge il file watcher.Created += Spesa.HandleNewTextFile; watcher.Changed += Spesa.HandleNewTextFile; Console.WriteLine("Chain of Responsibility"); var ceo = new CEO(); var manager = new Manager(); var operationalManager = new OperationalManager(); //Catena di responsabilità manager.SetNext(operationalManager).SetNext(ceo); foreach (Spesa s in Spesa.loadShopping) { Console.WriteLine($"Importo {s} approvato?"); var result = manager.Handle(s.Importo); //invio della richiesta //gestione del risultato if (result) { //USO IL FACTORY PATTERN //se viene restituito true quindi la spesa è stata approvata perchè l'importo non superiore a 2500 ICategory tipoSpesa = Factory.FactoryFunction(s.Categoria, s.Importo); s.SaveToFileElab("spese_elaborate.txt"); Console.WriteLine(tipoSpesa.CalcoloRimborso(s.Importo)); } else { s.SaveToFileRespinta("spese_elaborate.txt"); } Console.WriteLine($"Importo {s.Importo} non approvato!"); } Console.WriteLine("Inserisci q per chudere il programma"); while (Console.Read() != 'q') { ; } }