public static void CreateSpesa(string utente)
        {
            Console.WriteLine("Inserisci la descrizione");
            string descrizione = Console.ReadLine();

            Console.WriteLine("Inserisci l'importo");
            decimal importo = 0;

            do
            {
                try
                {
                    importo = Convert.ToDecimal(Console.ReadLine());
                }
                catch
                {
                    Console.WriteLine("Errore, imserisci l'importo corretto!");
                }
            } while (importo == 0);

            Console.WriteLine("Inserisci la categoria");
            string categoria = Console.ReadLine();


            Spesa spesa = new Spesa()
            {
                Descrizione = descrizione,
                Utente      = utente,
                CategoriaId = repositoryCategorie.GetID(repositoryCategorie.GetByName(categoria)),
                Importo     = importo
            };

            repositorySpesa.Create(spesa);
        }
 public bool Update(Spesa item)
 {
     //approvare una spesa
     using (var context = new GestioneSpeseContext())
     {
         bool saved = false;
         //Gestisco la concorrenza
         do
         {
             try
             {
                 //Modifico lo stato
                 context.Entry <Spesa>(item).State = EntityState.Modified;
                 //Riporto le modifiche sul db
                 context.SaveChanges();
                 saved = true;
             }
             catch (DbUpdateConcurrencyException e)
             {
                 //Rollback: riporto tutti i valori modificati al valore originale
                 foreach (var entity in e.Entries)
                 {
                     var value = entity.GetDatabaseValues();
                     entity.OriginalValues.SetValues(value);
                 }
             }
         } while (saved == false);
         return(true);
     }
 }
Ejemplo n.º 3
0
        public bool Update(Spesa item)
        {
            using (GestioneSpesaContext db = new GestioneSpesaContext())
            {
                if (item == null)
                {
                    return(false);
                }

                var spesa = db.Spese.Find(item.SpeseId);
                if (spesa == null)
                {
                    return(false);
                }

                spesa.Approvato = item.Approvato;           //Dovrei fare l'update di ogni proprietà
                                                            // e tracciare l'update però sto risolvendo
                                                            // un problema e non avendo più tempo lo sto
                                                            // modificando in questo modo brutale
                db.SaveChanges();


                //try
                //{
                //    db.Entry<Spesa>(item).State = EntityState.Modified;
                //    db.SaveChanges();
                //}
                //catch (Exception e)
                //{
                //    Console.WriteLine(e.Message);
                //    return false;
                //}
                return(true);
            }
        }
        public bool Create(Spesa item)
        {
            using (var ctx = new GestioneSpeseContext())
            {
                if (item == null)
                {
                    return(false);
                }

                //Recupero la categoria
                var categoria = ctx.Categorie.Include(c => c.Spese)
                                .Where(x => x.Id == item.CategoriaId)
                                .SingleOrDefault();

                // Aggiungo la nuova spesa alla lista spese in categorie
                if (categoria != null)
                {
                    categoria.Spese.Add(item);
                }

                ctx.Add(item);
                ctx.SaveChanges();

                return(true);
            }
        }
Ejemplo n.º 5
0
        public static void CreazioneSpesa()
        {
            IRepositorySpese spesa = new RespositorySpesaEF()
            {
            };

            Console.WriteLine("Creazione Spesa:");
            Console.WriteLine("Inserisci Nome Utente:");
            string utente = Console.ReadLine();

            Console.WriteLine("Inserisci descrzione spesa:");
            string desc = Console.ReadLine();

            Console.WriteLine("Inserisci Categoria ID:");
            int c = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Inserisci importo:");
            decimal d = Convert.ToDecimal(Console.ReadLine());

            Spesa NewSpesa = new Spesa
            {
                Utente      = utente,
                Data        = DateTime.Now,
                Descrizione = desc,
                CategoriaId = c,
                Approvato   = false,
                Importo     = d
            };

            spesa.Create(NewSpesa);
        }
        public static bool Approvazione()
        {
            List <Spesa> lista = repositorySpesa.Elenco();

            //Creare la lista
            foreach (var item in lista)
            {
                Console.WriteLine(item.ToString());
            }

            Console.WriteLine("Dimmi l'id della spesa da approvare");
            int id = Convert.ToInt32(Console.ReadLine());

            Spesa spesa = repositorySpesa.GetById(id);

            return(repositorySpesa.ApprovazioneSpese(spesa));
        }
        public bool ApprovazioneSpese(Spesa spesa)
        {
            using (var ctx = new GestioneSpeseContext())
            {
                if (spesa == null)
                {
                    return(false);
                }

                spesa.Approvato = true;

                ctx.Update(spesa);
                ctx.SaveChanges();

                return(true);
            }
        }
