Ejemplo n.º 1
0
        /// <summary>
        /// Save vacation setup to database (direct)
        /// </summary>
        /// <param name="companyId">companyId</param>
        public void Save(int companyId)
        {
            VacationsSetupTDS vacationSetupChanges = (VacationsSetupTDS)Data.GetChanges();

            if (vacationSetupChanges != null)
            {
                if (vacationSetupChanges.VacationsSetup.Rows.Count > 0)
                {
                    VacationsSetupGateway vacationsSetupGateway = new VacationsSetupGateway(vacationSetupChanges);

                    foreach (VacationsSetupTDS.VacationsSetupRow row in (VacationsSetupTDS.VacationsSetupDataTable)vacationSetupChanges.VacationsSetup)
                    {
                        // Insert new vacation setup
                        if (!row.InDatabase)
                        {
                            double totalTakenVacationDays = 0;
                            VacationsEmployeeMaxPaidVacations vacationsEmployeeMaxPaidVacations = new VacationsEmployeeMaxPaidVacations(null);
                            vacationsEmployeeMaxPaidVacations.InsertDirect(row.Year, row.EmployeeID, row.VacationDays, totalTakenVacationDays, row.CarryOverDays, row.TotalVacationDays, false, companyId);
                        }

                        // Update vacation setup
                        if (row.InDatabase)
                        {
                            int year = row.Year;
                            int employeeId = row.EmployeeID;

                            // ... original values
                            double originalVacationDays = vacationsSetupGateway.GetVacationDaysOriginal(year, employeeId);
                            double originalCarryOverDays = vacationsSetupGateway.GetCarryOverDaysOriginal(year, employeeId);
                            double originalTotalVacationDays = vacationsSetupGateway.GetTotalVacationDaysOriginal(year, employeeId);

                            // ... new values
                            double newVacationDays = vacationsSetupGateway.GetVacationDays(year, employeeId);
                            double newCarryOverDays = vacationsSetupGateway.GetCarryOverDays(year, employeeId);
                            double newTotalVacationDays = vacationsSetupGateway.GetTotalVacationDays(year, employeeId);

                            if ((originalVacationDays != newVacationDays) || (originalCarryOverDays != newCarryOverDays))
                            {
                                VacationsEmployeeMaxPaidVacations vacationsEmployeeMaxPaidVacations = new VacationsEmployeeMaxPaidVacations(null);
                                vacationsEmployeeMaxPaidVacations.UpdateDirect(year, employeeId, originalVacationDays, row.TotalTakenVacationDays, originalCarryOverDays, originalTotalVacationDays, false, companyId, year, employeeId, newVacationDays, row.TotalTakenVacationDays, newCarryOverDays, newTotalVacationDays, false, companyId);
                            }
                        }
                    }
                }
            }
        }