Example #1
0
 public ShiftImportPresenter(IShiftDispatcherModel shiftDispatcherModel, ICalendarEventModel calendarEventModel, IOpenFileService openFileService)
 {
     _shiftDispatcherModel    = shiftDispatcherModel;
     _calendarEventModel      = calendarEventModel;
     _openFileService         = openFileService;
     _bindableAgents          = new List <IEnumerable>();
     _openFileService.Filter  = "Excel File|*.xls";
     _assignmentCellConverter = new BlockToCellConverter(Brushes.OrangeRed, "#FF77BB44".ToBrush(1), Brushes.DarkGray).ShowDayOffText(false);
 }
Example #2
0
 public ShiftImportPresenter(IShiftDispatcherModel shiftDispatcherModel, ICalendarEventModel calendarEventModel, IOpenFileService openFileService)
 {
     _shiftDispatcherModel = shiftDispatcherModel;
     _calendarEventModel = calendarEventModel;
     _openFileService = openFileService;
     _bindableAgents = new List<IEnumerable>();
     _openFileService.Filter = "Excel File|*.xls";
     _assignmentCellConverter = new BlockToCellConverter(Brushes.OrangeRed, "#FF77BB44".ToBrush(1), Brushes.DarkGray).ShowDayOffText(false);
 }
        protected override void OnInitialize()
        {
            BeginLoading();

            AssignmentCellConverter      = new BlockToCellConverter().ShowDayOffText(false);
            EvaluationStatisticConverter = new BlockToCellConverter();

            DateTerm[]                dates;
            DailyCounter[]            planningStaffings;
            DailyCounter[]            planningOtStaffings;
            DailyCounter <DateTime>[] planningShifts;
            DailyCounter[]            planningServiceLevel;

            _dateIndexer = Schedule.CreateDateIndexer();

            _selectedColumnDate = Schedule.Start;

            _calendarEventModel.LoadGlobalCalendar(Schedule.Start, Schedule.End);

            Schedule.CreateDateIndexer(_dateIndexer, date =>
            {
                var isHoliday = date.IsHoliday(Country.Local);

                if (isHoliday)
                {
                    _holidays++;
                }
                else
                {
                    _workingDays++;
                }

                return(new DateTerm(date, _dateIndexer[date] == 0 ? "{0:M/d}" : "{0:d }")
                {
                    IsHoliday = isHoliday, IsDaylightSaving = date.IsDaylightSaving(TimeZoneInfo.Local)
                });
            }, out dates);
            _dates = new List <IEnumerable> {
                dates
            };

            new Thread(() =>
            {
                // 获取Agent数据, 班次统计数据
                _attendances     = _shiftDispatcherModel.GetPlanningAgents(_schedule.Campaign, _enquiryRange);
                _assignmentTypes = _shiftDispatcherModel.GetAssignmentTypeDailyCounter(null, _schedule);
                //x_prioritiedAssignmentTypeGroup = new Dictionary<int, IList<string>>(10);



                Schedule.CreateDateIndexer(_dateIndexer, date => new DailyCounter(date, "0.#"), out planningStaffings);
                Schedule.CreateDateIndexer(_dateIndexer, date => new DailyCounter(date, "0.#"), out planningOtStaffings);
                Schedule.CreateDateIndexer(_dateIndexer, date => new DailyCounter(date, "0.#%"), out planningServiceLevel);
                Schedule.CreateDateIndexer(_dateIndexer, date => new DailyCounter <DateTime>(date, date, 0), out planningShifts);

                //初始统计数据
                _statisticItems = new List <Tuple <string, IList> >(new[] { new Tuple <string, IList>("Staffings", planningStaffings),
                                                                            new Tuple <string, IList>("OtStaffings", planningOtStaffings),
                                                                            new Tuple <string, IList>("AssignedServiceLevel", planningServiceLevel),
                                                                            new Tuple <string, IList>("AgentCounts", planningShifts) });

                _currentDateAssignmentTypes = new Dictionary <DateTime, IList>(dates.Length);

                foreach (var i in dates)
                {
                    var dateKey           = i.Date;
                    var indexOfDate       = i.Index;
                    _dateIndexer[dateKey] = indexOfDate;

                    RecalculateDailyStatistic(indexOfDate, false);
                    DailySetAssignmentTypeEval(i); //caution: without assignment type frequency estimate
                }

                Agents = _attendances;

                SummarizeLaborHours();
                EndLoading();

                NotifyOfPropertyChange(() => AssignmentTypes);
                NotifyOfPropertyChange(() => StatisticItems);
                _autoReset.WaitOne();
                _staffingCalculatorService.Run(_staffingCalculatorArgs); //do not change order



                Thread.CurrentThread.Abort();
            }).Self(t => { t.IsBackground = true; t.Start(); });

            base.OnInitialize();
        }
