예제 #1
0
        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);
        }
예제 #2
0
 /// <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);
 }
예제 #3
0
        /// <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);
        }
예제 #4
0
 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);
 }
예제 #5
0
        /// <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);
        }
예제 #6
0
        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();
        }
예제 #8
0
 /// <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);
     }
 }
예제 #9
0
        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;
            }
        }
예제 #10
0
        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;
                }
            }
        }