/// <summary>
        ///     Funkcja sprawdza czy pracownik ma dyżur dzień wcześniej.
        /// </summary>
        /// <typeparam name="T">
        ///     Obsługuje tylko 2 typy:
        ///       - Lekarz,
        ///       - Pielegniarka.
        /// </typeparam>
        /// <param name="pracownik">
        ///     Przechowuje aktualnie wybranego pracownika.
        /// </param>
        /// <param name="dzien">
        ///     Przechowuje date dyżuru.
        /// </param>
        /// <returns>
        ///     @true - Pracownik ma dyżur dzień wcześniej.
        ///     @false - Pracownik NIE ma dyżuru dzień wcześniej.
        /// </returns>
        private bool CzyWczorajMialDyzur <T>(T pracownik, DateTime dzien)
        {
            DateTime wczoraj = dzien.AddDays(-1);

            if (pracownik is Lekarz)
            {
                Lekarz l = pracownik as Lekarz;

                foreach (DateTime element in l.Dyzury)
                {
                    if (wczoraj.Day.Equals(element.Day) && wczoraj.Month.Equals(element.Month) && wczoraj.Year.Equals(element.Year))
                    {
                        return(true);
                    }
                }
            }

            if (pracownik is Pielegniarka)
            {
                Pielegniarka p = pracownik as Pielegniarka;

                foreach (DateTime element in p.Dyzury)
                {
                    if (wczoraj.Day.Equals(element.Day) && wczoraj.Month.Equals(element.Month) && wczoraj.Year.Equals(element.Year))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
        /// <summary>
        ///     Zdarzenie usuwa wskazanego pracownika z listy.
        /// </summary>
        private void UsunPracownika_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem != null)
            {
                Administrator a = listBox1.SelectedItem as Administrator;
                Form1.UsunPracownika(a);
                listBox1.DataSource = null;
                listBox1.Items.Clear();
                listBox1.DataSource = Form1.listaAdministratorow;
            }

            if (listBox2.SelectedItem != null)
            {
                Lekarz l = listBox2.SelectedItem as Lekarz;
                Form1.UsunPracownika(l);
                listBox2.DataSource = null;
                listBox2.Items.Clear();
                listBox2.DataSource = Form1.listaLekarzy;
            }

            if (listBox3.SelectedItem != null)
            {
                Pielegniarka p = listBox3.SelectedItem as Pielegniarka;
                Form1.UsunPracownika(p);
                listBox3.DataSource = null;
                listBox3.Items.Clear();
                listBox3.DataSource = Form1.listaPielegniarek;
            }
        }
        /// <summary>
        ///     Funkcja użyta podczas edycji do wypełnienia pól formularza danymi wybranego pracownika.
        /// </summary>
        /// <typeparam name="T">
        ///     Obsługuje tylko 3 typy:
        ///       - Administrator,
        ///       - Lekarz,
        ///       - Pielegniarka.
        /// </typeparam>
        /// <param name="pracownik">
        ///     Przechowuje aktualnie wybranego pracownika.
        /// </param>
        private void WypelnijPola <T>(T pracownik)
        {
            if (pracownik is Administrator)
            {
                Administrator a = pracownik as Administrator;

                imie.Text             = a.Imie;
                nazwisko.Text         = a.Nazwisko;
                pesel.Text            = Convert.ToString(a.Pesel);
                nazwaUzytkownika.Text = a.NazwaUzytkownika;
                haslo.Text            = a.Haslo;

                groupBox1.Enabled          = false;
                rolaAdministrator.Checked  = true;
                specializacja.Enabled      = false;
                specializacja.SelectedItem = null;
                posada.Enabled             = false;
                numerPWZ.Enabled           = false;
            }

            if (pracownik is Lekarz)
            {
                Lekarz l = pracownik as Lekarz;

                imie.Text             = l.Imie;
                nazwisko.Text         = l.Nazwisko;
                pesel.Text            = Convert.ToString(l.Pesel);
                nazwaUzytkownika.Text = l.NazwaUzytkownika;
                haslo.Text            = l.Haslo;

                groupBox1.Enabled          = false;
                rolaLekarz.Checked         = true;
                specializacja.Enabled      = true;
                specializacja.SelectedItem = l.Specializacja;
                posada.Enabled             = true;
                posada.Text      = l.Posada;
                numerPWZ.Enabled = true;
                numerPWZ.Text    = Convert.ToString(l.NumerPWZ);
            }

            if (pracownik is Pielegniarka)
            {
                Pielegniarka p = pracownik as Pielegniarka;

                imie.Text             = p.Imie;
                nazwisko.Text         = p.Nazwisko;
                pesel.Text            = Convert.ToString(p.Pesel);
                nazwaUzytkownika.Text = p.NazwaUzytkownika;
                haslo.Text            = p.Haslo;

                groupBox1.Enabled          = false;
                rolaPielegniarka.Checked   = true;
                specializacja.Enabled      = false;
                specializacja.SelectedItem = null;
                posada.Enabled             = true;
                posada.Text      = p.Posada;
                numerPWZ.Enabled = false;
            }
        }
 /// <summary>
 ///     Zdarzęnie ma za zadanie odznaczyć wszystkie pozostałe pola z listBox1 i wypełnić kalendarz dyżurami aktualnie wybranej osoby.
 /// </summary>
 private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (listBox2.SelectedItem != null)
     {
         listBox1.SelectedItem             = null;
         pielegniarka                      = listBox2.SelectedItem as Pielegniarka;
         monthCalendar1.MonthlyBoldedDates = pielegniarka.Dyzury.ToArray();
     }
 }
        /// <summary>
        ///     Inicjalizuje wygląd dla edycji Pielegniarka.
        /// </summary>
        /// <param name="form3">
        ///     Zmienna potrzeba mi była, aby sterować Form3.
        /// </param>
        /// <param name="p">
        ///     Przechowuje wybranego pielęgniarke.
        /// </param>
        /// <param name="lb_p">
        ///     Przechowuje referencje do listaPielegniarek, aby ją zaktualizować.
        /// </param>
        public Form4(Form3 form3, Pielegniarka p, ref ListBox lb_p)
        {
            InitializeComponent();

            this.form3   = form3;
            pielegniarka = p;
            isEdited     = true;

            lista = lb_p;

            ZainicjujListeSpecializacji();
            WypelnijPola(p);
        }
        /// <summary>
        ///     Zdarzenie dodaje, bądź edytuje pracownika w zależności od flagi isEdited.
        /// </summary>
        private void DodajEdytuj_Click(object sender, EventArgs e)
        {
            if (isEdited)
            {
                if (rolaAdministrator.Checked)
                {
                    Form1.UsunPracownika(administrator);
                }

                if (rolaLekarz.Checked)
                {
                    Form1.UsunPracownika(lekarz);
                }

                if (rolaPielegniarka.Checked)
                {
                    Form1.UsunPracownika(pielegniarka);
                }
            }

            if (rolaAdministrator.Checked)
            {
                Administrator a = new Administrator(imie.Text, nazwisko.Text, Convert.ToInt64(pesel.Text), nazwaUzytkownika.Text, haslo.Text);
                Form1.DodajPracownika(a);
                lista.DataSource = null;
                lista.Items.Clear();
                lista.DataSource = Form1.listaAdministratorow;
            }

            if (rolaLekarz.Checked)
            {
                Lekarz l = new Lekarz(imie.Text, nazwisko.Text, Convert.ToInt64(pesel.Text), nazwaUzytkownika.Text, haslo.Text, posada.Text, (Specializacja)specializacja.SelectedItem, Convert.ToInt64(numerPWZ));
                Form1.DodajPracownika(l);
                lista.DataSource = null;
                lista.Items.Clear();
                lista.DataSource = Form1.listaLekarzy;
            }

            if (rolaPielegniarka.Checked)
            {
                Pielegniarka p = new Pielegniarka(imie.Text, nazwisko.Text, Convert.ToInt64(pesel.Text), nazwaUzytkownika.Text, haslo.Text, posada.Text);
                Form1.DodajPracownika(p);
                lista.DataSource = null;
                lista.Items.Clear();
                lista.DataSource = Form1.listaPielegniarek;
            }

            form3.Visible = true;
            Close();
        }
        /// <summary>
        ///     Natomiast jeśli zaloguje się Pielegniarka to wykona się ten konstrukor. Inicjalizacja całego formularza.
        /// </summary>
        /// <param name="form1">Zmienna potrzeba mi była, aby sterować Form1.</param>
        /// <param name="pielegniarka">Zmienna przechowuje aktualnie zalogowanego użytkownika.</param>
        /// <param name="listaLekarzy">Informacje dla listBox1.</param>
        /// <param name="listaPielegniarek">Informacje dla listBox2.</param>
        public Form2(Form1 form1, Pielegniarka pielegniarka, List <Lekarz> listaLekarzy, List <Pielegniarka> listaPielegniarek)
        {
            InitializeComponent();

            this.form1        = form1;
            lekarz            = null;
            this.pielegniarka = pielegniarka;

            listBox1.DataSource = listaLekarzy;
            listBox2.DataSource = listaPielegniarek;

            listBox1.SelectedItem = null;
            listBox2.SelectedItem = pielegniarka;

            monthCalendar1.MonthlyBoldedDates = pielegniarka.Dyzury.ToArray();
        }
        /// <summary>
        ///     Zdarzenie usuwa dyzur wskazanemu pracownikowi
        /// </summary>
        private void UsunDyzor_Click(object sender, EventArgs e)
        {
            if (listBox2.SelectedItem != null)
            {
                Lekarz l = listBox2.SelectedItem as Lekarz;
                l.Dyzury.Remove(dateTimePicker1.Value);
                monthCalendar1.RemoveBoldedDate(dateTimePicker1.Value);
                monthCalendar1.Refresh();
            }

            if (listBox3.SelectedItem != null)
            {
                Pielegniarka p = listBox3.SelectedItem as Pielegniarka;
                p.Dyzury.Remove(dateTimePicker1.Value);
                monthCalendar1.RemoveBoldedDate(dateTimePicker1.Value);
                monthCalendar1.Refresh();
            }
        }
