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); } }
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); } }
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); } }
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); } }
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); } }
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); } }
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(); }
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') { ; } }
//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); }
//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; }
public bool Update(Spesa item) { throw new NotImplementedException(); }
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 }