public Spesa GetSpesa(int id)
 {
     using (var context = new GestioneSpeseContext())
     {
         return(context.Spese.Where(s => s.ID == id).SingleOrDefault());
     }
 }
        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 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 List <Spesa> MostraSpese()
 {
     using (var context = new GestioneSpeseContext())
     {
         var spese = context.Spese.ToList();
         return(spese);
     }
 }
 public List <Categorie> MostraCategorie()
 {
     using (var context = new GestioneSpeseContext())
     {
         var categorie = context.Categorie.ToList();
         return(categorie);
     }
 }
 public decimal TotaleSpese(int categoria)
 {
     using (var ctx = new GestioneSpeseContext())
     {
         var tot = ctx.Spese.Where(c => c.CategoriaId == categoria).Sum(x => x.Importo);
         return(tot);
     }
 }
        public List <Spesa> GetSpeseUtente(string utente)
        {
            //Elenco delle spese di un utente
            using (var context = new GestioneSpeseContext())
            {
                var speseUtente = context.Spese
                                  .Where(u => u.Utente == utente) //Prendo solo le spese di quell'utente
                                  .ToList();

                return(speseUtente);
            }
        }
        public List <Spesa> Elenco()
        {
            List <Spesa> spese = new List <Spesa>();

            using (var ctx = new GestioneSpeseContext())
            {
                foreach (var item in ctx.Spese)
                {
                    spese.Add(item);
                }

                return(spese);
            }
        }
        public Spesa GetById(int id)
        {
            using (var ctx = new GestioneSpeseContext())
            {
                if (id < 0)
                {
                    return(null);
                }

                var spesa = ctx.Spese.Where(c => c.Id == id).FirstOrDefault();

                return(spesa);
            }
        }
        //Void
        public List <Spesa> GetSpeseApprovate()
        {
            //Mostrare l'elenco delle spese approvate
            using (var context = new GestioneSpeseContext())
            {
                //Prendo l'elenco delle spese approvate
                var speseApprovate = context.Spese
                                     .Include(c => c.Categoria)       //Prende anche la categoria
                                     .Where(a => a.Approvato == true) //Solo le spese approvate
                                     .ToList();                       //Lo converte in una List<Spese>

                return(speseApprovate);
            }
        }
        public List <Spesa> ElencoSpeseApprovate()
        {
            List <Spesa> spese = new List <Spesa>();

            using (var ctx = new GestioneSpeseContext())
            {
                var lista = ctx.Spese.Where(x => x.Approvato == true);

                foreach (var item in lista)
                {
                    spese.Add(item);
                }

                return(spese);
            }
        }
 public bool Delete(int id)
 {
     //Cancellare le spese esistenti
     using (var context = new GestioneSpeseContext())
     {
         //Recupero la spesa dall'id
         var spesa = context.Spese.Find(id);
         if (spesa == null)
         {
             return(false);
         }
         //Se esiste la cancello
         context.Spese.Remove(spesa);
         context.SaveChanges();
         return(true);
     }
 }
        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 Delete(int id)
        {
            using (var ctx = new GestioneSpeseContext())
            {
                //Controllo sull'ID
                if (id < 0)
                {
                    return(false);
                }
                var spesa = ctx.Spese.Find(id);

                if (spesa != null)
                {
                    ctx.Spese.Remove(spesa);
                    ctx.SaveChanges();
                }

                return(true);
            }
        }
 public void SpesePerCategoria()
 {
     //Totale delle spese per categoria
     using (var context = new GestioneSpeseContext())
     {
         var totaleSpese = context.Spese
                           .GroupBy(
             x => new { x.Categoria.Categoria, x.Importo },
             (key, group) => new
         {
             Categoria     = key.Categoria,
             TotaleImporto = group.Sum(i => i.Importo)
         }).ToList();
         foreach (var spese in totaleSpese)
         {
             Console.WriteLine($"{spese.Categoria} : {spese.TotaleImporto}");
         }
         //return totaleSpese;
     }
 }
        public List <Spesa> ElencoPerUtente(string utente)
        {
            List <Spesa> spese = new List <Spesa>();

            using (var ctx = new GestioneSpeseContext())
            {
                if (utente == null)
                {
                    return(null);
                }

                var lista = ctx.Spese.Where(x => x.Utente == utente);

                foreach (var item in lista)
                {
                    spese.Add(item);
                }

                return(spese);
            }
        }
 public bool Create(Categorie item)
 {
     using (var context = new GestioneSpeseContext())
     {
         //Se non sono presenti categorie allora ne inserisco 3
         var categorie = context.Categorie;
         var count     = context.Categorie.Count(x => x.ID > 0);
         if (count == 0)
         {
             context.Categorie.Add(item);
             context.Categorie.Add(new Categorie {
                 Categoria = "Cibo"
             });
             context.Categorie.Add(new Categorie {
                 Categoria = "Varie"
             });
         }
         context.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);
     }
 }