Beispiel #9
0
        /// <summary>
        ///     Analogicznie jak poprzednia, tylko ze do usuwania z listy. Program wyszukuje pracownika do usunięcia za pomocą obiektu, który został mu dostarczony.
        /// </summary>
        /// <typeparam name="T">
        ///     Obsługuje tylko 3 typy:
        ///       - Administrator,
        ///       - Lekarz,
        ///       - Pielegniarka.
        /// </typeparam>
        /// <param name="pracownik">
        ///     Przechowuje pracownika, który ma zostać usunięty.
        /// </param>
        public static void UsunPracownika <T>(T pracownik)
        {
            if (pracownik is Administrator)
            {
                Administrator a = pracownik as Administrator;
                listaAdministratorow.Remove(a);
            }

            if (pracownik is Lekarz)
            {
                Lekarz l = pracownik as Lekarz;
                listaLekarzy.Remove(l);
            }

            if (pracownik is Pielegniarka)
            {
                Pielegniarka p = pracownik as Pielegniarka;
                listaPielegniarek.Remove(p);
            }
        }
Beispiel #10
0
        /// <summary>
        ///     Funkcja dodaje "pracownika" do odpowiadającej mu listy. Dziala to na takiej zasadzie, ze gdy użyje tej funkcji na obiekcie Administrator to Administrator zostanie dodany do
        ///     listaAdministratorow. Jeśli to był Lekarz to do listaLekarzy zostanie dodany. Na potrzeby programu funkcja moze przyjac tylko 3 typy danych - Administrator, Lekarz i Pielegniarka.
        /// </summary>
        /// <typeparam name="T">
        ///     Obsługuje tylko 3 typy:
        ///       - Administrator,
        ///       - Lekarz,
        ///       - Pielegniarka.
        /// </typeparam>
        /// <param name="pracownik">
        ///     Przechowuje pracownika, który ma zostać dodany.
        /// </param>
        public static void DodajPracownika <T>(T pracownik)
        {
            if (pracownik is Administrator)
            {
                Administrator a = pracownik as Administrator;
                listaAdministratorow.Add(a);
            }

            if (pracownik is Lekarz)
            {
                Lekarz l = pracownik as Lekarz;
                listaLekarzy.Add(l);
            }

            if (pracownik is Pielegniarka)
            {
                Pielegniarka p = pracownik as Pielegniarka;
                listaPielegniarek.Add(p);
            }
        }
        /// <summary>
        ///     Funkcja sprawdza:
        ///       1. Czy pielęgniarka w tym miesiacu nie ma 10 dyżurów,
        ///       2. Czy pielęgniarka nie ma dyżuru dzień wcześniej.
        ///
        ///     Jeśli wszystkie wymagania zostały spełnione, dodaje dyżur wybranej pielęgniarce.
        /// </summary>
        private void DodajDyzurPielegniarce()
        {
            Pielegniarka p = listBox3.SelectedItem as Pielegniarka;

            if (!CzyWczorajMialDyzur(p, dateTimePicker1.Value))
            {
                if (CzyMogeWziascDyzur(p))
                {
                    p.Dyzury.Add(dateTimePicker1.Value);
                    monthCalendar1.AddBoldedDate(dateTimePicker1.Value);
                }
                else
                {
                    MessageBox.Show("Posiada już 10 dyzurów.");
                }
            }
            else
            {
                MessageBox.Show("Poprzedniego dnia miał/a dyżur.");
            }
        }
        /// <summary>
        ///     Funkcja sprawdza czy Lekarz/Pielegniarka ma mniej niż 10 dyżurów w miesiącu.
        /// </summary>
        /// <typeparam name="T">
        ///     Obsługuje tylko 2 typy:
        ///       - Lekarz,
        ///       - Pielegniarka.
        /// </typeparam>
        /// <param name="pracownik">
        ///     Przechowuje aktualnie wybranego pracownika.
        /// </param>
        /// <returns>
        ///     @true - pracownik ma mniej dyżurów niż 10 w tym miesiącu.
        ///     @false - pracownik ma już 10 dyżurów w tym miesiącu.
        /// </returns>
        private bool CzyMogeWziascDyzur <T>(T pracownik)
        {
            DateTime data    = monthCalendar1.TodayDate;
            int      counter = 0;

            if (pracownik is Lekarz)
            {
                Lekarz l = pracownik as Lekarz;
                foreach (DateTime element in l.Dyzury)
                {
                    if (data.Month.Equals(element.Month) && data.Year.Equals(element.Year))
                    {
                        counter++;
                    }
                }
            }

            if (pracownik is Pielegniarka)
            {
                Pielegniarka p = pracownik as Pielegniarka;

                foreach (DateTime element in p.Dyzury)
                {
                    if (data.Month.Equals(element.Month) && data.Year.Equals(element.Year))
                    {
                        counter++;
                    }
                }
            }

            if (counter < 10)
            {
                return(true);
            }
            return(false);
        }