protected void ProcessWeek(EmployeePlanningDayList planning_days, SrvEmployeeRecordingDayList actual_days, IWorkingModelData week)
        {
            CountSaturday = 0;
            CountSunday = 0;
            WorkingDaysBefore = 0;
            WorkingDaysAfter = 0;

            _days_diction.Clear();

            DateTime endDateSunday = CurrentMonday.AddDays(13);

            if (planning_days != null && planning_days.List != null && planning_days.List.Count > 0)
            {
                for (int i = 0; i < planning_days.List.Count; i++)
                {
                    if (planning_days.List[i].Date <= endDateSunday)
                    {
                        _days_diction[planning_days.List[i].Date] = (IEmployeeDay)planning_days.List[i];
                    }
                }
            }

            if (actual_days!= null && actual_days.List != null && actual_days.List.Count > 0)
            {
                for (int i = 0; i < actual_days.List.Count; i++)
                {
                    if (actual_days.List[i].Date <= endDateSunday)
                        _days_diction[actual_days.List[i].Date] = (IEmployeeDay)actual_days.List[i];
                }
            }

            int SumOfPlannedHoursByMonth = 0;
            foreach (IEmployeeDay day in _days_diction.Values)
            {
                if (day.Date < CurrentMonday && day.Date.Month == CurrentMonday.Month)
                {
                    SumOfPlannedHoursByMonth += day.AllreadyPlannedHours;

                    if (day.Date.DayOfWeek == DayOfWeek.Saturday && day.WorkingHours > 0)
                    {
                            CountSaturday++;
                    }
                    if (day.Date.DayOfWeek == DayOfWeek.Sunday && day.WorkingHours > 0)
                    {
                            CountSunday++;
                    }
                }
            }
            DateTime begin;
            IEmployeeDay day_item = null;
            for (int i = 1; i <= 7; i++)
            {
                begin = CurrentMonday.AddDays(-i);
                if (_days_diction.TryGetValue(begin, out day_item) && day_item.WorkingHours > 0)
                {
                    WorkingDaysBefore++;
                }
                else
                    break;

            }
            DateTime sunday = DateTimeHelper.GetSunday(CurrentMonday);
            for (int i = 1; i <= 7; i++)
            {
                begin = sunday.AddDays(i);
                if (_days_diction.TryGetValue(begin, out day_item) && day_item.WorkingHours > 0)
                {
                    WorkingDaysAfter++;
                }
                else
                    break;

            }

            //Debug.Assert(week.WorkingTimeByMonth == SumOfPlannedHoursByMonth);
            //Debug.Assert(week.CountSaturday == (byte)CountSaturday);
            //Debug.Assert(week.CountSunday == (byte)CountSunday);
            //Debug.Assert(week.WorkingDaysBefore == (byte)WorkingDaysBefore);
            //Debug.Assert(week.WorkingDaysAfter == (byte)WorkingDaysAfter);

            week.WorkingTimeByMonth = SumOfPlannedHoursByMonth;
            week.CountSaturday = (byte)CountSaturday;
            week.CountSunday = (byte)CountSunday;

            week.WorkingDaysBefore = (byte)WorkingDaysBefore;
            week.WorkingDaysAfter = (byte)WorkingDaysAfter;
        }
        protected void ProcessWeek(EmployeePlanningDayList planning_days, SrvEmployeeRecordingDayList actual_days, IWorkingModelData week)
        {
            CountSaturday     = 0;
            CountSunday       = 0;
            WorkingDaysBefore = 0;
            WorkingDaysAfter  = 0;

            _days_diction.Clear();

            DateTime endDateSunday = CurrentMonday.AddDays(13);

            if (planning_days != null && planning_days.List != null && planning_days.List.Count > 0)
            {
                for (int i = 0; i < planning_days.List.Count; i++)
                {
                    if (planning_days.List[i].Date <= endDateSunday)
                    {
                        _days_diction[planning_days.List[i].Date] = (IEmployeeDay)planning_days.List[i];
                    }
                }
            }


            if (actual_days != null && actual_days.List != null && actual_days.List.Count > 0)
            {
                for (int i = 0; i < actual_days.List.Count; i++)
                {
                    if (actual_days.List[i].Date <= endDateSunday)
                    {
                        _days_diction[actual_days.List[i].Date] = (IEmployeeDay)actual_days.List[i];
                    }
                }
            }


            int SumOfPlannedHoursByMonth = 0;

            foreach (IEmployeeDay day in _days_diction.Values)
            {
                if (day.Date < CurrentMonday && day.Date.Month == CurrentMonday.Month)
                {
                    SumOfPlannedHoursByMonth += day.AllreadyPlannedHours;

                    if (day.Date.DayOfWeek == DayOfWeek.Saturday && day.WorkingHours > 0)
                    {
                        CountSaturday++;
                    }
                    if (day.Date.DayOfWeek == DayOfWeek.Sunday && day.WorkingHours > 0)
                    {
                        CountSunday++;
                    }
                }
            }
            DateTime     begin;
            IEmployeeDay day_item = null;

            for (int i = 1; i <= 7; i++)
            {
                begin = CurrentMonday.AddDays(-i);
                if (_days_diction.TryGetValue(begin, out day_item) && day_item.WorkingHours > 0)
                {
                    WorkingDaysBefore++;
                }
                else
                {
                    break;
                }
            }
            DateTime sunday = DateTimeHelper.GetSunday(CurrentMonday);

            for (int i = 1; i <= 7; i++)
            {
                begin = sunday.AddDays(i);
                if (_days_diction.TryGetValue(begin, out day_item) && day_item.WorkingHours > 0)
                {
                    WorkingDaysAfter++;
                }
                else
                {
                    break;
                }
            }


            //Debug.Assert(week.WorkingTimeByMonth == SumOfPlannedHoursByMonth);
            //Debug.Assert(week.CountSaturday == (byte)CountSaturday);
            //Debug.Assert(week.CountSunday == (byte)CountSunday);
            //Debug.Assert(week.WorkingDaysBefore == (byte)WorkingDaysBefore);
            //Debug.Assert(week.WorkingDaysAfter == (byte)WorkingDaysAfter);


            week.WorkingTimeByMonth = SumOfPlannedHoursByMonth;
            week.CountSaturday      = (byte)CountSaturday;
            week.CountSunday        = (byte)CountSunday;

            week.WorkingDaysBefore = (byte)WorkingDaysBefore;
            week.WorkingDaysAfter  = (byte)WorkingDaysAfter;
        }