コード例 #1
0
        public static void RecalculateAfterModifiedContractEndDate(long[] emplids)
        {
            ILog Log = LogManager.GetLogger("EmployeeBusinessObject");


            if (emplids == null || emplids.Length == 0)
            {
                Log.Debug("RecalculateAfterModifiedContractEndDate - Count of employees = 0");
                return;
            }

            CacheListEmployeeContracts contracts = new CacheListEmployeeContracts();

            contracts.LoadByEmployees(emplids);

            if (Log.IsDebugEnabled)
            {
                Log.Debug("Load contracts by long[] ids of employees");
            }

            CacheListEmployeeRelations relations = new CacheListEmployeeRelations();

            relations.LoadByEmployees(emplids);

            if (Log.IsDebugEnabled)
            {
                Log.Debug("Load relations by long[] ids of employees");
            }

            #region  debug checking

#if DEBUG
            {
                //for (int i = 0; i < emplids.Length; i++)
                //{
                //    ListEmployeeContracts contract_list1 = contracts[emplids[i]];
                //    ListEmployeeRelations relation_list1 = relations[emplids[i]];


                //    if (contract_list1 == null && relation_list1 == null)
                //    {
                //        Log.Debug("Employee (" + emplids[i].ToString() + ") don't have contract and relation");
                //    }

                //    if (contract_list1 == null)
                //    {
                //        Log.Debug("Employee (" + emplids[i].ToString() + ") don't have contract");
                //    }
                //    if (relation_list1 == null)
                //    {
                //        Log.Debug("Employee (" + emplids[i].ToString() + ") don't have relation");
                //    }

                //    DateTime lastContractDate = contract_list1.GetLastContractDate();

                //    DateTime lastRelationDate = relation_list1.GetLastRelationDate();

                //    if (lastContractDate != lastRelationDate)
                //    {
                //        Log.Debug(String.Format("Employee({0}) has not equal contract and relation end date: {1} and {2}", emplids[i], lastContractDate.ToShortDateString(), lastRelationDate.ToShortDateString()));
                //    }

                //}
            }
#endif
            #endregion


            Dictionary <long, DateTime> setStoreWorlds = new Dictionary <long, DateTime>();
            Dictionary <long, DateTime> setStores      = new Dictionary <long, DateTime>();
            ListEmployeeContracts       contract_list  = null;
            DateTime last_contract_date;

            SrvEmployeeWeekRecordingList recording_weeks = new SrvEmployeeWeekRecordingList();
            recording_weeks.InitList(emplids, DateTimeSql.FirstMinMonday);

            SrvEmployeeWeekPlanningList planning_weeks = new SrvEmployeeWeekPlanningList(emplids, DateTimeSql.FirstMinMonday);


            foreach (long employeeid in emplids)
            {
                Employee employee = ServerEnvironment.EmployeeService.FindById(employeeid);

                if (employee == null)
                {
                    Log.Warn(String.Format("Employee({0}) not found !!!", employeeid));
                    continue;
                }
                setStores[employee.MainStoreID] = DateTime.Today;

                if (Log.IsDebugEnabled)
                {
                    String debugMessage = String.Format(" Process {0}({1}) ( {2} )", employee.FullName, employee.PersID, employee.PersNumber);
                    Log.Debug(debugMessage);
                }

                contract_list = contracts[employeeid];
                if (contract_list == null || contract_list.Count == 0)
                {
                    continue;
                }

                last_contract_date = contract_list.GetLastContractDate();

                last_contract_date = last_contract_date.AddDays(1);

                last_contract_date = last_contract_date.Date;


                EmployeePlanningDayListEx planning_days = new EmployeePlanningDayListEx(employeeid, last_contract_date);
                foreach (EmployeeDayStatePlanning day in planning_days)
                {
                    if (last_contract_date <= day.Date)
                    {
                        if (setStoreWorlds.ContainsKey(day.StoreWorldId))
                        {
                            DateTime date = setStoreWorlds[day.StoreWorldId];

                            if (last_contract_date < date)
                            {
                                setStoreWorlds[day.StoreWorldId] = last_contract_date;
                            }
                        }
                        else
                        {
                            setStoreWorlds[day.StoreWorldId] = last_contract_date;
                        }
                    }
                }
                EmployeeRecordingDayListEx recording_days = new EmployeeRecordingDayListEx(employeeid, last_contract_date, DateTimeSql.SmallDatetimeMax);
                foreach (EmployeeDayStateRecording day in recording_days)
                {
                    if (last_contract_date <= day.Date)
                    {
                        if (setStoreWorlds.ContainsKey(day.StoreWorldId))
                        {
                            DateTime date = setStoreWorlds[day.StoreWorldId];

                            if (last_contract_date < date)
                            {
                                setStoreWorlds[day.StoreWorldId] = last_contract_date;
                            }
                        }
                        else
                        {
                            setStoreWorlds[day.StoreWorldId] = last_contract_date;
                        }
                    }
                }
                recording_weeks.ValidateWeekWithContractEnd(employeeid, last_contract_date);
                planning_weeks.ValidateWeekWithContractEnd(employeeid, last_contract_date);

                if (recording_days.Count > 0)
                {
                    recording_days.RemoveFromDatabase(last_contract_date, DateTimeSql.SmallDatetimeMax);
                }
                if (planning_days.Count > 0)
                {
                    planning_days.RemoveFromDatabase(last_contract_date, DateTimeSql.SmallDatetimeMax);
                }

                ClearEmployeeTimes(employeeid, last_contract_date, DateTimeSql.SmallDatetimeMax);

                if (last_contract_date.DayOfWeek != DayOfWeek.Monday)
                {
                    DateTime monday = DateTimeHelper.GetMonday(last_contract_date);
                    DateTime sunday = DateTimeHelper.GetSunday(monday);
                    planning_days = new EmployeePlanningDayListEx(employeeid, monday, sunday);

                    EmployeeWeekTimePlanning week_planning =
                        planning_weeks.GetByDate(employeeid, monday);

                    if (week_planning != null)
                    {
                        week_planning.PlannedHours     = 0;
                        week_planning.WorkingHours     = 0;
                        week_planning.AdditionalCharge = 0;
                        int prevSaldo = week_planning.GetPrevSaldo();
                        foreach (EmployeeDayStatePlanning e in planning_days)
                        {
                            week_planning.PlannedHours     += e.AllreadyPlannedHours;
                            week_planning.WorkingHours     += e.WorkingHours;
                            week_planning.AdditionalCharge += e.SumOfAddHours;
                        }
                        week_planning.CalculateSaldo(prevSaldo);
                        ServerEnvironment.EmployeeWeekTimePlanningService.Update(week_planning);
                    }
                    recording_days = new EmployeeRecordingDayListEx(employeeid, monday, sunday);

                    EmployeeWeekTimeRecording week_recording =
                        recording_weeks.GetByDate(employeeid, monday);

                    if (week_recording != null)
                    {
                        week_recording.PlannedHours     = 0;
                        week_recording.WorkingHours     = 0;
                        week_recording.AdditionalCharge = 0;
                        int prevSaldo = week_recording.GetPrevSaldo();
                        foreach (EmployeeDayStateRecording e in recording_days)
                        {
                            week_recording.PlannedHours     += e.AllreadyPlannedHours;
                            week_recording.WorkingHours     += e.WorkingHours;
                            week_recording.AdditionalCharge += e.SumOfAddHours;
                        }
                        week_recording.CalculateSaldo(prevSaldo);
                        ServerEnvironment.EmployeeWeekTimeRecordingService.Update(week_recording);
                    }
                }
            }
            List <StoreToWorld>             lst = ServerEnvironment.StoreToWorldService.FindAll();
            Dictionary <long, StoreToWorld> dc  = new Dictionary <long, StoreToWorld>();
            if (lst != null)
            {
                foreach (StoreToWorld sw in lst)
                {
                    dc[sw.ID] = sw;
                }
            }
            //setStores.Clear();
            StoreToWorld sw1 = null;
            foreach (long swid in setStoreWorlds.Keys)
            {
                if (dc.TryGetValue(swid, out sw1))
                {
                    setStores[sw1.StoreID] = DateTime.Today;
                }
            }

            foreach (long storeid in setStores.Keys)
            {
                StoreBufferHoursAvailableManager.UpdateWholeYear(storeid, 2008);
            }
        }
