Exemplo n.º 1
0
        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");
            }
        }
Exemplo n.º 2
0
        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");
            //    }
            //}
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        // 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);
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 6
0
        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')
            {
                ;
            }
        }