internal static void AddIllness(Illness illness, int dayCounter) { string holidayDescription = ""; int numbersOfDays = DateTime.DaysInMonth(MainForm.mainDate.Year, MainForm.mainDate.Month); Polaczenia.BeginTransactionSerializable(); for (int i = 1; i <= dayCounter; i++) { if (illness.Date.DayOfWeek == DayOfWeek.Sunday) { string temp = string.Format("Podawany dzień {0} jest dniem wolnym od pracy - NIEDZIELA\n Czy napewno dodać zasiłek do bazy danych?", illness.Date.ToShortDateString()); DialogResult result = MessageBox.Show(temp, "Pytanie", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { WorkManager.AddWorkTime(illness, ConnectionToDB.notDisconnect); } } else if (illness.Date.DayOfWeek == DayOfWeek.Saturday) { string temp = string.Format("Podawany dzień {0} jest dniem wolnym od pracy - SOBOTA\n Czy napewno dodać zasiłek do bazy danych?", illness.Date.ToShortDateString()); DialogResult result = MessageBox.Show(temp, "Pytanie", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { WorkManager.AddWorkTime(illness, ConnectionToDB.notDisconnect); } } //sprawdza czy nie przypada w dzień wolny - święto else if (Holidays.IsHoliday(illness.Date, out holidayDescription, ConnectionToDB.notDisconnect)) { string temp = string.Format("W dniu {0} przypada {1}.\nCzy napewno dodać zasiłek do bazy danych?", illness.Date.ToShortDateString(), holidayDescription); DialogResult result = MessageBox.Show(temp, "Pytanie", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { WorkManager.AddWorkTime(illness, ConnectionToDB.notDisconnect); } } else { WorkManager.AddWorkTime(illness, ConnectionToDB.notDisconnect); } illness.Date = illness.Date.AddDays(1);//next day } Polaczenia.CommitTransaction(); //jeżeli wpisuje godziny w ostatni dzień miesiąca to nie przechodzi na kolejny if (numbersOfDays != MainForm.mainDate.Day) { MainForm.mainDate = MainForm.mainDate.AddDays(1); } }
internal static void AddWork(Work work) { WorkManager.AddWorkTime(work, ConnectionToDB.disconnect); //jeżeli wpisuje godziny w ostatni dzień miesiąca to nie przechodzi na kolejny int numbersOfDays = DateTime.DaysInMonth(MainForm.mainDate.Year, MainForm.mainDate.Month); if (numbersOfDays != MainForm.mainDate.Day) { //dodaje jeden dzień do aktualnej daty do zmiennej pomocniczej MainForm.mainDate = MainForm.mainDate.AddDays(1); } else { //ustawia spowrotem na 1 dzień miesiąca MainForm.mainDate = new DateTime(MainForm.mainDate.Year, MainForm.mainDate.Month, 1); } }
internal static void AddDayOff(DayOff dayOff, int dayCounter) { string holidayDescription = ""; Polaczenia.BeginTransaction(); for (int i = 1; i <= dayCounter; i++) { if (dayOff.Date.DayOfWeek != DayOfWeek.Sunday && dayOff.Date.DayOfWeek != DayOfWeek.Saturday && !Holidays.IsHoliday(dayOff.Date, out holidayDescription, ConnectionToDB.notDisconnect)) { WorkManager.AddWorkTime(dayOff, ConnectionToDB.notDisconnect); if (dayOff.IdTypeDayOff == (int)DayOffType.halfDay) { dayOff.DayOffSubtraction("0.5", ConnectionToDB.notDisconnect); } if (dayOff.IdTypeDayOff == (int)DayOffType.rest) { dayOff.DayOffSubtraction("1", ConnectionToDB.notDisconnect); } dayOff.Date = dayOff.Date.AddDays(1);//next day } else { dayOff.Date = dayOff.Date.AddDays(1);//next day } } Polaczenia.CommitTransaction(); //jeżeli wpisuje godziny w ostatni dzień miesiąca to nie przechodzi na kolejny int numbersOfDays = DateTime.DaysInMonth(MainForm.mainDate.Year, MainForm.mainDate.Month); if (numbersOfDays != MainForm.mainDate.Day) { //dodaje jeden dzień do aktualnej daty do zmiennej pomocniczej MainForm.mainDate = MainForm.mainDate.AddDays(dayCounter); } }
private void btnSave_Click(object sender, EventArgs e) { try { if (isWorkTimeChange) { Work w = new Work(); w.IdEmployee = idEmployee; w.Date = date; w.StartTime = Convert.ToDateTime(tbWorkFrom.Text.ToString()); w.StopTime = Convert.ToDateTime(tbWorkTo.Text.ToString()); //to sprawdza czy godzina przyjścia jest mniejsza od godziny wyjścia if (w.StartTime.TimeOfDay > w.StopTime.TimeOfDay) { throw new WrongDateTimeException("Godzina wyjścia jest mniejsza od godziny przyjścia."); } w.Edit(w, ConnectionToDB.disconnect); } else { Polaczenia.BeginTransactionSerializable(); //usuwanie zamienianych danych z bazy switch (currentWorkType) { case WorkType.work: //praca WorkManager.DeleteWorkTime(WorkType.work, idEmployee, date, ConnectionToDB.notDisconnect); break; case WorkType.illness: //choroba WorkManager.DeleteWorkTime(WorkType.illness, idEmployee, date, ConnectionToDB.notDisconnect); break; case WorkType.dayOff: //urlop DayOff dayOff = WorkManager.GetDayOff(idEmployee, date, ConnectionToDB.notDisconnect); WorkManager.DeleteWorkTime(WorkType.dayOff, idEmployee, date, ConnectionToDB.notDisconnect); //dodaje urlop do puli urlopów z bazy danych if (dayOff.IdTypeDayOff == (int)DayOffType.halfDay) { dayOff.DayOffAddition("0.5", ConnectionToDB.notDisconnect); } if (dayOff.IdTypeDayOff == (int)DayOffType.rest) { dayOff.DayOffAddition("1", ConnectionToDB.notDisconnect); } break; } //Polaczenia.CommitTransaction(); //dodawanie nowych danych do bazy switch (changeForWhatWorkType) { case WorkType.work: //praca Work w = new Work(); w.IdEmployee = idEmployee; w.Date = date; w.StartTime = Convert.ToDateTime(tbWorkFrom.Text.ToString()); w.StopTime = Convert.ToDateTime(tbWorkTo.Text.ToString()); //to sprawdza czy godzina przyjścia jest mniejsza od godziny wyjścia if (w.StartTime.TimeOfDay > w.StopTime.TimeOfDay) { throw new WrongDateTimeException("Godzina wyjścia jest mniejsza od godziny przyjścia."); } WorkManager.AddWorkTime(w, ConnectionToDB.notDisconnect); break; case WorkType.illness: //choroba Illness illness = new Illness(); illness.IdEmployee = idEmployee; illness.Date = date; illness.IdIllnessType = Convert.ToInt32(cbType.SelectedValue); WorkManager.AddWorkTime(illness, ConnectionToDB.notDisconnect); break; case WorkType.dayOff: //urlop DayOff dayOff = new DayOff(); dayOff.IdEmployee = idEmployee; dayOff.Date = date; dayOff.IdTypeDayOff = Convert.ToInt32(cbType.SelectedValue); if (dayOff.Date.DayOfWeek != DayOfWeek.Sunday && dayOff.Date.DayOfWeek != DayOfWeek.Saturday && !Holidays.IsHoliday(dayOff.Date, ConnectionToDB.notDisconnect)) { WorkManager.AddWorkTime(dayOff, ConnectionToDB.notDisconnect); if (dayOff.IdTypeDayOff == (int)DayOffType.halfDay) { dayOff.DayOffSubtraction("0.5", ConnectionToDB.notDisconnect); } if (dayOff.IdTypeDayOff == (int)DayOffType.rest) { dayOff.DayOffSubtraction("1", ConnectionToDB.notDisconnect); } } else { throw new WrongDateTimeException(string.Format("Podawany dzień {0} jest dniem wolnym od pracy", dayOff.Date.ToShortDateString())); } break; } Polaczenia.CommitTransaction(); } } catch (WrongDateTimeException ex) { MessageBox.Show(ex.Message, "Błąd przy zmianie godzin.", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (CancelException ex) { MessageBox.Show(ex.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { Polaczenia.RollbackTransaction(); Polaczenia.OdlaczenieOdBazy(); MessageBox.Show(ex.Message, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error); //log LogErr.DodajLogErrorDoBazy(new LogErr(Polaczenia.idUser, DateTime.Now, Polaczenia.ip, 0, NazwaTabeli.praca, "ZamianaRodzajuPracyForm.btnZatwierdz_Click()/n/n" + ex.Message)); } finally { this.Close(); } }