public void Refresh(Rekening[] rekeningen)
        {
            if (table != null)
            {
                Remove(table);
            }

            // Bereken afmetingen van de tabel
            int aantalRekeningen = rekeningen.Length;
            uint columns = (uint)Math.Ceiling(Math.Sqrt((double)aantalRekeningen));
            uint rows = (uint)Math.Floor(Math.Sqrt((double)aantalRekeningen));
            table = new Table(rows, columns, true);

            uint index = 0;
            foreach(var rekening in rekeningen)
            {
                RekeningWidget rekeningWidget = new RekeningWidget(rekening);
                rekeningWidget.Clicked += handleRekeningWidgetClicked;

                // Bereken rekening widget posities
                uint thisColumn = index % columns;
                uint thisRow = (index - thisColumn) / columns;
                table.Attach(rekeningWidget, thisColumn, thisColumn + 1, thisRow, thisRow + 1);

                index++;
            }

            Add(table);
        }
 public void BestellingToevoegen(Rekening rekening, Consumptie consumptie)
 {
     Bestelling bestelling = findBestelling(rekening, consumptie);
     if (bestelling == null)
     {
         bestelling = new Bestelling(rekening, consumptie);
         ((ListStore)Model).AppendValues(bestelling.ToString(), bestelling);
     }
     else
     {
         bestelling.Aantal++;
         Model.SetValue(find(bestelling), 0, bestelling.ToString());
     }
 }
        public void ConsumptieAfrekenen(Rekening rekening, Consumptie consumptie)
        {
            rekening.Waarde += consumptie.Prijs;
            IDbTransaction transaction = connection.BeginTransaction();
            try {
                save(rekening);

                logAfrekening(rekening, consumptie);
                transaction.Commit();
                Commit();
            }
            catch(Exception ex) {
                transaction.Rollback();
                rekening.Waarde -= consumptie.Prijs;
                throw new RepositoryException("Kan consumptie '" + consumptie.Naam + "' niet afrekenen voor '" + rekening.Naam + "'.", ex);
            }
        }
        public void Create(Rekening rekening)
        {
            if (rekening == null)
            {
                throw new ArgumentNullException("Rekening kan niet null zijn.");
            }

            if (FindByNaam(rekening.Naam) != null)
            {
                throw new RepositoryException("Er bestaat al een rekening met naam '" + rekening.Naam + "'.");
            }

            IDbCommand command = connection.CreateCommand();
            command.CommandText = "INSERT INTO rekening (naam, waarde) VALUES (@naam, @waarde)";
            command.AddParameter("@naam", rekening.Naam);
            command.AddParameter("@waarde", rekening.Waarde);
            command.Prepare();

            if (command.ExecuteNonQuery() != 1) {
                throw new RepositoryException("Kan rekening niet maken.");
            }

            Commit();
        }
        private void save(Rekening rekening)
        {
            if (!rekening.Validate())
            {
                throw new RepositoryException("De rekening '" + rekening.Naam + "' is niet valide.");
            }

            if (rekening.Id == 0)
            {
                // Bestaat nog niet, dus nieuw aanmaken
                Create(rekening);
            }
            else
            {
                // Bestaat al, dus updaten
                IDbCommand command = connection.CreateCommand();
                command.CommandText = "UPDATE rekening SET Naam = @naam, Waarde = @waarde WHERE rowid = @id";
                command.AddParameter("@id", rekening.Id);
                command.AddParameter("@naam", rekening.Naam);
                command.AddParameter("@waarde", rekening.Waarde);
                command.Prepare();

                if (command.ExecuteNonQuery() != 1)
                {
                    throw new RepositoryException("Kan rekening '" + rekening.Naam + "' niet opslaan.");
                }
            }
        }
        private Rekening readRekening(IDataReader dataReader)
        {
            Rekening rekening = new Rekening();
            rekening.Id = dataReader.GetInt32("rowid");
            rekening.Naam = dataReader.GetString("Naam");
            rekening.Waarde = dataReader.GetDecimal("Waarde");

            return rekening;
        }
        private void logAfrekening(Rekening rekening, Consumptie consumptie)
        {
            IDbCommand command = connection.CreateCommand();
            command.CommandText = "INSERT INTO consumptielog (rekeningid, rekeningnaam, consumptieid, consumptienaam, datum) VALUES (@rekeningId, @rekeningNaam, @consumptieId, @consumptieNaam, current_timestamp)";
            command.AddParameter("@rekeningId", rekening.Id);
            command.AddParameter("@rekeningNaam", rekening.Naam);
            command.AddParameter("@consumptieId", consumptie.Id);
            command.AddParameter("@consumptieNaam", consumptie.Naam);
            command.Prepare();

            if (command.ExecuteNonQuery() != 1)
            {
                throw new RepositoryException("Kan consumptie afrekening van '" + consumptie.Naam + "' niet loggen voor rekening '" + rekening.Naam + "'.");
            }
        }
        public void Update(Rekening rekening)
        {
            if (rekening.Id == 0)
            {
                throw new RepositoryException("Ongeldige rekening.");
            }

            IDbCommand command = connection.CreateCommand();
            command.CommandText = "UPDATE rekening SET Naam = @naam, Waarde = @waarde WHERE rowid = @id";
            command.AddParameter("@naam", rekening.Naam);
            command.AddParameter("@waarde", rekening.Waarde);
            command.AddParameter("@id", rekening.Id);
            command.Prepare();

            command.ExecuteNonQuery();

            Commit();
        }
 public RekeningWidget(Rekening rekening)
     : base()
 {
     this.rekening = rekening;
     initialize();
 }
예제 #10
0
        void handleRekeningClicked(object sender, Rekening rekening)
        {
            huidigeRekening = rekening;

            ConsumptieOverzichtWidget consumptieOverzichtWidget = new ConsumptieOverzichtWidget(this);
            consumptieOverzichtWidget.Refresh(consumptieRepository.GetAll());
            consumptieOverzichtWidget.Destroyed += handleConsumptieOverzichtWidgetClosed;
            consumptieOverzichtWidget.ShowAll();
        }
        private Bestelling findBestelling(Rekening rekening, Consumptie consumptie)
        {
            TreeIter iter;
            Model.GetIterFirst(out iter);

            do
            {
                Bestelling bestelling = (Bestelling)Model.GetValue(iter, 1);
                if (bestelling != null && bestelling.Rekening.Equals(rekening) && bestelling.Consumptie.Equals(consumptie))
                {
                    return bestelling;
                }
            } while(Model.IterNext(ref iter));

            return null;
        }
예제 #12
0
 public Bestelling(Rekening rekening, Consumptie consumptie)
 {
     Rekening = rekening;
     Consumptie = consumptie;
     Aantal = 1;
 }