コード例 #2
0
        public static void RecalculateAfterModifiedContractEndDate(long[] emplids)
        {
            ILog Log = LogManager.GetLogger("EmployeeBusinessObject");

            if (emplids == null || emplids.Length == 0)
            {
                Log.Debug("RecalculateAfterModifiedContractEndDate - Count of employees = 0");
                return;
            }

            CacheListEmployeeContracts contracts = new CacheListEmployeeContracts();
            contracts.LoadByEmployees(emplids);

            if (Log.IsDebugEnabled)
                Log.Debug("Load contracts by long[] ids of employees");

            CacheListEmployeeRelations relations = new CacheListEmployeeRelations();
            relations.LoadByEmployees(emplids);

            if (Log.IsDebugEnabled)
                Log.Debug("Load relations by long[] ids of employees");

            #region  debug checking

            #if DEBUG
            {
                //for (int i = 0; i < emplids.Length; i++)
                //{
                //    ListEmployeeContracts contract_list1 = contracts[emplids[i]];
                //    ListEmployeeRelations relation_list1 = relations[emplids[i]];

                //    if (contract_list1 == null && relation_list1 == null)
                //    {
                //        Log.Debug("Employee (" + emplids[i].ToString() + ") don't have contract and relation");
                //    }

                //    if (contract_list1 == null)
                //    {
                //        Log.Debug("Employee (" + emplids[i].ToString() + ") don't have contract");
                //    }
                //    if (relation_list1 == null)
                //    {
                //        Log.Debug("Employee (" + emplids[i].ToString() + ") don't have relation");
                //    }

                //    DateTime lastContractDate = contract_list1.GetLastContractDate();

                //    DateTime lastRelationDate = relation_list1.GetLastRelationDate();

                //    if (lastContractDate != lastRelationDate)
                //    {
                //        Log.Debug(String.Format("Employee({0}) has not equal contract and relation end date: {1} and {2}", emplids[i], lastContractDate.ToShortDateString(), lastRelationDate.ToShortDateString()));
                //    }

                //}
            }
            #endif
            #endregion

            Dictionary<long, DateTime> setStoreWorlds = new Dictionary<long, DateTime>();
            Dictionary<long, DateTime> setStores = new Dictionary<long, DateTime>();
            ListEmployeeContracts contract_list = null;
            DateTime last_contract_date;

            SrvEmployeeWeekRecordingList recording_weeks = new SrvEmployeeWeekRecordingList();
            recording_weeks.InitList(emplids, DateTimeSql.FirstMinMonday);

            SrvEmployeeWeekPlanningList planning_weeks = new SrvEmployeeWeekPlanningList(emplids, DateTimeSql.FirstMinMonday);

            foreach (long employeeid in emplids)
            {
                Employee employee = ServerEnvironment.EmployeeService.FindById(employeeid);

                if (employee == null)
                {
                    Log.Warn(String.Format("Employee({0}) not found !!!", employeeid));
                    continue;
                }
                setStores[employee.MainStoreID] = DateTime.Today;

                if (Log.IsDebugEnabled)
                {
                    String debugMessage = String.Format(" Process {0}({1}) ( {2} )", employee.FullName, employee.PersID, employee.PersNumber);
                    Log.Debug(debugMessage);
                }

                contract_list = contracts[employeeid];
                if (contract_list == null || contract_list.Count == 0)
                {
                    continue;
                }

                last_contract_date = contract_list.GetLastContractDate();

                last_contract_date = last_contract_date.AddDays(1);

                last_contract_date = last_contract_date.Date;

                EmployeePlanningDayListEx planning_days = new EmployeePlanningDayListEx(employeeid, last_contract_date);
                foreach (EmployeeDayStatePlanning day in planning_days)
                {
                    if (last_contract_date <= day.Date)
                    {
                        if (setStoreWorlds.ContainsKey(day.StoreWorldId))
                        {
                            DateTime date = setStoreWorlds[day.StoreWorldId];

                            if (last_contract_date < date)
                                setStoreWorlds[day.StoreWorldId] = last_contract_date;
                        }
                        else
                            setStoreWorlds[day.StoreWorldId] = last_contract_date;
                    }
                }
                EmployeeRecordingDayListEx recording_days = new EmployeeRecordingDayListEx(employeeid, last_contract_date, DateTimeSql.SmallDatetimeMax);
                foreach (EmployeeDayStateRecording day in recording_days)
                {
                    if (last_contract_date <= day.Date)
                    {
                        if (setStoreWorlds.ContainsKey(day.StoreWorldId))
                        {
                            DateTime date = setStoreWorlds[day.StoreWorldId];

                            if (last_contract_date < date)
                                setStoreWorlds[day.StoreWorldId] = last_contract_date;
                        }
                        else
                            setStoreWorlds[day.StoreWorldId] = last_contract_date;
                    }
                }
                recording_weeks.ValidateWeekWithContractEnd(employeeid, last_contract_date);
                planning_weeks.ValidateWeekWithContractEnd(employeeid, last_contract_date);

                if (recording_days.Count > 0)
                {
                    recording_days.RemoveFromDatabase(last_contract_date, DateTimeSql.SmallDatetimeMax);
                }
                if (planning_days.Count > 0)
                {
                    planning_days.RemoveFromDatabase(last_contract_date, DateTimeSql.SmallDatetimeMax);
                }

                ClearEmployeeTimes(employeeid, last_contract_date, DateTimeSql.SmallDatetimeMax);

                if (last_contract_date.DayOfWeek != DayOfWeek.Monday)
                {
                    DateTime monday = DateTimeHelper.GetMonday (last_contract_date);
                    DateTime sunday = DateTimeHelper.GetSunday(monday);
                    planning_days = new EmployeePlanningDayListEx(employeeid, monday, sunday);

                    EmployeeWeekTimePlanning week_planning =
                        planning_weeks.GetByDate(employeeid, monday);

                    if (week_planning != null)
                    {
                        week_planning.PlannedHours = 0;
                        week_planning.WorkingHours = 0;
                        week_planning.AdditionalCharge = 0;
                        int prevSaldo = week_planning.GetPrevSaldo();
                        foreach (EmployeeDayStatePlanning e in planning_days)
                        {
                            week_planning.PlannedHours += e.AllreadyPlannedHours;
                            week_planning.WorkingHours += e.WorkingHours;
                            week_planning.AdditionalCharge += e.SumOfAddHours;

                        }
                        week_planning.CalculateSaldo(prevSaldo);
                        ServerEnvironment.EmployeeWeekTimePlanningService.Update(week_planning);
                    }
                    recording_days = new EmployeeRecordingDayListEx(employeeid, monday, sunday);

                    EmployeeWeekTimeRecording week_recording =
                        recording_weeks.GetByDate(employeeid, monday);

                    if (week_recording != null)
                    {
                        week_recording.PlannedHours = 0;
                        week_recording.WorkingHours = 0;
                        week_recording.AdditionalCharge = 0;
                        int prevSaldo = week_recording.GetPrevSaldo();
                        foreach (EmployeeDayStateRecording e in recording_days)
                        {
                            week_recording.PlannedHours += e.AllreadyPlannedHours;
                            week_recording.WorkingHours += e.WorkingHours;
                            week_recording.AdditionalCharge += e.SumOfAddHours;

                        }
                        week_recording.CalculateSaldo(prevSaldo);
                        ServerEnvironment.EmployeeWeekTimeRecordingService.Update(week_recording);
                    }
                }
            }
            List<StoreToWorld> lst = ServerEnvironment.StoreToWorldService.FindAll();
            Dictionary<long, StoreToWorld> dc = new Dictionary<long, StoreToWorld>();
            if (lst != null)
            {
                foreach (StoreToWorld sw in lst)
                {
                    dc[sw.ID] = sw;
                }
            }
            //setStores.Clear();
            StoreToWorld sw1 = null;
            foreach (long swid in setStoreWorlds.Keys)
            {

                if (dc.TryGetValue (swid, out sw1))
                {
                    setStores[sw1.StoreID] = DateTime.Today;
                }
            }

            foreach (long storeid in setStores.Keys)
            {
                StoreBufferHoursAvailableManager.UpdateWholeYear(storeid, 2008);
            }
        }
