public void SaveZeiterfassung(ZeitaufzeichnungTable z, Label label)
        {
            IRule pdv = new PositiveDoubleValidator();
            IRule piv = new PositiveIntValidator();
            IRule piv2 = new PositiveIntValidator();
            IRule sl150v = new StringLength150Validator();
            IRule lnhsv = new LettersNumbersHyphenSpaceValidator();

            piv.Eval(z.ProjektID);
            piv2.Eval(z.Stunden);
            sl150v.Eval(z.Bezeichnung);
            lnhsv.Eval(z.Bezeichnung);
            pdv.Eval(z.Stundensatz);

            if (piv.HasErrors || piv2.HasErrors || sl150v.HasErrors || lnhsv.HasErrors || pdv.HasErrors)
            {
                throw new InvalidInputException("Daten ungültig!");
            }

            // load elements
            try
            {
                DALFactory.GetDAL().SaveNewZeiterfassung(z);
            }
            catch (SQLiteException)
            {
                throw;
            }
        }
        /// <summary>
        /// Get values of GUI elements and send them to the business layer, they shall be stored in the database.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CreateZeiterfassung(object sender, EventArgs e)
        {
            string projektID = null;

            // hide error label
            this.HideMsgLabels();

            ZeitaufzeichnungTable z = new ZeitaufzeichnungTable();

            //define rules
            IRule lnhsv = new LettersNumbersHyphenSpaceValidator();
            IRule pdv = new PositiveDoubleValidator();
            IRule piv = new PositiveIntValidator();
            IRule sl150v = new StringLength150Validator();

            projektID = this.zeiterfassungCombobox.SelectedItem.ToString();
            projektID = projektID.Substring(0, projektID.IndexOf(':'));

            //Bind data
            z.ProjektID = DataBindingFramework.BindFromInt(projektID, "ProjektID", this.zeiterfassungMsgLabel, false, piv);
            z.Stunden = DataBindingFramework.BindFromInt(zeiterfassungHoursTextbox.Text, "Dauer", this.zeiterfassungMsgLabel, false, piv);
            z.Bezeichnung = DataBindingFramework.BindFromString(zeiterfassungDescriptionTextBox.Text, "Bezeichnung", this.zeiterfassungMsgLabel, false, lnhsv, sl150v);
            z.Stundensatz = DataBindingFramework.BindFromInt(zeiterfassungStundensatzTextBox.Text, "Stundensatz", this.zeiterfassungMsgLabel, false, pdv);

            ZeiterfassungsManager saver = new ZeiterfassungsManager();

            // only if binding had no errors
            if (!this.zeiterfassungMsgLabel.Visible)
            {
                try
                {
                    saver.SaveZeiterfassung(z, this.zeiterfassungMsgLabel);
                }
                catch (SQLiteException)
                {
                    this.zeiterfassungMsgLabel.Text = "Aussagekräftiger Fehler";
                    this.zeiterfassungMsgLabel.Show();

                }
                catch (InvalidInputException ex)
                {
                    this.zeiterfassungMsgLabel.Text = ex.Message;
                    this.zeiterfassungMsgLabel.Show();
                }
                GlobalActions.ShowSuccessLabel(this.zeiterfassungMsgLabel);
                ResetZeiterfassung();

            }
        }
        public List<ZeitaufzeichnungTable> LoadZeiterfassung(ZeitaufzeichnungTable z, Label label)
        {
            IRule doubv = new PositiveDoubleValidator();
            IRule intv = new PositiveIntValidator();
            IRule datev = new DateValidator();
            IRule lengthv = new StringLength150Validator();
            IRule percv = new PercentValidator();
            IRule lnhsv = new LettersNumbersHyphenSpaceValidator();
            IRule lhv = new LettersHyphenValidator();

            // load elements
            try
            {
                //return DALFactory.GetDAL()
            }
            catch (SQLiteException)
            {
                throw;
            }

            return new List<ZeitaufzeichnungTable>();
        }
        public void SaveNewZeiterfassung(ZeitaufzeichnungTable z)
        {
            String sql = "INSERT INTO Zeitaufzeichnung (ProjektID, Stunden, Bezeichnung, Stundensatz) VALUES (?, ?, ?, ?)";

            try
            {
                this.SendStatementToDatabase(sql, -1, z.ProjektID, z.Stunden, z.Bezeichnung, z.Stundensatz);
                logger.Log(Logger.Level.Info, z.ProjektID+ " " + z.Stunden + " " + z.Bezeichnung + " " + z.Stundensatz);
            }
            catch (SQLiteException)
            {
                this.logger.Log(Logger.Level.Error, "Saving Zeiterfassung failed");
                throw;
            }

            // success logging
            this.logger.Log(Logger.Level.Info, "New zeitaufzeichnung " + z.Bezeichnung + " has been stored in the SQLite database.");
        }
        /// <summary>
        /// Loads all Zeitaufzeichnungen
        /// </summary>
        /// <returns>The saved Zeitaufzeichnungen</returns>
        public List<ZeitaufzeichnungTable> LoadZeiterfassung(int projektID)
        {
            string sql = "SELECT * FROM Zeitaufzeichnung WHERE ";
            sql += "ProjektID = ?;";

            List<ZeitaufzeichnungTable> results = new List<ZeitaufzeichnungTable>();

            // open connection and get requested Projekt(e) out of database
            SQLiteConnection con = null;
            SQLiteTransaction tra = null;
            SQLiteCommand cmd = null;
            SQLiteDataReader reader = null;

            this.logger.Log(Logger.Level.Info, "Try to load Zeitaufzeichnung out of database... ProjektID which shall be searched for: " + projektID);

            try
            {
                // initialise connection
                con = new SQLiteConnection(ConfigFileManager.ConnectionString);
                con.Open();

                // initialise transaction
                tra = con.BeginTransaction();
                cmd = new SQLiteCommand(sql, con);

                // bind to
                SQLiteParameter p_projektID = new SQLiteParameter();
                p_projektID.Value = projektID;
                cmd.Parameters.Add(p_projektID);

                // execute and get results
                reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    ZeitaufzeichnungTable result = new ZeitaufzeichnungTable();
                    result.ID = reader.GetInt32(0);
                    result.ProjektID = reader.GetInt32(1);
                    result.Stunden = reader.GetInt32(2);
                    result.Bezeichnung = reader.GetString(3);
                    result.Stundensatz = reader.GetInt32(4);
                    results.Add(result);
                    this.logger.Log(Logger.Level.Info, "Result added to list, ID: " + result.ID);
                }

                this.logger.Log(Logger.Level.Info, "Loading finished.");
                return results;
            }
            catch (SQLiteException)
            {
                throw;
            }
            finally
            {
                if (reader != null) { reader.Dispose(); }
                if (tra != null) { tra.Dispose(); }
                if (cmd != null) { cmd.Dispose(); }
                if (con != null) { con.Dispose(); }
            }
        }
 public void SaveNewZeiterfassung(ZeitaufzeichnungTable z)
 {
     z.ID = MockDataBaseManager.ZeitaufzeichnungID;
     MockDataBaseManager.savedZeitaufzeichnungen.Add(z);
 }