//Janne //Varmistaa että poistettava tietue on valittu ja kysyy haluaako käyttäjä varmasti poistaa sen ennen kuin kutsuu poistavaa funktiota private void btnRemoveWorker_Click(object sender, RoutedEventArgs e) { try { if (dgWorkerList.SelectedIndex == -1) { MessageBox.Show("Valitse työntekijä ensin."); return; } if (MessageBox.Show("Haluatko varmasti poistaa valitun työntekijän?", "Varmistus", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { // poistetaan datatablesta dvWorkers.Delete(dgWorkerList.SelectedIndex); // kutsutaan poistavaa funktiota jolle annetaan muokattu datatable int result = DBStudio.UpdateWorker(dtWorkers); MessageBox.Show(result + " työntekijä poistettu."); // päivittää näkymät RefreshWorkers(); RefreshReservations(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//Aleksi //Alustaa uuden listan, kutsuu tietokantakerroksesta asiakkaiden hakua. Täyttää listan asiakkaiden tiedoilla datatablesta. //Palauttaa täytetyn listan kutsujalle. public static List <Customer> GetCustomersList() { try { List <Customer> customers = new List <Customer>(); DataTable dt = DBStudio.GetCustomers(); long pkey; DateTime bdate; DateTime rdate; foreach (DataRow row in dt.Rows) { pkey = Convert.ToInt64(row["PKey"].ToString()); bdate = Convert.ToDateTime(row["Birthdate"].ToString()); rdate = Convert.ToDateTime(row["RegDate"].ToString()); customers.Add(new Customer(pkey, row["Fname"].ToString(), row["Lname"].ToString(), row["Phone"].ToString(), row["Privilege"].ToString(), bdate, rdate)); } return(customers); } catch (Exception ex) { throw ex; } }
//Janne // Tallentaa varauksen public static int SaveReservation(Reservation reservation) { int rowcount; rowcount = DBStudio.InsertReservation(reservation.Service, reservation.Time.ToString(), reservation.Date.Day + "." + reservation.Date.Month + "." + reservation.Date.Year, reservation.UnregCustomer, reservation.RegCustomer, reservation.Employee); return(rowcount); }
//Janne //Antaa poistettavan muistion tiedot eteenpäin databasekerrokselle public static void DeleteNote(Note note) { try { DBStudio.DeleteNote(note.Message, note.FKey); } catch (Exception ex) { throw ex; } }
//Janne // poistaa varauksen ja palauttaa poistettujen rivien määrän public static int RemoveReservation(int pkey) { try { int effectedRows = DBStudio.DeleteReservation(pkey); return(effectedRows); } catch (Exception ex) { throw ex; } }
//Aleksi //Linkkifunktio käyttöliittymäkerroksen ja tietokantakerroksen välillä //ainoa toiminto välittää SQL kutsu Business-logiikan läpi public static DataTable GetCustomersTable() { try { DataTable dt = new DataTable(); dt = DBStudio.GetCustomers(); return(dt); } catch (Exception ex) { throw ex; } }
//Janne //Hakee työntekijät datatablena public static DataTable GetWorkersTable() { try { DataTable dt = new DataTable(); dt = DBStudio.GetAllWorkersData(); return(dt); } catch (Exception ex) { throw ex; } }
//Janne //Tutkii onko syöte kunnossa ja päivittää varaukset jos on public static int UpdateReservations(DataTable dtReservations) { try { foreach (DataRow row in dtReservations.Rows) { if (row.RowState == DataRowState.Modified) { if (String.IsNullOrEmpty(row["RegCustomer"].ToString()) && row["UnregCustomer"].ToString() == "") { // ei kummassakaan asiakaskentässä dataa return(-100); } if (!String.IsNullOrEmpty(row["RegCustomer"].ToString()) && row["UnregCustomer"].ToString() != "") { // molemmissa asiakaskentissä dataa return(-101); } if (!String.IsNullOrEmpty(row["RegCustomer"].ToString()) && row["UnregCustomer"].ToString() == "") { // varmistetaan ettei check-constraint kosahda kannassa row["UnregCustomer"] = null; } if (row["Service"].ToString().Length > 100) { // liikaa merkkejä palvelussa return(-200); } if (!IsValidTime(row["ReservationTime"].ToString())) { //väärä aikaformaatti return(-300); } if (!IsValidDate(row["ReservationDate"].ToString())) { // väärä päiväformaatti return(-301); } } } int count; // jos mikään if ei lauennut, tehdään tallennus count = DBStudio.UpdateReservations(dtReservations); return(count); } catch (Exception ex) { throw ex; } }
//Aleksi //kutsutaan updateCustomer funktiota ja virkistetään customers ja reservations näkymät private void btnSaveCustomerChanges_Click(object sender, RoutedEventArgs e) { try { int rowcount = DBStudio.UpdateCustomer(dtCustomers); MessageBox.Show(rowcount + " riviä muokattu."); RefreshCustomers(); RefreshReservations(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
//Janne // Tutkii syötteet ja kutsuu alemman kerroksen työntekijäntallennusfunktiota jos syötteet kunnossa. private void btnSaveWorker_Click(object sender, RoutedEventArgs e) { try { if (txtFname.Text == "" || txtLname.Text == "" || txtAddress.Text == "" || txtPhone.Text == "") { MessageBox.Show("Tarpeellisia tietoja jätetty pois!"); return; } if (!Studio.IsValidPhone(txtPhone.Text)) { MessageBox.Show("Puhelinnumeron formaatti väärä.\nOikeat formaatit ovat\n0401234567\ntai\n+358401234567"); return; } //varmistus käyttäjältä if (MessageBox.Show("Haluatko varmasti lisätä tämän käyttäjän?\n" + "Nimi: " + txtFname.Text + " " + txtLname.Text + "\n" + "Osoite: " + txtAddress.Text + "\n" + "Puhelinnumero: " + txtPhone.Text + "\n" + "Muu tieto: " + txtOther.Text, "Varmistus", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { // lisätään datarow datatableen ja syötetään siihen uudet tiedot dr = dtWorkers.NewRow(); dr["fname"] = txtFname.Text; dr["lname"] = txtLname.Text; dr["addr"] = txtAddress.Text; dr["phone"] = txtPhone.Text; dr["regdate"] = DateTime.Now.Day + "." + DateTime.Now.Month + "." + DateTime.Now.Year; dr["other"] = txtOther.Text; dtWorkers.Rows.Add(dr); spAddWorker.Visibility = Visibility.Collapsed; btnShowWorkerSavePanel.IsEnabled = true; txtFname.Text = ""; txtLname.Text = ""; txtAddress.Text = ""; txtPhone.Text = ""; txtOther.Text = ""; //annetaan datatable päivittävälle funktiolle DBStudio.UpdateWorker(dtWorkers); //päivitetään näkymät RefreshWorkers(); RefreshReservations(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//Aleksi //Asiakkaan poisto. Tarkistetaan onko asiakas valittu, jos ei, promptataan. Kysytään varmennus, kutsutaan tietokantakerrosta poistolla ja kutsutaan datagridien virkistystä. private void btnCDeleteCustomer_Click(object sender, RoutedEventArgs e) { if (dgCustomerList.SelectedIndex == -1) { MessageBox.Show("Valitse asiakas ensin."); return; } if (MessageBox.Show("Haluatko varmasti poistaa valitun asiakkaan?", "Varmistus", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { dvCustomers.Delete(dgCustomerList.SelectedIndex); int rows = DBStudio.UpdateCustomer(dtCustomers); RefreshCustomers(); RefreshReservations(); MessageBox.Show(rows + " asiakas poistettu."); } }
//Janne // Tutkii syötteet ja tallentaa muutokset jos syötteet kunnossa public static int UpdateWorkers(DataTable dtWorkers) { try { foreach (DataRow row in dtWorkers.Rows) { if (row.RowState == DataRowState.Modified) { if (!IsValidPhone(row["Phone"].ToString())) { // väärä puhelinformaatti return(-101); } if (row["Fname"].ToString().Length == 0 || row["Fname"].ToString().Length > 20) { // Liikaa tai liian vähän merkkejä etunimessä return(-200); } if (row["Lname"].ToString().Length == 0 || row["Lname"].ToString().Length > 30) { // Liikaa tai liian vähän merkkejä sukunimessä return(-201); } if (row["Addr"].ToString().Length == 0 || row["Addr"].ToString().Length > 50) { // Liikaa tai liian vähän merkkejä Osoitteessa return(-300); } if (row["Other"].ToString().Length > 100) { // liikaa merkkejä otherissa return(-400); } } } // tekee tallennukset ja palauttaa muutettujen rivien määrän return(DBStudio.UpdateWorker(dtWorkers)); } catch (Exception ex) { throw ex; } }
//Janne //Hakee datatablen muistiorivejä, muuttaa sen listaksi ja palauttaa sen public static List <Note> GetNotesList() { try { DataTable dt; dt = DBStudio.GetNotes(); List <Note> notes = new List <Note>(); foreach (DataRow row in dt.Rows) { notes.Add(new Note(row["Note"].ToString(), row["Fname"].ToString() + " " + row["Lname"].ToString(), Convert.ToInt32(row["Employee"].ToString()))); } return(notes); } catch (Exception ex) { throw ex; } }
//Aleksi //tehdään asiakkaan tallennus tietokantaan, ensin tarkistaen syötteet(pituus, tyhjyys, tyyppi) //parsitaan päiväformaatti datepicker-elementistä tietokannalle sopivaksi //tehdään tallennnus kantaan, tyhjätään kentät, virkistetään näkymät private void btnSaveCustomer_Click(object sender, RoutedEventArgs e) { if (txtCFname.Text.Any(char.IsDigit) || txtCLname.Text.Any(char.IsDigit)) { MessageBox.Show("Nimi kentissä ei voi olla numeroita."); return; } if (txtCPhone.Text.Any(char.IsLetter)) { MessageBox.Show("Puhelinnumero kentässä ei voi olla kirjaimia."); return; } if (txtCFname.Text.Length > 20 || txtCLname.Text.Length > 20 || txtCPhone.Text.Length > 13 || txtCPrivilege.Text.Length > 50 || dpCustomerBD.Text.Length > 10) { MessageBox.Show("Kenttä on liian pitkä..\n" + "Etunimi voi olla 20 merkkiä.\n" + "Sukunimi voi olla 20 merkkiä.\n" + "Puhelinnumero voi olla 13 merkkiä.\n" + "Etu voi olla 50 merkkiä.\n" + "Syntymäaika voi olla 10 merkkiä."); return; } if (txtCFname.Text == "" || txtCLname.Text == "" || txtCFname.Text == "" || txtCPhone.Text == "" || txtCPrivilege.Text == "" || dpCustomerBD.SelectedDate == null) { MessageBox.Show("Kaikkien kenttien täytyy olla täytetty."); return; } if (!Studio.IsValidPhone(txtCPhone.Text)) { MessageBox.Show("Puhelinnumeron formaatti väärä.\nOikeat formaatit ovat\n0401234567\ntai\n+358401234567"); return; } try { if (MessageBox.Show("Haluatko varmasti lisätä tämän Asiakkaan?\n" + "Nimi: " + txtCFname.Text + " " + txtCLname.Text + "\n" + "Puhelinnumero: " + txtCPhone.Text + "\n" + "Etuus: " + txtCPrivilege.Text + "\n" + "Syntymäaika:" + dpCustomerBD.Text, "Varmistus", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes) { string zeroMonth = ""; string zeroDay = ""; if (dpCustomerBD.SelectedDate.Value.Month < 10) { zeroMonth = "0"; } if (dpCustomerBD.SelectedDate.Value.Day < 10) { zeroDay = "0"; } dr = dtCustomers.NewRow(); dr["fname"] = txtCFname.Text; dr["lname"] = txtCLname.Text; dr["phone"] = txtCPhone.Text; dr["Birthdate"] = dpCustomerBD.SelectedDate.Value.Year + "-" + zeroMonth + dpCustomerBD.SelectedDate.Value.Month + "-" + zeroDay + dpCustomerBD.SelectedDate.Value.Day; dr["Privilege"] = txtCPrivilege.Text; zeroDay = ""; zeroMonth = ""; if (DateTime.Now.Month < 10) { zeroMonth = "0"; } if (DateTime.Now.Day < 10) { zeroDay = "0"; } dr["regdate"] = DateTime.Now.Year + "-" + zeroMonth + DateTime.Now.Month + "-" + zeroDay + DateTime.Now.Day; dtCustomers.Rows.Add(dr); spAddCustomer.Visibility = Visibility.Collapsed; txtCFname.Text = ""; txtCLname.Text = ""; txtCPhone.Text = ""; dpCustomerBD.Text = ""; txtCPrivilege.Text = ""; DBStudio.UpdateCustomer(dtCustomers); btnCShowSavePanel.IsEnabled = true; RefreshCustomers(); RefreshReservations(); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }