public void SaveEmployeeWorkingModel2(List<EmployeePlanningWeek> lstWeeks)
        {
            if (lstWeeks == null || lstWeeks.Count == 0) return;
            List<EmployeePlanningWorkingModel> lstEntities = new List<EmployeePlanningWorkingModel>(lstWeeks.Count*10);
            
            long[] ids = new long[lstWeeks.Count];
            int index = 0;
            DateTime begin, end;

            begin = lstWeeks[0].BeginDate;
            end = lstWeeks[0].EndDate;

            foreach (EmployeePlanningWeek week in lstWeeks)
            {
                ids[index++] = week.EmployeeId;

                List<EmployeePlanningWorkingModel> lst = PlanningWeekProcessor.GetWorkingModels(week);
                if (lst != null && lst.Count > 0)
                    lstEntities.AddRange(lst);


                
            }
            //SaveEmployeesWorkingModel(ids, lstEntities, begin,end);

        }
Example #2
0
        public void BuildNewWeekWorldPlanningList()
        {
            _dictionStoreWorldStates.Clear();

            if (ListStoreWorlds != null)
            {
                List <EmployeePlanningWeek> lst   = null;
                StoreWorldWeekPlanningState state = null;

                foreach (StoreToWorld stw in ListStoreWorlds)
                {
                    lst = PlanningWeekProcessor.GetEmployeesByWorld(stw.ID, PlanningEmployees);

                    state          = new StoreWorldWeekPlanningState(stw.ID, BeginTime, EndTime);
                    state.IContext = this;
                    if (lst != null)
                    {
                        state.List.AddRange(lst);
                    }
                    _dictionStoreWorldStates[stw.WorldID] = state;

                    WorldPlanningInfo infoworld =
                        ClientEnvironment.StoreService.StoreToWorldService.GetStoreWorldPlanningInfo(true, CurrentStoreId, stw.WorldID, BeginTime);

                    state.StoreWorldInfo = infoworld;
                }
            }
        }
Example #3
0
        public void SavePlanning2(long storeid, DateTime aBegin, DateTime aEnd, List <EmployeePlanningWeek> lstWeeks)
        {
            #region validate date
            Debug.Assert(aBegin < aEnd);
            Debug.Assert(aBegin.DayOfWeek == DayOfWeek.Monday);
            Debug.Assert(aEnd.DayOfWeek == DayOfWeek.Sunday);

            if (aEnd < DateTime.Today)
            {
                if (Log.IsWarnEnabled)
                {
                    User   user     = ServerEnvironment.AuthorizationService.GetCurrentUser();
                    string username = String.Empty;
                    if (user != null)
                    {
                        username = user.LoginName;
                    }

                    Log.Warn(string.Format("User - '{0}', try save planning date in date({1}) with input data {2}-{3} storeid={4}",
                                           new object[] { username, DateTime.Today, aBegin, aEnd, storeid }));
                }
                return;
            }
            #endregion

            try
            {
                HolidayCalculator calculatorHolidays = new HolidayCalculator();
                calculatorHolidays.Calculate(storeid, aBegin, lstWeeks);


                WorkingTimePlanningService.SetWeekTimePlanning(lstWeeks);
                AbsenceTimePlanningService.SetWeekTimePlanning(lstWeeks);


                StoreWeekCalculater calculator = new StoreWeekCalculater(storeid, aBegin, aEnd, this);

                calculator.Process();


                if (lstWeeks != null)
                {
                    long[] ids = PlanningWeekProcessor.ListToEmployeeIds(lstWeeks);

                    ExEmployeeHolidays.CalculateAndUpdate(ids, DateTimeHelper.GetYearByDate(aBegin));
                }

                _storeService.LastEmployeeWeekTimePlanningUpdate(storeid, aBegin);
            }
            catch (EntityException)
            {
                throw;
            }
            catch (Exception ex)
            {
                CheckForDBValidationException(null, ex);
                throw new SaveException(ex);
            }
        }
        private void LoadWorkingAndAbsencesHours()
        {
            long[] ids = PlanningWeekProcessor.ListToEmployeeIds(_storeEmployees);

            List <WorkingTimePlanning> _workingTimes = ClientEnvironment.WorkingTimePlanningService.GetWorkingTimePlanningsByEmployeeIds(ids, StartDate, EndDate);
            List <AbsenceTimePlanning> _absenceTimes = ClientEnvironment.AbsenceTimePlanningService.GetAbsenceTimePlanningsByEmployeeIds(ids, StartDate, EndDate);

            Absences.FillAbsencePlanningTimes(_absenceTimes);

            PlanningWeekProcessor.AssignTimes(_storeEmployees, _workingTimes, _absenceTimes);
        }
        public StoreWorldWeekPlanningState GetWorldPlanningState(long worldID)
        {
            StoreWorldWeekPlanningState result = new StoreWorldWeekPlanningState(worldID, StartDate, EndDate);

            result.IContext = this;

            List <EmployeePlanningWeek> worldEmployees = PlanningWeekProcessor.GetEmployeesByWorld(worldID, _storeEmployees);

            if (worldEmployees != null)
            {
                result.List.AddRange(worldEmployees);
            }

            return(result);
        }
