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);
            }
        }
        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();
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Przycisk zatwierdzania zmian dokonanych w formularzu
        /// zapisuje zmiany w bazie danych
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                CheckDataCorrectnessEmployee();

                DataAssignmentEmployee();

                //jeżeli zmienna "edycja" ma wartość true wpis o podanym idPracownwnika jest edytowany
                if (isEdit)
                {
                    //rozpoczęcie transakcji i blokowanie rekordu
                    Polaczenia.BeginTransactionSerializable();

                    //wprowadzanie zmian do bazy
                    if (editEmployee)
                    {
                        employeeManager.Edit(employee, ConnectionToDB.notDisconnect);
                    }

                    if (editRateRegular)
                    {
                        //sprawdzenie czy istnieje stawka z wybraną datą
                        //jeżeli istnieje to edycja stawki
                        if (employee.RateRegular.IsExist())
                        {
                            employee.RateRegular.DateFrom          = dtpRegularRateFromDate.Value;
                            employee.RateRegular.RateValue         = Convert.ToSingle(this.tbRateValue.Text);
                            employee.RateRegular.IsMonthlyOrHourly = (rbRateHourly.Checked ? RateType.hourly : RateType.monthly);
                            employee.EditRateRegular(ConnectionToDB.notDisconnect);
                        }
                        else
                        //jeżeli nie to dodanie nowej
                        {
                            employee.RateRegular = new RateRegular(dtpRegularRateFromDate.Value, Convert.ToSingle(this.tbRateValue.Text), rbRateHourly.Checked ? RateType.hourly : RateType.monthly);
                            employee.AddRateRegular(ConnectionToDB.notDisconnect);
                        }
                    }

                    if (editRateOvertime)
                    {
                        //sprawdzenie czy istnieje stawka z wybraną datą
                        //jeżeli istnieje to edycja stawki
                        if (employee.RateOvertime.IsExist())
                        {
                            employee.RateOvertime.DateFrom  = dtpOvertimeRateFromDate.Value;
                            employee.RateOvertime.RateValue = Convert.ToSingle(this.tbRateOvertimeValue.Text);
                            employee.EditRateOvertime(ConnectionToDB.notDisconnect);
                        }
                        else
                        {
                            //jeżeli nie to dodanie nowej
                            employee.RateOvertime = new RateOvertime(dtpOvertimeRateFromDate.Value, Convert.ToSingle(this.tbRateOvertimeValue.Text));
                            employee.AddRateOvertime(ConnectionToDB.notDisconnect);
                        }
                    }
                    Polaczenia.CommitTransaction();
                    Blokady.UsuwanieBlokady(Polaczenia.idUser, NazwaTabeli.pracownik);
                    Polaczenia.OdlaczenieOdBazy();
                    Employee.correctEmployee = true;
                    //zamykanie formularza
                    this.Close();
                }
                else//jeżeli nie edycja to dodaje nowego pracownika do bazy
                {
                    //rozpoczęcie transakcji
                    Polaczenia.BeginTransaction();
                    //dodanie pracownika
                    int idInsertedEmployee = employeeManager.AddReturnId(employee, ConnectionToDB.notDisconnect);

                    employee = employeeManager.GetEmployee(idInsertedEmployee, TableView.table, ConnectionToDB.notDisconnect);
                    //pobranie i przypisanie id ostatniego pracownika
                    employee.RateRegular  = new RateRegular(idInsertedEmployee, dtpRegularRateFromDate.Value, Convert.ToSingle(this.tbRateValue.Text), rbRateHourly.Checked ? RateType.hourly : RateType.monthly);
                    employee.RateOvertime = new RateOvertime(idInsertedEmployee, dtpOvertimeRateFromDate.Value, Convert.ToSingle(this.tbRateOvertimeValue.Text));
                    //dodanie stawki
                    employee.AddRateRegular(ConnectionToDB.notDisconnect);
                    //dodanie stawki za nadgodziny
                    employee.AddRateOvertime(ConnectionToDB.notDisconnect);
                    Polaczenia.CommitTransaction();
                    Polaczenia.OdlaczenieOdBazy();
                    //zamykanie formularza
                    this.Close();
                }
            }
            catch (EmptyStringException ex)
            {
                MessageBox.Show(ex.Message, "Błąd danych", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (WrongSizeStringException ex)
            {
                MessageBox.Show(ex.Message, "Błąd danych", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (NoNullException ex)
            {
                MessageBox.Show(ex.Message, "Błąd danych", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (OverflowException)
            {
                MessageBox.Show("Wprowadziłeś niepoprawną stawkę lub urlop.\n\nPopraw pola zaznaczone na czerwono.", "Błąd danych", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (SqlException eSQL)
            {
                MessageBox.Show(eSQL.Message, "Błąd SQL podczas wprowadzania danych", MessageBoxButtons.OK, MessageBoxIcon.Error);

                Polaczenia.RollbackTransaction();
                Polaczenia.OdlaczenieOdBazy();
                //log
                LogErr.DodajLogErrorDoBazy(new LogErr(Polaczenia.idUser, DateTime.Now, Polaczenia.ip, 0, NazwaTabeli.pracownik, "PracownikNowyForm.btnDodaj_Click()/n/n" + eSQL.Message));
            }
            catch (System.IO.FileNotFoundException ex)
            {
                MessageBox.Show(ex.Message, "Brak pliku konfiguracyjnego", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex2)
            {
                MessageBox.Show(ex2.Message, "Błąd podczas sprawdzania danych", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Polaczenia.RollbackTransaction();
                Polaczenia.OdlaczenieOdBazy();
                //log
                LogErr.DodajLogErrorDoBazy(new LogErr(Polaczenia.idUser, DateTime.Now, Polaczenia.ip, 0, NazwaTabeli.pracownik, "PracownikNowyForm.btnDodaj_Click()/n/n" + ex2.Message));
            }
            finally
            {
                //jeżeli edycja danych to usuwa blokade rekordu
                if (isEdit)
                {
                    Blokady.UsuwanieBlokady(Polaczenia.idUser, NazwaTabeli.pracownik);
                    Polaczenia.OdlaczenieOdBazy();
                }
            }
        }