/// <summary> /// Changes data of an existing Kunde/Kontakt /// </summary> /// <param name="k">The to-be-changed Kunde/Kontakt</param> /// <param name="errorlabel">The label in which errormessages may be written</param> public void Change(KundeKontaktTable k, Label errorlabel) { errorlabel.Hide(); IRule lnhsv = new LettersNumbersHyphenSpaceValidator(); IRule lhv = new LettersHyphenValidator(); IRule lengthv = new StringLength150Validator(); DataBindingFramework.BindFromString(k.Vorname, "Vorname", errorlabel, true, lhv, lengthv); DataBindingFramework.BindFromString(k.NachnameFirmenname, "Nachname", errorlabel, false, lnhsv, lengthv); if (errorlabel.Visible) { throw new InvalidInputException(); } // else save new Kunde or Kontakt in database if (k.Vorname.Length == 0) { this.logger.Log(Logger.Level.Info, "No first name will be stored."); } this.logger.Log(Logger.Level.Info, "User requested to change " + (k.Type == false ? "Kunde" : "Kontakt") + " with ID " + k.ID); // Update data try { DALFactory.GetDAL().UpdateKundeKontakte(k); } catch (SQLiteException) { throw; } }
public void ValidateLettersHyphenTest2() { LettersHyphenValidator val = new LettersHyphenValidator(); string input = "Franz"; val.Eval(input); Assert.AreEqual(false, val.HasErrors); }
/// <summary> /// Gets requested Kontakte out of the database. /// </summary> /// <param name="k">The Kunde/Kontakt object that shall be searched for</param> /// <param name="errorlabel">A label in the homeform in which errormessages can be displayed</param> /// <returns>List of matching Kontakt</returns> public List<KundeKontaktTable> LoadKundenKontakte(KundeKontaktTable k, Label errorlabel) { 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(); DataBindingFramework.BindFromString(k.Vorname, "Vorname", errorlabel, true, lhv, lengthv); DataBindingFramework.BindFromString(k.NachnameFirmenname, "Nachname", errorlabel, true, lnhsv, lengthv); k.ID = -1; // indicates that we don't want to search for an ID // if validation failed if (doubv.HasErrors || intv.HasErrors || datev.HasErrors || lengthv.HasErrors || percv.HasErrors || lnhsv.HasErrors || lhv.HasErrors) { throw new InvalidInputException(); } // load elements try { return DALFactory.GetDAL().GetKundenKontakte(k); } catch (SQLiteException) { throw; } }
public void ValidateLettersHyphenTest1() { LettersHyphenValidator val = new LettersHyphenValidator(); string input = "Franz Karl Stephan"; val.Eval(input); Assert.AreEqual(true, val.HasErrors); }
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>(); }
/// <summary> /// Gets values from the GUI, validates them and then sends them to the database to create a new Angebot /// </summary> public void Create(AngebotTable angebot, Label errorlabel) { 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(); DataBindingFramework.BindFromDouble(angebot.Angebotssumme.ToString(), "Angebotssumme", errorlabel, false, doubv); DataBindingFramework.BindFromInt(angebot.Umsetzungschance.ToString(), "Umsetzungschance", errorlabel, false, percv); DataBindingFramework.BindFromString(angebot.Angebotsdauer, "GültigBis", errorlabel, false, datev); DataBindingFramework.BindFromString(angebot.Beschreibung, "Beschreibung", errorlabel, false, lnhsv, lengthv); DataBindingFramework.BindFromInt(angebot.KundenID.ToString(), "kundenID", errorlabel, false, intv); DataBindingFramework.BindFromString(angebot.Erstellungsdatum, "Erstellungsdatum", errorlabel, false, datev); // change date formats angebot.Angebotsdauer = GlobalActions.ParseToSQLiteDateString(angebot.Angebotsdauer); if (errorlabel.Visible) { throw new InvalidInputException(); } this.logger.Log(Logger.Level.Info, "A new Angebot will be created"); // create Angebot try { DALFactory.GetDAL().CreateAngebot(angebot); } catch (SQLiteException) { throw; } }
/// <summary> /// Reads values of concerning fields and asks business layer to create a new Angebot with the provided parameters /// </summary> /// <param name="sender">The sender</param> /// <param name="e">The event params</param> private void CreateNewAngebot(object sender, EventArgs e) { // reset error/success labels this.createAngebotMsgLabel.Hide(); this.createAngebotMsgLabel.Text = string.Empty; // existing or newly to-be-created bool createKunde = false; string kundenID = null; // Table for the Kontakt KundeKontaktTable k = new KundeKontaktTable(); // new Kunde if (this.angebotErstellenSubTab.SelectedTab == this.angebotErstellenSubTab.TabPages[0]) { createKunde = true; } // existing Kunde else { // no Kunde chosen or first element chosen (which is empty) -> show error label if (this.createAngebotExistingKundeComboBox.SelectedIndex <= 0) { this.createAngebotMsgLabel.Text = "Error: kein Kunde ausgewählt"; this.createAngebotMsgLabel.ForeColor = Color.Red; this.createAngebotMsgLabel.Show(); return; // skip rest of function } // Kunde chosen - get ID out of ComboBox else { kundenID = this.createAngebotExistingKundeComboBox.SelectedItem.ToString(); kundenID = kundenID.Substring(0, kundenID.IndexOf(':')); IRule posint = new PositiveIntValidator(); k.ID = DataBindingFramework.BindFromInt(kundenID, "KundenID", this.createAngebotMsgLabel, false, posint); // Check for errors while databinding if (posint.HasErrors) { this.logger.Log(Logger.Level.Error, k.ID + " is an invalid Kunden ID"); return; } // get Kunde table out of Database KundenKontakteLoader loader = new KundenKontakteLoader(); List<KundeKontaktTable> results = loader.LoadKundenKontakte(k.ID, false); // there must be exactly one result, for ID is unique! if (results.Count != 1) { this.logger.Log(Logger.Level.Error, "More than one Kunde returned - impossible, because ID is unique!"); this.createAngebotMsgLabel.Text = "Error: Datenbank inkonsistent!"; this.createAngebotMsgLabel.Visible = true; return; // skip rest of function } // everything went fine k = results[0]; } } // Create new Kunde, if requested if (createKunde) { // define Rules IRule lhv = new LettersHyphenValidator(); IRule lnhsv = new LettersNumbersHyphenSpaceValidator(); IRule slv = new StringLength150Validator(); // validate data k.Vorname = DataBindingFramework.BindFromString(this.createAngebotNewKundeVnTextBox.Text, "Vorname", this.createAngebotMsgLabel, true, lhv, slv); k.NachnameFirmenname = DataBindingFramework.BindFromString(this.createAngebotNewKundeNnTextBox.Text, "Nachname", this.createAngebotMsgLabel, false, lnhsv, slv); k.Type = false; // Kunde if (lhv.HasErrors || lnhsv.HasErrors || slv.HasErrors) { this.logger.Log(Logger.Level.Error, "Invalid signs within create Angebot / create Kunde"); return; } KundenKontakteSaver saver = new KundenKontakteSaver(); try { k.ID = saver.SaveNewKundeKontakt(k, this.createAngebotMsgLabel); } catch (InvalidInputException ex) { this.logger.Log(Logger.Level.Error, ex.Message + ex.StackTrace); this.createAngebotMsgLabel.Text = "Error: Kundenfelder ungültig!"; this.createAngebotMsgLabel.Visible = true; return; } catch (SQLiteException ex) { this.logger.Log(Logger.Level.Error, ex.Message + ex.StackTrace); this.createAngebotMsgLabel.Text = "Error: Datenbankproblem!"; this.createAngebotMsgLabel.Visible = true; return; } this.createAngebotMsgLabel.Text = "Kunde wurde gespeichert."; } // Create Angebot business object this.logger.Log(Logger.Level.Info, "Start creating new Angebot..."); // define Rules IRule pdv2 = new PositiveDoubleValidator(); IRule pcv2 = new PercentValidator(); IRule dv2 = new DateValidator(); IRule lnhsv2 = new LettersNumbersHyphenSpaceValidator(); IRule slv2 = new StringLength150Validator(); IRule piv2 = new PositiveIntValidator(); AngebotTable angebot = new AngebotTable(); angebot.Angebotssumme = DataBindingFramework.BindFromDouble(this.createAngebotAngebotssummeTextBox.Text, "Angebotssumme", this.createAngebotMsgLabel, false, pdv2); angebot.Umsetzungschance = DataBindingFramework.BindFromInt(this.createAngebotUmsetzungswahrscheinlichkeitTextBox.Text, "Umsetzungschance", this.createAngebotMsgLabel, false, pcv2); angebot.Angebotsdauer = DataBindingFramework.BindFromString(this.angebotValidUntilDateTimePicker.Value.ToShortDateString(), "GültigBis", this.createAngebotMsgLabel, false, dv2); angebot.Beschreibung = DataBindingFramework.BindFromString(this.createAngebotDescriptionTextBox.Text, "Beschreibung", this.createAngebotMsgLabel, false, lnhsv2, slv2); angebot.KundenID = DataBindingFramework.BindFromInt(k.ID.ToString(), "kundenID", this.createAngebotMsgLabel, false, piv2); angebot.Erstellungsdatum = DateTime.Now.ToShortDateString(); // in case of errors in Databinding if (createAngebotMsgLabel.Visible) { this.logger.Log(Logger.Level.Error, "No angebot has been saved because of invalid inputs."); //createAngebotMsgLabel.ForeColor = Color.Red; //createAngebotMsgLabel.Show(); return; } // send Angebot object to database try { AngebotManager manager = new AngebotManager(); manager.Create(angebot, createAngebotMsgLabel); } catch (InvalidInputException ex) { this.logger.Log(Logger.Level.Error, ex.Message + ex.StackTrace); this.createAngebotMsgLabel.Text += "\nError: " + ex.Message; this.createAngebotMsgLabel.Show(); } catch (SQLiteException ex) { this.logger.Log(Logger.Level.Error, ex.Message + ex.StackTrace); this.createAngebotMsgLabel.Text += "\nError: " + ex.Message; this.createAngebotMsgLabel.Show(); } // show success message, if no error has been thrown if (!createAngebotMsgLabel.Visible) { this.createAngebotMsgLabel.Text += "\nAngebot wurde gespeichert."; this.createAngebotMsgLabel.ForeColor = Color.Green; this.createAngebotMsgLabel.Show(); } }
/// <summary> /// Gets Kunden or Kontakte out of the database (over the business layer, which checks for valid input) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SearchKundenOrKontakte(object sender, EventArgs e) { // hide error message this.HideMsgLabels(); // define rules IRule lhv = new LettersHyphenValidator(); IRule lnhsv = new LettersNumbersHyphenSpaceValidator(); IRule slv = new StringLength150Validator(); KundeKontaktTable k = new KundeKontaktTable(); k.Vorname = DataBindingFramework.BindFromString(this.searchKundeVornameTextBlock.Text, "Vorname", this.searchKundeMsgLabel, true, lhv, slv); k.NachnameFirmenname = DataBindingFramework.BindFromString(this.searchKundeNachnameTextBlock.Text, "Nachname", this.searchKundeMsgLabel, true, lnhsv, slv); k.Type = this.searchKontaktRadioButton.Checked; // False...Kunde, true...Kontakt KundenKontakteLoader loader = new KundenKontakteLoader(); // only if binding had no errors if (!this.searchKundeMsgLabel.Visible) { List<KundeKontaktTable> results; results = loader.LoadKundenKontakte(k, this.searchKundeMsgLabel); this.kundenSuchenBindingSource.DataSource = results; } this.BindToKundenSearchLabels(this.kundenSearchDataGridView, null); }
/// <summary> /// Get values of GUI elements and send them to the business layer, they shall be stored in the database. /// </summary> /// <param name="sender">object sender</param> /// <param name="e">EventArgs</param> private void CreateKundeOrKontakt(object sender, EventArgs e) { // hide error label this.HideMsgLabels(); KundeKontaktTable k = new KundeKontaktTable(); // define rules IRule lhv = new LettersHyphenValidator(); IRule lnhsv = new LettersNumbersHyphenSpaceValidator(); IRule slv = new StringLength150Validator(); // Bind data k.Vorname = DataBindingFramework.BindFromString(this.createKundeVornameTextBlock.Text, "Vorname", this.kundeNeuMsgLabel, true, lhv, slv); k.NachnameFirmenname = DataBindingFramework.BindFromString(this.createKundeNachnameTextBlock.Text, "Nachname/Firmenname", this.kundeNeuMsgLabel, false, lnhsv, slv); k.Type = this.createKontaktRadioButton.Checked; // false - Kunde, true - Kontakt // if no errors, send to business layer and show success message if (!this.kundeNeuMsgLabel.Visible) { KundenKontakteSaver saver = new KundenKontakteSaver(); saver.SaveNewKundeKontakt(k, this.kundeNeuMsgLabel); GlobalActions.ShowSuccessLabel(this.kundeNeuMsgLabel); ResetFields(); } }
/// <summary> /// Changes information of an existing Kunde /// </summary> /// <param name="sender">The sender</param> /// <param name="e">The params</param> private void ChangeKundeOrKontakt(object sender, EventArgs e) { this.searchKundeMsgLabel.Hide(); this.searchKundeMsgLabel.Text = string.Empty; // if there are results if (this.kundenSuchenBindingSource.Count > 0) { int selectedRow = this.kundenSearchDataGridView.SelectedCells[0].RowIndex; //int selectedRow = kundenSearchDataGridView.SelectedCells[0].OwningRow.Index; KundeKontaktTable k = (KundeKontaktTable)this.kundenSuchenBindingSource.List[selectedRow];//this.kundenSearchDataGridView.SelectedRows[0].Index]; // get firstname and lastname from textbox IRule lhv = new LettersHyphenValidator(); IRule lnhsv = new LettersNumbersHyphenSpaceValidator(); IRule slv = new StringLength150Validator(); string firstname = DataBindingFramework.BindFromString(this.searchKundeVornameTextBlock.Text, "Vorname", this.searchKundeMsgLabel, true, lhv, slv); string lastname = DataBindingFramework.BindFromString(this.searchKundeNachnameTextBlock.Text, "Nachname", this.searchKundeMsgLabel, false, lnhsv, slv); // in case of errors if (this.searchKundeMsgLabel.Visible) { return; } KundenKontakteChanger changer = new KundenKontakteChanger(); // get name of sending button string buttonName = ""; if (sender is Button) { buttonName = ((Button)sender).Name; } // decide action depending on if user wants to change or delete try { if (buttonName == "changeKundeButton") { // if there are no changes, do nothing if (firstname == k.Vorname && lastname == k.NachnameFirmenname) { this.logger.Log(Logger.Level.Warning, "User requested to change an item which does not need to be changed."); return; } else { // Change Kunde/Kontakt k.Vorname = firstname; k.NachnameFirmenname = lastname; changer.Change(k, this.searchKundeMsgLabel); // success logging this.logger.Log(Logger.Level.Info, "Kunde/Kontakt with the ID " + k.ID + "has successfully been changed."); } } else if (buttonName == "deleteKundeButton") { changer.Delete(k, this.searchKundeMsgLabel); } } catch (InvalidInputException ex) { this.searchKundeMsgLabel.Text = ex.Message; this.searchKundeMsgLabel.Show(); } // update displayed rows this.BindFromKundenSearchTextBlock(buttonName, selectedRow, firstname, lastname); this.logger.Log(Logger.Level.Info, "Kunden search datagridview has been updated."); // show success message GlobalActions.ShowSuccessLabel(kundeNeuMsgLabel); } }