/// <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(); } }
/// <summary> /// Loads all Zeiterfassungen into datagrid /// </summary> private void SearchZeiterfassung(object sender, EventArgs e) { // get kundenID out of ComboBox string projektID = this.zeiterfassungCombobox.SelectedItem.ToString(); int id = -1; try { id = GlobalActions.GetIdFromCombobox(projektID, zeiterfassungMsgLabel); } catch ( InvalidInputException ) { logger.Log(Logger.Level.Error, "Unknown Exception while getting ID from Projekte from ZeiterfassungTab!"); } ZeiterfassungsManager manager = new ZeiterfassungsManager(); List<ZeitaufzeichnungTable> results = new List<ZeitaufzeichnungTable>(); try { results = manager.LoadZeiterfassung(id, this.zeiterfassungMsgLabel); } catch (DataBaseException ex) { this.logger.Log(Logger.Level.Error, "A serious problem with the database has occured. Program will be exited. " + ex.Message + ex.StackTrace); Application.Exit(); } this.zeiterfassungBindingSource.DataSource = results; }
/// <summary> /// Loads Zeitaufzeichnungen to Datagridview and show Sum of remaining bills /// </summary> /// <param name="sender">The sending ComboBox</param> /// <param name="e">The EventArgs</param> private void BindFromExistingZeitaufzeichnungen(object sender, EventArgs e) { // only if a value is selected if (this.projekteComboBox.SelectedIndex > 0) { List<ZeitaufzeichnungTable> results = new List<ZeitaufzeichnungTable>(); // get projectID int pID = GlobalActions.GetIdFromCombobox(this.projekteComboBox.SelectedValue.ToString(), this.eingangsrechnungMsgLabel); this.logger.Log(Logger.Level.Info, "Starts searching for Zeitauffassungen with project id " + pID); ZeiterfassungsManager loader = new ZeiterfassungsManager(); try { results = loader.LoadZeiterfassung(pID, this.eingangsrechnungMsgLabel); } catch(SQLiteException ex) { this.logger.Log(Logger.Level.Error, ex.Message); this.eingangsrechnungMsgLabel.Text = ex.Message; this.eingangsrechnungMsgLabel.ForeColor = Color.Red; this.eingangsrechnungMsgLabel.Show(); } if (results.Count > 0) { // bind to datagridview this.ausgangsrechnungBindingSource.DataSource = results; // calculate sum and set result to textbox int sum = 0; foreach (ZeitaufzeichnungTable aufzeichnung in results) { sum += aufzeichnung.Stunden * aufzeichnung.Stundensatz; } this.unpaidBalanceTextBox.Text = sum.ToString(); } } }