/// <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(); } }
/// <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); } }
/// <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); }