Ejemplo n.º 8
0
        public bool Create(Spesa item)
        {
            using (GestioneSpesaContext db = new GestioneSpesaContext())
            {
                if (item == null)
                {
                    return(false);
                }

                var cat = db.Categoria.Include(s => s.Spese).Where(c => c.CategoriaId == item.CategoriaId).SingleOrDefault();
                if (cat == null)
                {
                    return(false);
                }

                cat.Spese.Add(item);
                db.Spese.Add(item);
                db.SaveChanges();
                return(true);
            }
        }
Ejemplo n.º 9
0
        public bool Create(Spesa item)
        {
            using (var ctx = new GestioneSpeseContex())
            {
                if (item == null)
                {
                    return(false);
                }

                var categoria = ctx.Categorie.Include(c => c.Spese)
                                .Where(c => c.Id == item.CategoriaId)
                                .SingleOrDefault();
                if (categoria != null)
                {
                    categoria.Spese.Add(item); //Aggiungo alle spese della relativa categoria
                }

                ctx.Spese.Add(item);
                ctx.SaveChanges();
                return(true);
            }
        }
Ejemplo n.º 10
0
 public bool Create(Spesa item)
 {
     //Inserire nuove spese
     using (var context = new GestioneSpeseContext())
     {
         if (item == null)
         {
             return(false);
         }
         //Una spesa è collegata a una categoria
         //Recupero la categoria
         var categoria = context.Categorie
                         .Where(s => s.ID == item.CategoriaID) //Prendo la categoria con ID alla FK
                         .SingleOrDefault();                   //è unica
         if (categoria == null)
         {
             return(false);         //Se non esiste la categoria non lo inserisco
         }
         categoria.Spese.Add(item); //Aggiungo la spesa nella lista di spese della categoria
         context.Spese.Add(item);   //Aggiungo la spesa alle spese
         context.SaveChanges();     //Aggiungo la modifica al database
         return(true);
     }
 }
Ejemplo n.º 11
0
        private void btn_Aggiungi_Click(object sender, RoutedEventArgs e)
        {
            string nome = Nome.Text;
            string qt   = Quantità.Text;

            if (string.IsNullOrWhiteSpace(nome))
            {
                MessageBox.Show("Inserisci un Nome.");
                return;
            }
            if (string.IsNullOrWhiteSpace(qt))
            {
                MessageBox.Show("Inserisci un Nome.");
                return;
            }
            int quantita = int.Parse(qt);

            Priorità priorita = (Priorità)priorità.SelectedValue;

            Spesa s = new Spesa(nome, quantita, priorita);

            spese.Add(s);
            lista.Items.Refresh();
        }
Ejemplo n.º 12
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')
            {
                ;
            }
        }
