Example #1
0
        public static void RecalculateHolidaysTimeRanges(long countryid, CacheListEmployeeContracts contracts, List<AbsenceTimeRecording> absences)
        {
            if (absences == null || absences.Count == 0) return;

            int Year = -1;

            AbsenceManager absenceManager = new AbsenceManager(ServerEnvironment.AbsenceService, countryid);

            double avgWorkingDays = 0;// ServerEnvironment.AvgWorkingDaysInWeekService.GetAvgWorkingDaysInWeek(ServerEnvironment.CountryService.AustriaCountryID, Year);

            foreach (AbsenceTimeRecording absence in absences)
            {
                if (absenceManager.IsHoliday(absence.AbsenceID))
                {
                    absence.Absence = absenceManager.GetById(absence.AbsenceID);
                    short time = absence.Time;

                    int contractHours = contracts.GetContractHours(absence.EmployeeID, DateTimeHelper.GetMonday(absence.Date), DateTimeHelper.GetSunday(absence.Date));

                    if (contractHours > 0)
                    {
                        if (Year != DateTimeHelper.GetYearByDate(absence.Date))
                        {
                            Year = DateTimeHelper.GetYearByDate(absence.Date);
                            avgWorkingDays = ServerEnvironment.AvgWorkingDaysInWeekService.GetAvgWorkingDaysInWeek(countryid, Year);
                        }
                        absence.ApplyTime(contractHours, avgWorkingDays);

                        if (absence.Time != time)
                        {
                            ServerEnvironment.AbsenceTimeRecordingService.SaveOrUpdate(absence);
                        }
                    }
                }
            }
        }