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); }
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(); }
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(); }