Ejemplo n.º 13
0
        //Gestisco l'interazione con l'utente
        public static void MostraMenu()
        {
            Console.WriteLine("Benvenuto!");
            int                  op            = 1;
            bool                 esci          = false;
            IRepositorySpese     spesaRepo     = new RepositorySpeseEF();
            IRepositoryCategorie categorieRepo = new RepositoryCategorie();

            do
            {
                Console.Clear();
                Console.WriteLine("Cosa vuoi fare?\n" +
                                  "1 - Inserisci una nuova spesa\n" +
                                  "2 - Approva una spesa\n" +
                                  "3 - Cancella una spesa\n" +
                                  "4 - Mostra le spese approvate\n" +
                                  "5 - Mostra le spese di un utente\n" +
                                  "6 - Mostra l'importo totale per ogni categoria\n" +
                                  "7 - Esci");
                bool corretto = true;
                do
                {
                    if (corretto == false || op < 1 || op > 7)
                    {
                        Console.WriteLine("Errore, riprova:");
                    }
                    corretto = Int32.TryParse(Console.ReadLine(), out op);
                } while (corretto == false || op < 1 || op > 7);

                switch (op)
                {
                case 1:
                    //Inserisci una nuova spesa
                    Spesa spesa = new Spesa();

                    List <Categorie> categorie = categorieRepo.MostraCategorie();
                    foreach (var categoria in categorie)
                    {
                        Console.WriteLine(categoria);
                    }
                    Console.WriteLine("Inserisci la categoria:");
                    bool categoriaCorretta = true;
                    int  nCategoria        = 1;
                    do
                    {
                        if (categoriaCorretta == false || nCategoria < 0 || nCategoria > 3)
                        {
                            Console.WriteLine("Errore, riprova:");
                        }
                        categoriaCorretta = Int32.TryParse(Console.ReadLine(), out nCategoria);
                    } while (categoriaCorretta == false || nCategoria < 0 || nCategoria > 3);
                    spesa.CategoriaID = nCategoria;
                    spesa.Data        = DateTime.Now;
                    spesa.Approvato   = false;
                    Console.WriteLine("Inserisci una descrizione:");
                    string descrizione = Console.ReadLine();
                    spesa.Descrizione = descrizione;
                    Console.WriteLine("Nome dell'utente:");
                    string utente = Console.ReadLine();
                    spesa.Utente = utente;
                    Console.WriteLine("Inserisci l'importo:");
                    bool    importoCorretto = true;
                    decimal importo         = 1;
                    do
                    {
                        if (importoCorretto == false || importo < 0)
                        {
                            Console.WriteLine("Errore, riprova:");
                        }
                        importoCorretto = Decimal.TryParse(Console.ReadLine(), out importo);
                    } while (importoCorretto == false || importo < 0);
                    spesa.Importo = importo;

                    if (spesaRepo.Create(spesa))
                    {
                        Console.WriteLine("Spesa inserita correttamente");
                    }
                    else
                    {
                        Console.WriteLine("Attenzione! Spesa non inserita");
                    }
                    break;

                case 2:
                    //Approva una spesa
                    List <Spesa> spese = spesaRepo.MostraSpese();
                    foreach (var item in spese)
                    {
                        Console.WriteLine(item);
                    }
                    Console.WriteLine("Quale spesa vuoi approvare?");
                    int   nSpesa           = Int32.Parse(Console.ReadLine());
                    Spesa spesaDaApprovare = spesaRepo.GetSpesa(nSpesa);
                    spesaDaApprovare.Approvato = true;
                    if (spesaRepo.Update(spesaDaApprovare))
                    {
                        Console.WriteLine("Spesa approvata con successo");
                    }
                    else
                    {
                        Console.WriteLine("Attenzione! Spesa non approvata");
                    }
                    break;

                case 3:
                    //Cancella una spesa
                    List <Spesa> mostraSpese = spesaRepo.MostraSpese();
                    foreach (var item in mostraSpese)
                    {
                        Console.WriteLine(item);
                    }
                    Console.WriteLine("Quale spesa vuoi cancellare?");
                    int spesaDaCacellare = Int32.Parse(Console.ReadLine());
                    if (spesaRepo.Delete(spesaDaCacellare))
                    {
                        Console.WriteLine("Spesa cancellata con successo");
                    }
                    else
                    {
                        Console.WriteLine("Attenzione! Spesa non cancellata");
                    }
                    break;

                case 4:
                    //Mostra le spese approvate
                    List <Spesa> speseApprovate = spesaRepo.GetSpeseApprovate();
                    if (speseApprovate.Count == 0)
                    {
                        Console.WriteLine("Non sono presenti spese approvate");
                    }
                    else
                    {
                        foreach (var item in speseApprovate)
                        {
                            Console.WriteLine($"{item}");
                        }
                    }
                    break;

                case 5:
                    //Mostra spese utente
                    Console.WriteLine("Inserisci il nome dell'utente:");
                    string       utenteS     = Console.ReadLine();
                    List <Spesa> speseUtente = spesaRepo.GetSpeseUtente(utenteS);
                    if (speseUtente.Count == 0)
                    {
                        Console.WriteLine($"L'utente non ha effettuato nessuna spesa");
                    }
                    else
                    {
                        foreach (var item in speseUtente)
                        {
                            Console.WriteLine(item);
                        }
                    }
                    break;

                case 6:
                    //Mostra l'importo totale
                    spesaRepo.SpesePerCategoria();
                    break;

                case 7:
                    Console.WriteLine("Arrivederci!");
                    esci = true;
                    break;
                }
                if (op != 7)
                {
                    Console.WriteLine("Premi un tasto per continuare...");
                    Console.ReadKey();
                }
            } while (esci == false);
        }
