public override void Save()
        {
            if (_employeeweeks != null && _employeeweeks.Count > 0)
            {
                //_weekservice.SaveEmployeeWeeks(_employeeweeks);
                //_dayservice.SaveEmployeeWeeks(_employeeweeks);



                long[] ids = EmployeeWeekProcessor.GetEmployeeIds(_employeeweeks);
                SrvEmployeeWeekRecordingList srv_updater_weeks = new SrvEmployeeWeekRecordingList();
                DateTime nextWeekMonday = DateTimeHelper.GetNextMonday(BeginDate);
                srv_updater_weeks.InitList(ids, BeginDate);
                SrvEmployeesRecordingDayList day_list = new SrvEmployeesRecordingDayList(ids, BeginDate);

                foreach (EmployeeWeek e_w in _employeeweeks)
                {
                    //srv_updater_weeks.UpdateSaldoAfterRecording(e_w.EmployeeId, nextWeekMonday, e_w.Saldo);
                    srv_updater_weeks.UpdateEntityAfterRecording(e_w);
                    foreach (EmployeeDay ed in e_w.DaysList)
                    {
                        day_list.CompareAndSave(ed);
                    }
                }


                EmployeeRecordingWorkingModelHelper wmhelper = new EmployeeRecordingWorkingModelHelper(_timeservice.EmployeeRecordingWorkingModelService);

                wmhelper.SaveEmployeeWorkingModel(_employeeweeks);
            }
        }
        public void ProcessWeeks(List <EmployeePlanningWeek> weeks, long[] ids)
        {
            // 1.need load dayinfo for previous and next weeks
            // 2. load dayinfo from begin of month(month of monday)
            DateTime beginMonth       = new DateTime(CurrentMonday.Year, CurrentMonday.Month, 1);
            DateTime beginMonthMonday = DateTimeHelper.GetMonday(beginMonth);


            DateTime beginPrevWeek = CurrentMonday.AddDays(-7);
            DateTime endNextWeek   = CurrentMonday.AddDays(13);

            DateTime beginDate = (beginMonthMonday < beginPrevWeek) ? beginMonthMonday : beginPrevWeek;

            SrvEmployeesPlanningDayList  cache_planning_days = new SrvEmployeesPlanningDayList(ids, beginDate, endNextWeek);
            SrvEmployeesRecordingDayList cache_actual_days   = new SrvEmployeesRecordingDayList(ids, beginDate, endNextWeek);

            foreach (EmployeePlanningWeek w in weeks)
            {
                ProcessWeek(cache_planning_days.GetList(w.EmployeeId), cache_actual_days.GetList(w.EmployeeId), w);
            }
        }
        public override void Save()
        {
            if (_employeeweeks != null && _employeeweeks.Count > 0)
            {
                //_weekservice.SaveEmployeeWeeks(_employeeweeks);
                //_dayservice.SaveEmployeeWeeks(_employeeweeks);

                long[] ids = EmployeeWeekProcessor.GetEmployeeIds(_employeeweeks);
                SrvEmployeeWeekRecordingList srv_updater_weeks = new SrvEmployeeWeekRecordingList();
                DateTime nextWeekMonday = DateTimeHelper.GetNextMonday (BeginDate );
                srv_updater_weeks.InitList(ids, BeginDate);
                SrvEmployeesRecordingDayList day_list = new SrvEmployeesRecordingDayList(ids, BeginDate);

                foreach (EmployeeWeek e_w in _employeeweeks)
                {
                    //srv_updater_weeks.UpdateSaldoAfterRecording(e_w.EmployeeId, nextWeekMonday, e_w.Saldo);
                    srv_updater_weeks.UpdateEntityAfterRecording(e_w);
                    foreach (EmployeeDay ed in e_w.DaysList)
                        day_list.CompareAndSave(ed);
                }

                EmployeeRecordingWorkingModelHelper wmhelper = new EmployeeRecordingWorkingModelHelper(_timeservice.EmployeeRecordingWorkingModelService);

                wmhelper.SaveEmployeeWorkingModel(_employeeweeks);
            }
        }
        public void ProcessWeeks(List<EmployeePlanningWeek> weeks, long[] ids)
        {
            // 1.need load dayinfo for previous and next weeks
            // 2. load dayinfo from begin of month(month of monday)
            DateTime beginMonth = new DateTime(CurrentMonday.Year, CurrentMonday.Month, 1);
            DateTime beginMonthMonday = DateTimeHelper.GetMonday(beginMonth);

            DateTime beginPrevWeek = CurrentMonday.AddDays(-7);
            DateTime endNextWeek = CurrentMonday.AddDays(13);

            DateTime beginDate = (beginMonthMonday < beginPrevWeek) ? beginMonthMonday : beginPrevWeek;

            SrvEmployeesPlanningDayList cache_planning_days = new SrvEmployeesPlanningDayList(ids, beginDate, endNextWeek);
            SrvEmployeesRecordingDayList cache_actual_days = new SrvEmployeesRecordingDayList(ids, beginDate, endNextWeek);

            foreach (EmployeePlanningWeek w in weeks)
            {
                ProcessWeek(cache_planning_days.GetList(w.EmployeeId), cache_actual_days.GetList(w.EmployeeId), w);
            }
        }