private void demoDatenEinsaetze() { Einsatz e1 = new Einsatz(); e1.ID = 1; e1.Mitarbeiter = Bibliothek.Mitarbeiter_nach_ID(1); e1.Projekt = Bibliothek.Projekt_nach_ID(1); e1.Start = new DateTime(2016, 6, 7, 8, 0, 0); e1.Ende = new DateTime(2016, 6, 7, 15, 0, 0); Bibliothek.EinsatzNeu(e1); Einsatz e2 = new Einsatz(); e1.ID = 2; e2.Mitarbeiter = Bibliothek.Mitarbeiter_nach_ID(1); e2.Projekt = Bibliothek.Projekt_nach_ID(2); e2.Start = new DateTime(2016, 6, 10, 11, 0, 0); e2.Ende = new DateTime(2016, 6, 10, 18, 0, 0); Bibliothek.EinsatzNeu(e2); Einsatz e3 = new Einsatz(); e1.ID = 3; e3.Mitarbeiter = Bibliothek.Mitarbeiter_nach_ID(2); e3.Projekt = Bibliothek.Projekt_nach_ID(1); e3.Start = new DateTime(2016, 6, 14, 10, 0, 0); e3.Ende = new DateTime(2016, 6, 14, 14, 0, 0); Bibliothek.EinsatzNeu(e3); Einsatz e4 = new Einsatz(); e1.ID = 4; e4.Mitarbeiter = Bibliothek.Mitarbeiter_nach_ID(2); e4.Projekt = Bibliothek.Projekt_nach_ID(1); e4.Start = new DateTime(2016, 6, 15, 10, 0, 0); e4.Ende = new DateTime(2016, 6, 15, 14, 0, 0); Bibliothek.EinsatzNeu(e4); }
/// <summary> /// Diese Methode nimmt die Werte die der Benutzer einegegeben hat und speichert sie in einen Einsatz, /// </summary> /// <param name="e">Einsatz der mit den Werten vom Benutzer gefüllt werden soll</param> private void setzeEinsatz(Einsatz e) { e.ID = einsatz.ID; e.Mitarbeiter = Bibliothek.Mitarbeiter_nach_ID(this.mitarbeiter.SelectedIndex + 1); e.Projekt = Bibliothek.Projekt_nach_ID(this.projekt.SelectedIndex + 1); e.Farbe = (farbe.Background as SolidColorBrush).Color; setzeDatum(e); }
/// <summary> /// Diese Methode überprüft, dass der aktuelle Einsatz ( ob neu oder geändert ist in diesem Falle egal ) keine Zeitüberschneidung mit einem existierenden Einsatz hat. /// </summary> /// <returns>Gibt False zurück wenn eine Zeitüberschneidung mit einem existierenden Einsatz besteht und True wenn nicht</returns> private bool ueberpruefeZeit() { /* * Es wird ein neuer Einsatz mit den gleichen werten wie der neue oder bearbeitete Einsatz. * Dies ist notwendig da wenn die Daten des aktuellen Einsatzes auf die Werte der eingaben gesezt werden, * müsste mann alle Werte auf die Werte bevor der änderung zurücksetzen wenn ein Wert nicht stimmt. * Mit einem testEinsatz aber ist es egal wie die Werte sind da er einfach gelöscht werden kann. */ Einsatz testEinsatz = new Einsatz(); // testEinsatz wird eine Kopie des aktuellen Einsatzes ohne dabei nur die Referenz zu kopieren. setzeEinsatz(testEinsatz); // Nun wird für jeden Einsatz ausser den aktuellen überprüft, ob eine Zeitüberschneidung besteht. bool keineUeberschneidung = true; Mitarbeiter mitarbeiter = Bibliothek.Mitarbeiter_nach_ID(this.mitarbeiter.SelectedIndex + 1); foreach (Einsatz e in Bibliothek.Einsatz_Alle()) { if (testEinsatz.ID != e.ID) { if (e.Mitarbeiter.ID == mitarbeiter.ID) { if (e.Start.Date == testEinsatz.Start.Date) { /* * Falls der ausgelesene Einsatz nicht dem aktuellen Einsatz entspricht, * der Mitarbeiter gleich ist wie der der in der ComboBox ausgewählt wurde und * der Einsatz am gleichen Tag wie der aktuelle Einsatz statt findet, * wird berprüft das Sie sich nicht überschreiben. */ if ( // Das Startdatum ist gleich wie das Enddatum (testEinsatz.Start != testEinsatz.Ende) || // Das Start oder Enddatum liegt auf dem zu überprüfenden Datum (testEinsatz.Ende > testEinsatz.Start) || (testEinsatz.Start == e.Start || testEinsatz.Ende == e.Ende) || // Das Start und Enddatum liegt zwischen den zu überprüfenden Daten (testEinsatz.Start > e.Start && testEinsatz.Ende < e.Ende) || // Das Startdatum liegt zwischen den zu überprüfenden Daten (testEinsatz.Start > e.Start && testEinsatz.Start < e.Ende) || // Das Enddatum liegt zwischen den zu überprüfenden Daten (testEinsatz.Ende > e.Start && testEinsatz.Ende < e.Ende) || // Das Start und das Enddatum liegen ausserhalb der zu überprüfenden Daten. (testEinsatz.Start < e.Start && testEinsatz.Ende > e.Ende) || // Das Start oder Enddatum liegt ausserhalb des Projekt Zeitraumes. (testEinsatz.Start < testEinsatz.Projekt.StartDatum || testEinsatz.Ende > testEinsatz.Projekt.EndDatum) ) { // Wenn sie sich überschneiden wird ein entsprechender Fehler ausgegeben. MessageBox.Show(Fehler_Zeit_ueberschneidung); keineUeberschneidung = false; } } } } } return(keineUeberschneidung); }
public static void EinsatzNeu(Einsatz einsatz) { if (Einsaetze == null) { Einsaetze = new List <Einsatz>(); } Einsaetze.Add(einsatz); // Stunden nachtragen einsatz.Projekt.OffeneZeitStunden = einsatz.Projekt.OffeneZeitStunden - (einsatz.Ende.Subtract(einsatz.Start).TotalHours); // Projekt nachtragen Projekt_nach_ID(einsatz.Projekt.ID).Einsaetze.Add(einsatz); }
/// <summary> /// Diese Methode nimmt die Werte die der Benutzer als Zeiten eingegeben hat und rechnet sie so um, /// das sie in einen Einsatz gespeichert werden können (e). /// </summary> /// <param name="e">Einsatz für den das Eingegeben Datum gesezt werden soll.</param> private void setzeDatum(Einsatz e) { // Hier wird ein String vom Format 2016-04-13T10:27 erstellt da dieses Format benötigt wird um ein DateTime Objekt daraus zu generieren // dass in dem Einsatz (e) gespeichert werden kann. Hier wird Start und Endzeit gesezt. String startDatumString = datum.SelectedDate.Value.Year.ToString() + "-" + datum.SelectedDate.Value.Month.ToString() + "-" + datum.SelectedDate.Value.Day.ToString() + "T" + start_zeit.Text + ":00"; e.Start = DateTime.Parse(startDatumString); String endDatumString = datum.SelectedDate.Value.Year.ToString() + "-" + datum.SelectedDate.Value.Month.ToString() + "-" + datum.SelectedDate.Value.Day.ToString() + "T" + end_zeit.Text + ":00"; e.Ende = DateTime.Parse(endDatumString); }
private bool isValid(Einsatz newJob, Einsatz oldJob, bool isEdit) // oldJob only use when editing job { // check for invalidation bool valid = true; // Check if Mitarbeiter already has a job today int daydiff = newJob.Ende.DayOfYear - newJob.Start.DayOfYear; for (int i = 0; i <= daydiff; i++) { if (isEdit == true) { if (oldJob.Start.DayOfYear <= newJob.Start.AddDays(i).DayOfYear&& oldJob.Ende.DayOfYear >= newJob.Start.AddDays(i).DayOfYear) { // Only run when in edit mode // Day already in original job so no need to check - skip to next day continue; } } List <Einsatz> jobList = Bibliothek.Einsaetz_an_Datum(newJob.Start.AddDays(i)); for (var k = 0; k < jobList.Count(); k++) { if (jobList[k].Mitarbeiter.ID == newJob.Mitarbeiter.ID) { valid = false; this.success.Text = "Doppeleinsatz für Mitarbeiter. Das ist Nicht Erlaubt!"; this.success.Background = Brushes.Red; this.success.Visibility = Visibility.Visible; } } } // Check if job out of project bounds if (newJob.Projekt.EndDatum.DayOfYear < newJob.Ende.DayOfYear || newJob.Projekt.StartDatum.DayOfYear > newJob.Start.DayOfYear) { // Display Error this.success.Text = "Einsatz Zeitspanne ausserhalb Projekt Zeitspanne!"; this.success.Background = Brushes.Red; this.success.Visibility = Visibility.Visible; valid = false; } return(valid); }
public Einzelansicht(int ID, MainWindow mainWindow) { this.mainWindow = mainWindow; InitializeComponent(); prepareDropdown(); if (ID == 0) { isNewEntry = true; } else { isNewEntry = false; einsatz = Bibliothek.Einsatz_nach_ID(ID); inhaltAbfüllen(); } setButtons(); }
/// <param name="einsatzID">Die ID des Einsatzes der geändert werden soll oder 0 bei einem neuen Einsatz</param> public EinzelAnsicht(int einsatzID) { InitializeComponent(); // Wenn einsatzID 0 ist wird Neu auf True gesezt und es ist nun klar das ein neuer Einsatz erstellt werden soll. Neu = (einsatzID == 0); if (!Neu) { // Falls kein neuer Einsatz erstellt werden soll, wird die Instanzvariabel einsatz auf das Objekt gesezt das Einsatz_nach_ID() zurückgibt. einsatz = Bibliothek.Einsatz_nach_ID(einsatzID); // Nun werden noch die Felder in der Benutzeroberfläche mit den richtigen Werten versehen. id.Content = einsatz.ID.ToString(); setMitarbeiterBox(); setProjektBox(); datum.SelectedDate = einsatz.Start.Date; start_zeit.Text = einsatz.Start.ToShortTimeString(); end_zeit.Text = einsatz.Ende.ToShortTimeString(); farbe.Background = new SolidColorBrush(einsatz.Farbe); } else { // Wenn ein neuer Einsatz erstellt werden soll, wird ein neues Objekt vom Typ Einsatz erstellt und an die Referenz einsatz gehängt. this.einsatz = new Einsatz(); // Nun wird die nächst höchste ID gesucht und diesem Einsatz vergeben. int freieID = 0; foreach (Einsatz einsatz in Bibliothek.Einsatz_Alle()) { if (einsatz.ID > freieID) { freieID = einsatz.ID; } } this.einsatz.ID = freieID + 1; // Nun werden noch die Felder in der Benutzeroberfläche mit den standart Werten versehen. id.Content = this.einsatz.ID.ToString(); setMitarbeiterBox(); setProjektBox(); farbe.Background = new SolidColorBrush(Colors.LightBlue); } }
public newJob() { InitializeComponent(); if (Application.Current.Properties["job_edit_id"] == null) // not in edit mode { // Fill list of mitarbeiters var listMitarbeiter = Bibliothek.Mitarbeiter_Alle(); for (var i = 0; i < listMitarbeiter.Count(); i++) { ComboboxItem mitarbeiter = new ComboboxItem(); // Defined own combobox object (defined below) to save name & id mitarbeiter.Text = listMitarbeiter[i].Name; mitarbeiter.Value = listMitarbeiter[i].ID; jobMit.Items.Add(mitarbeiter); } jobMit.SelectedIndex = 0; // Fill list of projects var listProjekte = Bibliothek.Projekt_Alle(); for (var i = 0; i < listProjekte.Count(); i++) { ComboboxItem projekt = new ComboboxItem(); // Defined own combobox object (defined below) to save name & id projekt.Text = listProjekte[i].Name; projekt.Value = listProjekte[i].ID; jobProj.Items.Add(projekt); } jobProj.SelectedIndex = 0; } // Edit Employee auto fill form if (Application.Current.Properties["job_edit_id"] != null) { int job_id; var bool5 = Int32.TryParse(Application.Current.Properties["job_edit_id"].ToString(), out job_id); Einsatz job = Bibliothek.Einsatz_nach_ID(job_id); this.jobName.Text = job.Name; // Fill list of mitarbeiters var listMit = Bibliothek.Mitarbeiter_Alle(); var index1 = 0; for (var i = 0; i < listMit.Count(); i++) { ComboboxItem mitarbeiter = new ComboboxItem(); // Defined own combobox object (defined below) to save name & id mitarbeiter.Text = listMit[i].Name; mitarbeiter.Value = listMit[i].ID; jobMit.Items.Add(mitarbeiter); if (job.Mitarbeiter.ID == listMit[i].ID) { jobMit.SelectedIndex = index1; } else { index1 += 1; } } // Fill list of projects var listProj = Bibliothek.Projekt_Alle(); var index2 = 0; for (var i = 0; i < listProj.Count(); i++) { ComboboxItem projekt = new ComboboxItem(); // Defined own combobox object (defined below) to save name & id projekt.Text = listProj[i].Name; projekt.Value = listProj[i].ID; jobProj.Items.Add(projekt); if (job.Projekt.ID == listProj[i].ID) { jobProj.SelectedIndex = index2; } else { index2 += 1; } } this.jobStart.SelectedDate = job.Start; this.jobEnd.SelectedDate = job.Ende; this.jobSubmit.Tag = "edit"; // Create hidden button to save employee id this.btnID.Tag = job_id.ToString(); // Edit window opened and loaded.. reset trigger property Application.Current.Properties["job_edit_id"] = null; } }
private void btnJob_Handler(object sender, RoutedEventArgs e) { Button myButton = (Button)sender; // Create new Job if (myButton.Tag.ToString() == "new") { Einsatz newJob = new Einsatz(); int id; var bool4 = Int32.TryParse(Application.Current.Properties["job_id"].ToString(), out id); // saved max id to increment newJob.ID = id += 1; Application.Current.Properties["job_id"] = (id += 1).ToString(); newJob.Name = this.jobName.Text; // Get Mitarbeiter und Projekte ID int mit_id; var bool1 = Int32.TryParse((jobMit.SelectedItem as ComboboxItem).Value.ToString(), out mit_id); int proj_id; var bool2 = Int32.TryParse((jobProj.SelectedItem as ComboboxItem).Value.ToString(), out proj_id); newJob.Mitarbeiter = Bibliothek.Mitarbeiter_nach_ID(mit_id); // Tag has id and save Bibliotek get from id newJob.Projekt = Bibliothek.Projekt_nach_ID(proj_id); newJob.Start = this.jobStart.SelectedDate.Value; newJob.Ende = this.jobEnd.SelectedDate.Value; // check validity bool valid = isValid(newJob, new Einsatz(), false); if (valid == true) { // Create New Job Bibliothek.EinsatzNeu(newJob); // Job Created - show success and reset form this.jobName.Text = ""; this.jobMit.SelectedIndex = 1; this.jobProj.SelectedIndex = 1; this.jobStart.SelectedDate = null; this.jobEnd.SelectedDate = null; this.success.Text = "Einsatz erfolgrichlich erstellt"; this.success.Background = Brushes.LimeGreen; this.success.Visibility = Visibility.Visible; } } // Edit Job if (myButton.Tag.ToString() == "edit") { int id; var bool6 = Int32.TryParse(this.btnID.Tag.ToString(), out id); // Einsatz job = Bibliothek.Einsatz_nach_ID(id); Einsatz job = new Einsatz(); job.Name = this.jobName.Text; // Get Mitarbeiter und Projekte ID int mit_id; var bool1 = Int32.TryParse((jobMit.SelectedItem as ComboboxItem).Value.ToString(), out mit_id); int proj_id; var bool2 = Int32.TryParse((jobProj.SelectedItem as ComboboxItem).Value.ToString(), out proj_id); job.Mitarbeiter = Bibliothek.Mitarbeiter_nach_ID(mit_id); // Tag has id and save Bibliotek get from id job.Projekt = Bibliothek.Projekt_nach_ID(proj_id); job.Start = this.jobStart.SelectedDate.Value; job.Ende = this.jobEnd.SelectedDate.Value; bool valid = isValid(job, Bibliothek.Einsatz_nach_ID(id), true); if (valid == true) { Einsatz original_job = Bibliothek.Einsatz_nach_ID(id); original_job.Name = this.jobName.Text; // Get Mitarbeiter und Projekte ID int _mit_id; var _bool1 = Int32.TryParse((jobMit.SelectedItem as ComboboxItem).Value.ToString(), out _mit_id); int _proj_id; var _bool2 = Int32.TryParse((jobProj.SelectedItem as ComboboxItem).Value.ToString(), out _proj_id); original_job.Mitarbeiter = Bibliothek.Mitarbeiter_nach_ID(_mit_id); // Tag has id and save Bibliotek get from id original_job.Projekt = Bibliothek.Projekt_nach_ID(_proj_id); original_job.Start = this.jobStart.SelectedDate.Value; original_job.Ende = this.jobEnd.SelectedDate.Value; this.btnID.Tag = ""; // reset edit job id holder // Job Edited - show success and reset form this.jobName.Text = ""; this.jobMit.SelectedIndex = 1; this.jobProj.SelectedIndex = 1; this.jobStart.SelectedDate = null; this.jobEnd.SelectedDate = null; this.success.Text = "Einsatz erfolgrichlich gearbeitet"; this.success.Background = Brushes.LimeGreen; this.success.Visibility = Visibility.Visible; } } }