Example #4
0
        protected override void OnInitialize()
        {
            BeginLoading();

            AssignmentCellConverter = new BlockToCellConverter().ShowDayOffText(false);
            EvaluationStatisticConverter = new BlockToCellConverter();

            DateTerm[] dates;
            DailyCounter[] planningStaffings;
            DailyCounter[] planningOtStaffings;
            DailyCounter<DateTime>[] planningShifts;
            DailyCounter[] planningServiceLevel;

            _dateIndexer = Schedule.CreateDateIndexer();

            _selectedColumnDate = Schedule.Start;

            _calendarEventModel.LoadGlobalCalendar(Schedule.Start, Schedule.End);

            Schedule.CreateDateIndexer(_dateIndexer, date =>
            {
                var isHoliday = date.IsHoliday(Country.Local);

                if (isHoliday)
                    _holidays++;
                else
                    _workingDays++;

                return new DateTerm(date, _dateIndexer[date] == 0 ? "{0:M/d}" : "{0:d }") { IsHoliday = isHoliday, IsDaylightSaving = date.IsDaylightSaving(TimeZoneInfo.Local) };
            }, out dates);
            _dates = new List<IEnumerable> { dates };

            new Thread(() =>
            {

                // 获取Agent数据, 班次统计数据
                _attendances = _shiftDispatcherModel.GetPlanningAgents(_schedule.Campaign, _enquiryRange);
                _assignmentTypes = _shiftDispatcherModel.GetAssignmentTypeDailyCounter(null, _schedule);
                //x_prioritiedAssignmentTypeGroup = new Dictionary<int, IList<string>>(10);



                Schedule.CreateDateIndexer(_dateIndexer, date => new DailyCounter(date, "0.#"), out planningStaffings);
                Schedule.CreateDateIndexer(_dateIndexer, date => new DailyCounter(date, "0.#"), out planningOtStaffings);
                Schedule.CreateDateIndexer(_dateIndexer, date => new DailyCounter(date, "0.#%"), out planningServiceLevel);
                Schedule.CreateDateIndexer(_dateIndexer, date => new DailyCounter<DateTime>(date, date, 0), out planningShifts);

                //初始统计数据
                _statisticItems = new List<Tuple<string, IList>>(new[] { new Tuple<string, IList>("Staffings", planningStaffings),
                                                                    new Tuple<string, IList>("OtStaffings", planningOtStaffings),
                                                                    new Tuple<string, IList>("AssignedServiceLevel", planningServiceLevel),
                                                                    new Tuple<string, IList>("AgentCounts", planningShifts)});

                _currentDateAssignmentTypes = new Dictionary<DateTime, IList>(dates.Length);

                foreach (var i in dates)
                {
                    var dateKey = i.Date;
                    var indexOfDate = i.Index;
                    _dateIndexer[dateKey] = indexOfDate;

                    RecalculateDailyStatistic(indexOfDate, false);
                    DailySetAssignmentTypeEval(i); //caution: without assignment type frequency estimate
                }

                Agents = _attendances;

                SummarizeLaborHours();
                EndLoading();

                NotifyOfPropertyChange(() => AssignmentTypes);
                NotifyOfPropertyChange(() => StatisticItems);
                _autoReset.WaitOne();
                _staffingCalculatorService.Run(_staffingCalculatorArgs); //do not change order



                Thread.CurrentThread.Abort();
            }).Self(t => { t.IsBackground = true; t.Start(); });

            base.OnInitialize();
        }