コード例 #3
0
        //public int GetMonthWorkingTime2(long employeeid)
        //{
        //    CountSaturday = 0;
        //    CountSunday = 0;
        //    _beginMonth = new DateTime(CurrentMonday.Year, CurrentMonday.Month, 1);
        //    _beginMonthMonday = DateTimeHelper.GetMonday(_beginMonth);
        //    DateTime endDateSunday = CurrentMonday.AddDays(-1);
        //    #region Load data
        //    _planningWeek.Clear();
        //    if (IsPlanning)
        //    {
        //        EmployeeWeekTimePlanningService weekplanningservice = _timeservice.EmployeeWeekTimePlanningService as EmployeeWeekTimePlanningService;
        //        List<EmployeeWeekTimePlanning> lstPlanning =
        //            weekplanningservice.GetEmployeesWeekStateByDateRange(new long[] { employeeid }, _beginMonthMonday, endDateSunday);
        //        if (lstPlanning != null && lstPlanning.Count > 0)
        //        {
        //            for (int i = 0; i < lstPlanning.Count; i++)
        //            {
        //                _planningWeek[lstPlanning[i].WeekBegin] = lstPlanning[i];
        //            }
        //        }
        //    }
        //    EmployeeWeekTimeRecordingService rec_service = _timeservice.EmployeeWeekTimeRecordingService as EmployeeWeekTimeRecordingService;
        //    List<EmployeeWeekTimeRecording> lstRecord =
        //        rec_service.GetEmployeesWeekStateByDateRange(new long[] { employeeid }, _beginMonthMonday, endDateSunday);
        //    _recordingWeek.Clear();
        //    if (lstRecord != null && lstRecord.Count > 0)
        //    {
        //        for (int i = 0; i < lstRecord.Count; i++)
        //        {
        //            _recordingWeek[lstRecord[i].WeekBegin] = lstRecord[i];
        //        }
        //    }
        //    _planningDay.Clear();
        //    if (IsPlanning)
        //    {
        //        EmployeeDayStatePlanningService plan_dayservice = _timeservice.EmployeeDayStatePlanningService as EmployeeDayStatePlanningService;
        //        List<EmployeeDayStatePlanning> lstDayPlanning = plan_dayservice.GetEmployeeStates(employeeid, _beginMonth, endDateSunday);
        //        if (lstDayPlanning != null && lstDayPlanning.Count > 0)
        //        {
        //            for (int i = 0; i < lstDayPlanning.Count; i++)
        //            {
        //                _planningDay[lstDayPlanning[i].Date] = lstDayPlanning[i];
        //            }
        //        }
        //    }
        //    EmployeeDayStateRecordingService rec_dayservice = _timeservice.EmployeeDayStateRecordingService as EmployeeDayStateRecordingService;
        //    List<EmployeeDayStateRecording> lstDayRecord = rec_dayservice.GetEmployeeStates(employeeid, _beginMonth, endDateSunday);
        //    _recordingDay.Clear();
        //    if (lstDayRecord != null && lstDayRecord.Count > 0)
        //    {
        //        for (int i = 0; i < lstDayRecord.Count; i++)
        //        {
        //            _recordingDay[lstDayRecord[i].Date] = lstDayRecord[i];
        //        }
        //    }
        //    #endregion
        //    DateTime day = _beginMonthMonday;
        //    int resultValue = 0;
        //    DateTime begin;
        //    while (day < CurrentMonday)
        //    {
        //        if (_recordingWeek.ContainsKey(day))
        //        {
        //            //EmployeeWeekTimeRecording week = _recordingWeek[day];
        //            for (int i = 0; i < 7; i++)
        //            {
        //                begin = day.AddDays(i);
        //                if (_recordingDay.ContainsKey(begin))
        //                {
        //                    EmployeeDayStateRecording daystate = _recordingDay[begin];
        //                    if (begin.Month == CurrentMonday.Month)
        //                    {
        //                        resultValue += daystate.AllreadyPlannedHours;
        //                        if (begin.DayOfWeek == DayOfWeek.Saturday)
        //                        {
        //                            if (daystate.WorkingHours > 0)
        //                                CountSaturday++;
        //                        }
        //                        if (begin.DayOfWeek == DayOfWeek.Sunday )
        //                        {
        //                            if (daystate.WorkingHours > 0)
        //                                CountSunday++;
        //                        }
        //                    }
        //                }
        //            }
        //        }
        //        else if (_planningWeek.ContainsKey(day))
        //        {
        //            //EmployeeWeekTimePlanning week = _planningWeek[day];
        //            for (int i = 0; i < 7; i++)
        //            {
        //                begin = day.AddDays(i);
        //                if (_planningDay.ContainsKey(begin))
        //                {
        //                    EmployeeDayStatePlanning daystate = _planningDay[begin];
        //                    if (begin.Month == CurrentMonday.Month)
        //                        resultValue += daystate.AllreadyPlannedHours;
        //                    if (begin.DayOfWeek == DayOfWeek.Saturday)
        //                    {
        //                        if (daystate.WorkingHours > 0)
        //                            CountSaturday++;
        //                    }
        //                    if (begin.DayOfWeek == DayOfWeek.Sunday)
        //                    {
        //                        if (daystate.WorkingHours > 0)
        //                            CountSunday++;
        //                    }
        //                }
        //            }
        //        }
        //        day = day.AddDays(7);
        //    }
        //    begin = CurrentMonday.AddDays(-7);
        //    if (_recordingWeek.ContainsKey(begin))
        //    {
        //        EmployeeDayStateRecording daystate = null;
        //        for (int i = 1; i >= 7; i++)
        //        {
        //            begin = CurrentMonday.AddDays(-i);
        //            if (_recordingDay.TryGetValue(begin, out daystate) && daystate.WorkingHours > 0)
        //            {
        //                WorkingDaysBefore++;
        //            }
        //            else
        //                break;
        //        }
        //    }
        //    else if (_planningWeek.ContainsKey(begin))
        //    {
        //        EmployeeDayStatePlanning daystate = null;
        //        for (int i = 1; i >= 7; i++)
        //        {
        //            begin = CurrentMonday.AddDays(-i);
        //            if (_planningDay.TryGetValue(begin, out daystate) && daystate.WorkingHours > 0)
        //            {
        //                    WorkingDaysBefore++;
        //            }
        //            else
        //                break;
        //        }
        //    }
        //    return resultValue;
        //}
        public int GetMonthWorkingTime(long employeeid)
        {
            CountSaturday = 0;
            CountSunday = 0;
            WorkingDaysBefore = 0;
            WorkingDaysAfter = 0;

            _beginMonth = new DateTime(CurrentMonday.Year, CurrentMonday.Month, 1);
            _beginMonthMonday = DateTimeHelper.GetMonday(_beginMonth);
            DateTime endDateSunday = CurrentMonday.AddDays(13); // next week sunday = 7+6
            if (_beginMonthMonday > CurrentMonday.AddDays(-7))
                _beginMonthMonday = CurrentMonday.AddDays(-7);

            int resultValue = 0;
            #region Load data

            _days_diction.Clear();
            //if (IsPlanning)
            //{

            EmployeePlanningDayListEx lst_planning = new EmployeePlanningDayListEx(employeeid, _beginMonthMonday, endDateSunday);

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

            EmployeeRecordingDayListEx lstDayRecord = new EmployeeRecordingDayListEx(employeeid, _beginMonthMonday, endDateSunday);

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

            #endregion

            foreach (IEmployeeDay day in _days_diction.Values)
            {
                if (day.Date < CurrentMonday && day.Date.Month == CurrentMonday.Month)
                {
                    resultValue += 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;

            }
            return resultValue;
        }
コード例 #4
0
        //public int GetMonthWorkingTime2(long employeeid)
        //{
        //    CountSaturday = 0;
        //    CountSunday = 0;
        //    _beginMonth = new DateTime(CurrentMonday.Year, CurrentMonday.Month, 1);
        //    _beginMonthMonday = DateTimeHelper.GetMonday(_beginMonth);
        //    DateTime endDateSunday = CurrentMonday.AddDays(-1);


        //    #region Load data



        //    _planningWeek.Clear();
        //    if (IsPlanning)
        //    {
        //        EmployeeWeekTimePlanningService weekplanningservice = _timeservice.EmployeeWeekTimePlanningService as EmployeeWeekTimePlanningService;

        //        List<EmployeeWeekTimePlanning> lstPlanning =
        //            weekplanningservice.GetEmployeesWeekStateByDateRange(new long[] { employeeid }, _beginMonthMonday, endDateSunday);


        //        if (lstPlanning != null && lstPlanning.Count > 0)
        //        {
        //            for (int i = 0; i < lstPlanning.Count; i++)
        //            {
        //                _planningWeek[lstPlanning[i].WeekBegin] = lstPlanning[i];
        //            }
        //        }
        //    }
        //    EmployeeWeekTimeRecordingService rec_service = _timeservice.EmployeeWeekTimeRecordingService as EmployeeWeekTimeRecordingService;

        //    List<EmployeeWeekTimeRecording> lstRecord =
        //        rec_service.GetEmployeesWeekStateByDateRange(new long[] { employeeid }, _beginMonthMonday, endDateSunday);

        //    _recordingWeek.Clear();
        //    if (lstRecord != null && lstRecord.Count > 0)
        //    {
        //        for (int i = 0; i < lstRecord.Count; i++)
        //        {
        //            _recordingWeek[lstRecord[i].WeekBegin] = lstRecord[i];
        //        }
        //    }



        //    _planningDay.Clear();
        //    if (IsPlanning)
        //    {
        //        EmployeeDayStatePlanningService plan_dayservice = _timeservice.EmployeeDayStatePlanningService as EmployeeDayStatePlanningService;

        //        List<EmployeeDayStatePlanning> lstDayPlanning = plan_dayservice.GetEmployeeStates(employeeid, _beginMonth, endDateSunday);


        //        if (lstDayPlanning != null && lstDayPlanning.Count > 0)
        //        {
        //            for (int i = 0; i < lstDayPlanning.Count; i++)
        //            {
        //                _planningDay[lstDayPlanning[i].Date] = lstDayPlanning[i];
        //            }
        //        }
        //    }

        //    EmployeeDayStateRecordingService rec_dayservice = _timeservice.EmployeeDayStateRecordingService as EmployeeDayStateRecordingService;

        //    List<EmployeeDayStateRecording> lstDayRecord = rec_dayservice.GetEmployeeStates(employeeid, _beginMonth, endDateSunday);

        //    _recordingDay.Clear();
        //    if (lstDayRecord != null && lstDayRecord.Count > 0)
        //    {
        //        for (int i = 0; i < lstDayRecord.Count; i++)
        //        {
        //            _recordingDay[lstDayRecord[i].Date] = lstDayRecord[i];
        //        }
        //    }

        //    #endregion

        //    DateTime day = _beginMonthMonday;
        //    int resultValue = 0;


        //    DateTime begin;
        //    while (day < CurrentMonday)
        //    {
        //        if (_recordingWeek.ContainsKey(day))
        //        {
        //            //EmployeeWeekTimeRecording week = _recordingWeek[day];
        //            for (int i = 0; i < 7; i++)
        //            {
        //                begin = day.AddDays(i);
        //                if (_recordingDay.ContainsKey(begin))
        //                {
        //                    EmployeeDayStateRecording daystate = _recordingDay[begin];
        //                    if (begin.Month == CurrentMonday.Month)
        //                    {
        //                        resultValue += daystate.AllreadyPlannedHours;
        //                        if (begin.DayOfWeek == DayOfWeek.Saturday)
        //                        {
        //                            if (daystate.WorkingHours > 0)
        //                                CountSaturday++;
        //                        }
        //                        if (begin.DayOfWeek == DayOfWeek.Sunday )
        //                        {
        //                            if (daystate.WorkingHours > 0)
        //                                CountSunday++;
        //                        }

        //                    }
        //                }
        //            }

        //        }
        //        else if (_planningWeek.ContainsKey(day))
        //        {
        //            //EmployeeWeekTimePlanning week = _planningWeek[day];
        //            for (int i = 0; i < 7; i++)
        //            {
        //                begin = day.AddDays(i);
        //                if (_planningDay.ContainsKey(begin))
        //                {
        //                    EmployeeDayStatePlanning daystate = _planningDay[begin];
        //                    if (begin.Month == CurrentMonday.Month)
        //                        resultValue += daystate.AllreadyPlannedHours;
        //                    if (begin.DayOfWeek == DayOfWeek.Saturday)
        //                    {
        //                        if (daystate.WorkingHours > 0)
        //                            CountSaturday++;
        //                    }
        //                    if (begin.DayOfWeek == DayOfWeek.Sunday)
        //                    {
        //                        if (daystate.WorkingHours > 0)
        //                            CountSunday++;
        //                    }
        //                }
        //            }
        //        }


        //        day = day.AddDays(7);
        //    }


        //    begin = CurrentMonday.AddDays(-7);
        //    if (_recordingWeek.ContainsKey(begin))
        //    {
        //        EmployeeDayStateRecording daystate = null;
        //        for (int i = 1; i >= 7; i++)
        //        {
        //            begin = CurrentMonday.AddDays(-i);
        //            if (_recordingDay.TryGetValue(begin, out daystate) && daystate.WorkingHours > 0)
        //            {
        //                WorkingDaysBefore++;
        //            }
        //            else
        //                break;

        //        }
        //    }
        //    else if (_planningWeek.ContainsKey(begin))
        //    {
        //        EmployeeDayStatePlanning daystate = null;
        //        for (int i = 1; i >= 7; i++)
        //        {
        //            begin = CurrentMonday.AddDays(-i);

        //            if (_planningDay.TryGetValue(begin, out daystate) && daystate.WorkingHours > 0)
        //            {
        //                    WorkingDaysBefore++;
        //            }
        //            else
        //                break;
        //        }
        //    }
        //    return resultValue;
        //}


        public int GetMonthWorkingTime(long employeeid)
        {
            CountSaturday     = 0;
            CountSunday       = 0;
            WorkingDaysBefore = 0;
            WorkingDaysAfter  = 0;

            _beginMonth       = new DateTime(CurrentMonday.Year, CurrentMonday.Month, 1);
            _beginMonthMonday = DateTimeHelper.GetMonday(_beginMonth);
            DateTime endDateSunday = CurrentMonday.AddDays(13); // next week sunday = 7+6

            if (_beginMonthMonday > CurrentMonday.AddDays(-7))
            {
                _beginMonthMonday = CurrentMonday.AddDays(-7);
            }

            int resultValue = 0;

            #region Load data

            _days_diction.Clear();
            //if (IsPlanning)
            //{

            EmployeePlanningDayListEx lst_planning = new EmployeePlanningDayListEx(employeeid, _beginMonthMonday, endDateSunday);

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

            EmployeeRecordingDayListEx lstDayRecord = new EmployeeRecordingDayListEx(employeeid, _beginMonthMonday, endDateSunday);


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

            #endregion

            foreach (IEmployeeDay day in _days_diction.Values)
            {
                if (day.Date < CurrentMonday && day.Date.Month == CurrentMonday.Month)
                {
                    resultValue += 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;
                }
            }
            return(resultValue);
        }