Example #1
0
        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);
        }
Example #2
0
        //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;
        }
Example #3
0
        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')
            {
                ;
            }
        }