Example #6
0
        private void LoadWorkingAndAbsenceTimes()
        {
            long[] ids = PlanningWeekProcessor.ListToEmployeeIds(PlanningEmployees);

            List <WorkingTimePlanning> _workingTimes = ClientEnvironment.WorkingTimePlanningService.GetWorkingTimePlanningsByEmployeeIds(ids, BeginTime, EndTime);
            //List<WorkingTimePlanning> _workingTimes1 = ClientEnvironment.WorkingTimePlanningService.GetEntitiesByStoreRelations(CurrentStoreId, BeginTime, EndTime);

            List <AbsenceTimePlanning> _absenceTimes = ClientEnvironment.AbsenceTimePlanningService.GetAbsenceTimePlanningsByEmployeeIds(ids, BeginTime, EndTime);

            //List<AbsenceTimePlanning> _absenceTimes = ClientEnvironment.AbsenceTimePlanningService.GetEntitiesByStoreRelations(CurrentStoreId, BeginTime, EndTime);

            if (Absences != null)
            {
                Absences.FillAbsencePlanningTimes(_absenceTimes);
            }

            PlanningWeekProcessor.AssignTimes(PlanningEmployees, _workingTimes, _absenceTimes);
        }
Example #7
0
        public void SavePlanningWeek(List <EmployeePlanningWeek> weeks)
        {
            if (weeks == null || weeks.Count == 0)
            {
                return;
            }

            long[] ids = PlanningWeekProcessor.ListToEmployeeIds(weeks);
            List <WorkingTimePlanning> list_old = Service.GetWorkingTimePlanningsByEmployeeIds(ids, weeks[0].BeginDate, weeks[0].EndDate);

            List <WorkingTimePlanning> list_new = new List <WorkingTimePlanning>(100);

            foreach (EmployeePlanningWeek week in weeks)
            {
                foreach (EmployeePlanningDay day in week.Days.Values)
                {
                    if (day.WorkingTimeList != null)
                    {
                        list_new.AddRange(day.WorkingTimeList);
                    }
                }
            }

            if (list_new.Count > 0)
            {
                bool bFound = false;
                foreach (WorkingTimePlanning entity in list_new)
                {
                    bFound = false;
                    if (list_old != null && list_old.Count > 0)
                    {
                        for (int i = 0; i < list_old.Count; i++)
                        {
                            if (list_old[i] != null && list_old[i].Compare(entity))
                            {
                                entity.ID   = list_old[i].ID;
                                bFound      = true;
                                list_old[i] = null;
                                break;
                            }
                        }
                    }

                    if (!bFound)
                    {
                        Service.Save(entity);
                    }
                }
            }

            if (list_old != null)
            {
                foreach (WorkingTimePlanning entity in list_old)
                {
                    if (entity != null)
                    {
                        Service.Delete(entity);
                    }
                }
            }
        }
        public void SaveEmployeeWorkingModel(EmployeePlanningWeek week)
        {
            List<EmployeePlanningWorkingModel> lst = PlanningWeekProcessor.GetWorkingModels(week);

            SaveEmployeeWorkingModel(week.EmployeeId, lst, week.BeginDate, week.EndDate);
        }
Example #9
0
        public override void FillPlanningLastSaldo(Dictionary <long, EmployeePlanningWeek> dict, long[] ids, DateTime aBeginWeek)
        {
            DateTime todayMonday = DateTimeHelper.GetMonday(DateTime.Today);

            Debug.Assert(aBeginWeek.DayOfWeek == DayOfWeek.Monday);

            DateTime currentMonday = aBeginWeek;

            bool bPastWeek    = todayMonday > currentMonday;
            bool bFutureWeek  = todayMonday < currentMonday;
            bool bCurrentWeek = todayMonday == currentMonday;

            if (bCurrentWeek)
            {
                return;
            }
            if (bFutureWeek)
            {
                SrvEmployeeWeekPlanningList cache_weeks = new SrvEmployeeWeekPlanningList(ids, todayMonday);

                foreach (EmployeePlanningWeek week in dict.Values)
                {
                    List <EmployeeWeekTimePlanning> list_weeks =
                        cache_weeks.GetEntitiesByEmployeeId(week.EmployeeId);
                    DateTime minDate = todayMonday;
                    EmployeeWeekTimePlanning prevWeekEntity = null;
                    if (list_weeks != null && list_weeks.Count > 0)
                    {
                        foreach (EmployeeWeekTimePlanning entity in list_weeks)
                        {
                            if (entity.WeekBegin < currentMonday && minDate <= entity.WeekBegin)
                            {
                                prevWeekEntity = entity;
                                minDate        = prevWeekEntity.WeekBegin;
                            }
                        }
                    }
                    if (prevWeekEntity != null)
                    {
                        Debug.Assert(prevWeekEntity.WeekBegin < currentMonday);
                        week.LastSaldo = prevWeekEntity.Saldo;
                    }
                }

                return;
            }

            if (bPastWeek)
            {
                foreach (EmployeePlanningWeek week in dict.Values)
                {
                    if (week.IsNew)
                    {
                        week.LastSaldo = 0;
                    }
                    else
                    {
                        week.LastSaldo = PlanningWeekProcessor.GetLastSaldoFromSaldo(week);
                    }
                }
            }
        }