Ejemplo n.º 14
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;
        }
Ejemplo n.º 15
0
 public bool Update(Spesa item)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 16
0
        static void Main(string[] args)
        {
            bool exit = false;
            ICategoriaRepository catRepo   = new CategoriaRepository();
            ISpesaRepository     spesaRepo = new SpesaRepository();


            Categoria cat1 = new Categoria
            {
                CategoriaNome = "Viaggio"
            };

            Categoria cat2 = new Categoria
            {
                CategoriaNome = "Vitto"
            };

            Categoria cat3 = new Categoria
            {
                CategoriaNome = "Cancelleria"
            };

            //catRepo.Create(cat1);
            //catRepo.Create(cat2);
            //catRepo.Create(cat3);

            while (!exit)
            {
                Console.WriteLine("Salve, cosa desideri fare?");
                Console.WriteLine("-1 Inserire una nuova spesa\n" +
                                  "-2 Approvare una spesa già esistente\n" +
                                  "-3 Cancellare una spesa già esistente\n" +
                                  "-4 Mostrare Elenco spese approvate\n" +
                                  "-5 Mostrare Elenco spese per uno specifico utente\n" +
                                  "-6 Mostrare il totale spese per una categoria");
                string resp = Console.ReadLine().Trim();

                switch (resp)
                {
                case "1":
                    Console.WriteLine("Inserisci i dati (Data, CategoriaId, Descrizione, Utente, Importo");
                    DateTime data     = DateTime.Parse(Console.ReadLine());
                    int      catId    = int.Parse(Console.ReadLine());
                    string   desc     = Console.ReadLine();
                    string   utente   = Console.ReadLine();
                    decimal  importo  = decimal.Parse(Console.ReadLine());
                    Spesa    newSpesa = new Spesa
                    {
                        Data        = data,
                        CategoriaId = catId,
                        Descrizione = desc,
                        Utente      = utente,
                        Importo     = importo,
                        Approvato   = false
                    };
                    spesaRepo.Create(newSpesa);
                    break;

                case "2":
                    Console.WriteLine("Inserisci l'ID della spesa da approvare:");
                    int id    = int.Parse(Console.ReadLine());
                    var spesa = spesaRepo.GetById(id);
                    spesa.Approvato = true;
                    spesaRepo.Update(spesa);
                    break;

                case "3":
                    Console.WriteLine("Inserisci l'ID della spesa da eliminare: ");
                    int deleteId = int.Parse(Console.ReadLine());
                    spesaRepo.Delete(deleteId);
                    break;

                case "4":
                    var speseApprovate = spesaRepo.SpeseApprovate();
                    foreach (var item in speseApprovate)
                    {
                        Console.WriteLine($"Spesa Id: {item.SpeseId}\n" +
                                          $"Data: {item.Data}\n" +
                                          $"Categoria: {item.Categoria.CategoriaNome}\n" +
                                          $"Descrizione: {item.Descrizione}\n" +
                                          $"Utente: {item.Utente}" +
                                          $"Importo: {item.Importo}" +
                                          $"Approvato: {(item.Approvato ? "Sì" : "No")}");
                        Console.WriteLine("************************");
                    }
                    break;

                case "5":
                    Console.WriteLine("Inserisci il nome dell'utente: ");
                    string nomeUtente = Console.ReadLine();
                    spesaRepo.SpeseApprovatePerUtente(nomeUtente);
                    break;

                case "6":
                    Console.WriteLine("Inserisci l'ID della categoria:");
                    int     categId = int.Parse(Console.ReadLine());
                    decimal result  = spesaRepo.TotaleSpesePerCategoria(categId);
                    Console.WriteLine($"Il totale è: {result}");
                    break;

                default:
                    Console.WriteLine("Non hai inserito un valore valido");
                    break;
                }
                Console.WriteLine("Se vuoi uscire dal menù premi Q altrimenti qualsiasi altro tasto");
                if (Console.ReadLine().ToLower().Equals("q"))
                {
                    exit = true;
                }
                Console.Clear();
            }



            // So che il client poteva essere fatto meglio, si poteva disaccoppiare di più, astrarre e
            //      fare più controlli, gestire meglio il flusso. Però non ho avuto tempo perchè tra il
            //      testare e il risolvere qualche bug ho dovuto farlo in maniera rozza e veloce
        }