void getBase(OperatorEnum opratorEnum, AdministrativeAlgoRuleEnum timeRule)
        {
            base.OpratorEnum = opratorEnum;
            this._timeRule   = timeRule;
            this.TitleString = $"{ opratorEnum.GetLocalDescription()}-{timeRule.GetLocalDescription()}";
            this.RaisePropertyChanged(() => ShowRead);
            this.RaisePropertyChanged(() => ShowEdit);
            this.RaisePropertyChanged(() => ShowMaxNumber);
            this.RaisePropertyChanged(() => ShowSameMaxNumber);

            var cp = CommonDataManager.GetCPCase(base.LocalID);

            this.Sources = cp.GetClassHours(cp.ClassHours.Select(ch => ch.ID)?.ToArray());

            var results = new List <UITwoStatusWeek>();
            var groups  = cp.Positions.GroupBy(p => p.DayPeriod.Period);

            if (groups != null)
            {
                foreach (var g in groups)
                {
                    var             first = g.First();
                    UITwoStatusWeek week  = new UITwoStatusWeek()
                    {
                        Period       = first.DayPeriod,
                        PositionType = first.Position,
                    };
                    week.SetStatus(true);
                    results.Add(week);
                }
            }
            this.Periods = results;

            this.Search();
        }
        void getBase(OperatorEnum opratorEnum, AdministrativeAlgoRuleEnum timeRule)
        {
            this._timeRule   = timeRule;
            base.OpratorEnum = opratorEnum;
            this.TitleString = $"{ opratorEnum.GetLocalDescription()}-{timeRule.GetLocalDescription()}";
            this.RaisePropertyChanged(() => ShowRead);
            this.RaisePropertyChanged(() => ShowEdit);

            this.Days = new Dictionary <string, DayOfWeek>()
            {
                { "星期一", DayOfWeek.Monday },
                { "星期二", DayOfWeek.Tuesday },
                { "星期三", DayOfWeek.Wednesday },
                { "星期四", DayOfWeek.Thursday },
                { "星期五", DayOfWeek.Friday },
                { "星期六", DayOfWeek.Saturday },
                { "星期日", DayOfWeek.Sunday },
            };

            this.Day = "星期一";

            var cp = CommonDataManager.GetCPCase(base.LocalID);

            this.Periods = cp.GetDayPeriods();

            this.SelectPeriod = this.Periods.FirstOrDefault();

            Sources = cp.GetClassHours(cp.ClassHours?.Select(c => c.ID)?.ToArray());

            this.Search();
        }
        public void BindData(AdministrativeAlgoRuleEnum ruleEnum)
        {
            this.SetCurrentRuleEnum(ruleEnum);

            var rule = CommonDataManager.GetAminAlgoRule(base.LocalID);

            if (rule == null)
            {
                return;
            }

            var cp = CommonDataManager.GetCPCase(base.LocalID);

            int no = 0;

            if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.ClassHoursSameStarting)
            {
                rule.ClassHoursSameStartingDays.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO         = ++no;
                    ui.IsActive   = t.Active;
                    ui.Weight     = t.Weight;
                    ui.ClassHours = cp.GetClassHours(t.ID);

                    this.Rules.Add(ui);
                });
            }
            else if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.ClassHoursSameStartingHour)
            {
                rule.ClassHoursSameStartingHours?.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO         = ++no;
                    ui.IsActive   = t.Active;
                    ui.Weight     = t.Weight;
                    ui.ClassHours = cp.GetClassHours(t.ID);
                    this.Rules.Add(ui);
                });
            }
            else if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.ClassHoursSameStartingTime)
            {
                rule.ClassHoursSameStartingTimes?.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO         = ++no;
                    ui.IsActive   = t.Active;
                    ui.Weight     = t.Weight;
                    ui.ClassHours = cp.GetClassHours(t.Id);
                    this.Rules.Add(ui);
                });
            }
        }
예제 #4
0
        public ClassHoursTimesValue(AdministrativeAlgoRuleEnum ruleEnum) : this()
        {
            if (ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursMaxConcurrencyInSelectedTime)
            {
                dc_MaxConcurrency.Visibility = Visibility.Visible;
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursOccupyMaxTimeFromSelection)
            {
                dc_Occupy.Visibility = Visibility.Visible;
            }

            (this.DataContext as ClassHoursTimesValueModel).BindData(ruleEnum);
        }
예제 #5
0
        void getBase(OperatorEnum opratorEnum, AdministrativeAlgoRuleEnum timeRule)
        {
            base.OpratorEnum = opratorEnum;
            this._timeRule   = timeRule;
            this.TitleString = $"{ opratorEnum.GetLocalDescription()}-{timeRule.GetLocalDescription()}";
            this.RaisePropertyChanged(() => ShowRead);
            this.RaisePropertyChanged(() => ShowEdit);

            var cp = CommonDataManager.GetCPCase(base.LocalID);

            this.Sources = cp.GetClassHours(cp.ClassHours?.Select(ch => ch.ID)?.ToArray());

            this.Search();
        }
        /// <summary>
        /// 当前显示界面:规则或高级
        /// </summary>
        public void SetCurrentRuleEnum(AdministrativeAlgoRuleEnum value)
        {
            currentRuleEnum = value;
            this.Comments   = CommonDataManager.GetAdminAlgoComments(value);

            if (currentRuleEnum == AdministrativeAlgoRuleEnum.MinDaysBetweenClassHours)
            {
                this.ShowMaxDay = false;
            }
            else if (currentRuleEnum == AdministrativeAlgoRuleEnum.MaxDaysBetweenClassHours)
            {
                this.ShowMinDay = false;
            }
        }
예제 #7
0
        public void BindData(AdministrativeAlgoRuleEnum ruleEnum)
        {
            this.CurrentRuleEnum = ruleEnum;

            this.Comments = CommonDataManager.GetAdminAlgoComments(ruleEnum);

            var rule = CommonDataManager.GetAminAlgoRule(base.LocalID);

            if (rule == null)
            {
                return;
            }

            var cp = CommonDataManager.GetCPCase(base.LocalID);

            int no = 0;

            if (this.CurrentRuleEnum == AdministrativeAlgoRuleEnum.TeacherMaxHoursDaily)
            {
                rule.TeacherMaxHoursDailys.ForEach(t =>
                {
                    var teacher = cp.Teachers.FirstOrDefault(f => f.ID.Equals(t.TeacherID));

                    UITeacherRule ui = new UITeacherRule();
                    ui.NO            = ++no;
                    ui.TeacherID     = teacher?.ID;
                    ui.Name          = teacher?.Name;
                    ui.Weight        = t.Weight;
                    ui.IsActive      = t.Active;
                    ui.Value         = t.MaxHours;

                    this.Rules.Add(ui);
                });
            }
            else
            {
                rule.TeachersMaxHoursDailys?.ForEach(t =>
                {
                    UITeacherRule ui = new UITeacherRule();
                    ui.NO            = ++no;
                    ui.Name          = "所有教师";
                    ui.Weight        = t.Weight;
                    ui.IsActive      = t.Active;
                    ui.Value         = t.MaxHours;

                    this.Rules.Add(ui);
                });
            }
        }
        public void BindData(AdministrativeAlgoRuleEnum ruleEnum)
        {
            this.SetCurrentRuleEnum(ruleEnum);

            var rule = CommonDataManager.GetAminAlgoRule(base.LocalID);

            if (rule == null)
            {
                return;
            }

            var cp = CommonDataManager.GetCPCase(base.LocalID);
            int no = 0;

            if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.ClassHoursRequiredStartingTimes)
            {
                rule.ClassHoursRequiredStartingTimes.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO        = ++no;
                    ui.UID       = t.UID;
                    ui.IsActive  = t.Active;
                    ui.Weight    = t.Weight;
                    ui.ClassID   = t.ClassID;
                    ui.CourseID  = t.CourseID;
                    ui.TeacherID = t.TeacherID;
                    ui.Periods   = t.Times;
                    this.Rules.Add(ui);
                });
            }
            else if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.ClassHoursRequiredTimes)
            {
                rule.ClassHoursRequiredTimes?.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO        = ++no;
                    ui.UID       = t.UID;
                    ui.IsActive  = t.Active;
                    ui.Weight    = t.Weight;
                    ui.ClassID   = t.ClassID;
                    ui.CourseID  = t.CourseID;
                    ui.TeacherID = t.TeacherID;
                    ui.Periods   = t.Times;
                    this.Rules.Add(ui);
                });
            }
        }
        public void BindData(AdministrativeAlgoRuleEnum ruleEnum)
        {
            this.SetCurrentRuleEnum(ruleEnum);

            var rule = CommonDataManager.GetAminAlgoRule(base.LocalID);

            if (rule == null)
            {
                return;
            }

            var cp = CommonDataManager.GetCPCase(base.LocalID);
            int no = 0;

            if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.ClassHoursMaxConcurrencyInSelectedTime)
            {
                rule.ClassHoursMaxConcurrencyInSelectedTimes?.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO             = ++no;
                    ui.UID            = t.UID;
                    ui.IsActive       = t.Active;
                    ui.ClassHours     = cp.GetClassHours(t.ID);
                    ui.MaxConcurrency = t.MaxConcurrencyNumber;
                    ui.Periods        = t.Times;
                    this.Rules.Add(ui);
                });
            }
            else if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.ClassHoursOccupyMaxTimeFromSelection)
            {
                rule.ClassHoursOccupyMaxTimeFromSelections?.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO         = ++no;
                    ui.UID        = t.UID;
                    ui.IsActive   = t.Active;
                    ui.ClassHours = cp.GetClassHours(t.ID);
                    ui.MaxOccupy  = t.MaxOccupyNumber;
                    ui.Periods    = t.Times;
                    this.Rules.Add(ui);
                });
            }
        }
예제 #10
0
        void getBase(OperatorEnum opratorEnum, AdministrativeAlgoRuleEnum timeRule)
        {
            base.OpratorEnum = opratorEnum;
            this.TitleString = $"{ opratorEnum.GetLocalDescription()}-{timeRule.GetLocalDescription()}";
            this.RaisePropertyChanged(() => ShowRead);
            this.RaisePropertyChanged(() => ShowEdit);

            var cp = CommonDataManager.GetCPCase(base.LocalID);

            this.Teachers = cp.Teachers.Select(t =>
            {
                return(new UITeacher()
                {
                    ID = t.ID,
                    Name = t.Name
                });
            })?.ToList();

            this.SelectTeacher = this.Teachers.FirstOrDefault();

            var results = new List <UITwoStatusWeek>();
            var groups  = cp.Positions.GroupBy(p => p.DayPeriod.Period);

            if (groups != null)
            {
                foreach (var g in groups)
                {
                    var             first = g.First();
                    UITwoStatusWeek week  = new UITwoStatusWeek()
                    {
                        Period       = first.DayPeriod,
                        PositionType = first.Position,
                    };
                    week.SetStatus(true);
                    results.Add(week);
                }
            }
            this.Periods = results;
        }
예제 #11
0
        void getBase(OperatorEnum opratorEnum, AdministrativeAlgoRuleEnum timeRule)
        {
            base.OpratorEnum = opratorEnum;
            this._timeRule   = timeRule;
            this.TitleString = $"{ opratorEnum.GetLocalDescription()}-{timeRule.GetLocalDescription()}";
            this.RaisePropertyChanged(() => ShowRead);
            this.RaisePropertyChanged(() => ShowEdit);

            //this.MaxTips = $"(1-{CommonDataManager.Hours})";

            if (timeRule == AdministrativeAlgoRuleEnum.TeachersMaxGapsPerDay)
            {
                this.Teachers = new List <UITeacher>()
                {
                    new UITeacher
                    {
                        ID   = string.Empty,
                        Name = "所有教师"
                    }
                };

                this.SelectTeacher = this.Teachers.First();
            }
            else
            {
                var cp = CommonDataManager.GetCPCase(base.LocalID);

                this.Teachers = cp.Teachers.Select(t =>
                {
                    return(new UITeacher()
                    {
                        ID = t.ID,
                        Name = t.Name
                    });
                })?.ToList();
            }

            this.SelectTeacher = this.Teachers.FirstOrDefault();
        }
예제 #12
0
 public void SetValue(OperatorEnum opratorEnum, AdministrativeAlgoRuleEnum timeRule)
 {
     this.getBase(opratorEnum, timeRule);
 }
예제 #13
0
        public void SetValue(OperatorEnum opratorEnum, AdministrativeAlgoRuleEnum timeRule, UIClassHourRule rule)
        {
            this.getBase(opratorEnum, timeRule);

            this.bind(rule);
        }
예제 #14
0
        public HostView(AdministrativeAlgoRuleEnum ruleEnum) : this()
        {
            this.Title = $"高级-{ruleEnum.GetLocalDescription()}";

            if (ruleEnum == AdministrativeAlgoRuleEnum.ClassHourRequiredStartingTime)
            {
                FillContainer(new RequiredStartingTimeView());
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.ClassHourRequiredStartingTimes ||
                     ruleEnum == AdministrativeAlgoRuleEnum.ClassHourRequiredTimes)
            {
                FillContainer(new ClassHourRequiredTimes(ruleEnum));
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursNotOverlap)
            {
                FillContainer(new HoursNotOverlapView());
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursMaxConcurrencyInSelectedTime ||
                     ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursOccupyMaxTimeFromSelection)
            {
                FillContainer(new ClassHoursTimesValue(ruleEnum));
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursRequiredStartingTimes ||
                     ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursRequiredTimes)
            {
                FillContainer(new ClassHoursRequiredTimes(ruleEnum));
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursSameStarting ||
                     ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursSameStartingHour ||
                     ruleEnum == AdministrativeAlgoRuleEnum.ClassHoursSameStartingTime)
            {
                FillContainer(new HoursSameStartingView(ruleEnum));
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.MaxDaysBetweenClassHours ||
                     ruleEnum == AdministrativeAlgoRuleEnum.MinDaysBetweenClassHours)
            {
                FillContainer(new BetweenClassHoursView(ruleEnum));
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.ThreeClassHoursGrouped ||
                     ruleEnum == AdministrativeAlgoRuleEnum.TwoClassHoursContinuous ||
                     ruleEnum == AdministrativeAlgoRuleEnum.TwoClassHoursGrouped ||
                     ruleEnum == AdministrativeAlgoRuleEnum.TwoClassHoursOrdered)
            {
                FillContainer(new MultipyClassHoursView(ruleEnum));
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.TeacherMaxDaysPerWeek ||
                     ruleEnum == AdministrativeAlgoRuleEnum.TeachersMaxDaysPerWeek)
            {
                FillContainer(new Algo.Teacher.MaxDaysPerWeekView(ruleEnum));
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.TeacherMaxGapsPerDay ||
                     ruleEnum == AdministrativeAlgoRuleEnum.TeachersMaxGapsPerDay)
            {
                FillContainer(new Algo.Teacher.MaxGapsPerDayView(ruleEnum));
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.TeacherMaxHoursDaily ||
                     ruleEnum == AdministrativeAlgoRuleEnum.TeachersMaxHoursDaily)
            {
                FillContainer(new Algo.Teacher.MaxHoursDailyView(ruleEnum));
            }
            else if (ruleEnum == AdministrativeAlgoRuleEnum.TeacherNotAvailableTimes)
            {
                FillContainer(new NotAvailableTimesView());
            }
        }
 public MultipyClassHoursView(AdministrativeAlgoRuleEnum ruleEnum) : this()
 {
     (this.DataContext as MultipyClassHoursViewModel).BindData(ruleEnum);
 }
예제 #16
0
 public string GetAdminAlgoComments(AdministrativeAlgoRuleEnum algoEnum)
 {
     return(this.AdministrativeAlgoComments[algoEnum]);
 }
예제 #17
0
        public void BindData(AdministrativeAlgoRuleEnum ruleEnum)
        {
            this.SetCurrentRuleEnum(ruleEnum);

            var rule = CommonDataManager.GetAminAlgoRule(base.LocalID);

            if (rule == null)
            {
                return;
            }

            var cp = CommonDataManager.GetCPCase(base.LocalID);

            int no = 0;

            if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.ThreeClassHoursGrouped)
            {
                rule.ThreeClassHoursGrouped.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO       = ++no;
                    ui.FirstID  = t.FirstID;
                    ui.SecondID = t.SecondID;
                    ui.ThirdID  = t.ThirdID;
                    ui.IsActive = t.Active;
                    ui.Weight   = t.Weight;

                    var hours = new List <int>()
                    {
                        t.FirstID, t.SecondID, t.ThirdID
                    };
                    ui.ClassHours = cp.GetClassHours(hours.ToArray());

                    this.Rules.Add(ui);
                });
            }
            else if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.TwoClassHoursContinuous)
            {
                rule.TwoClassHoursContinuous?.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO       = ++no;
                    ui.FirstID  = t.FirstID;
                    ui.SecondID = t.SecondID;
                    ui.IsActive = t.Active;
                    ui.Weight   = t.Weight;

                    var hours = new List <int>()
                    {
                        t.FirstID, t.SecondID
                    };
                    ui.ClassHours = cp.GetClassHours(hours.ToArray());

                    this.Rules.Add(ui);
                });
            }
            else if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.TwoClassHoursGrouped)
            {
                rule.TwoClassHoursGrouped?.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO       = ++no;
                    ui.FirstID  = t.FirstID;
                    ui.SecondID = t.SecondID;
                    ui.IsActive = t.Active;
                    ui.Weight   = t.Weight;

                    var hours = new List <int>()
                    {
                        t.FirstID, t.SecondID
                    };
                    ui.ClassHours = cp.GetClassHours(hours.ToArray());

                    this.Rules.Add(ui);
                });
            }
            else if (this.GetCurrentRuleEnum() == AdministrativeAlgoRuleEnum.TwoClassHoursOrdered)
            {
                rule.TwoClassHoursOrdered?.ForEach(t =>
                {
                    UIClassHourRule ui = new UIClassHourRule();
                    ui.NO       = ++no;
                    ui.FirstID  = t.FirstID;
                    ui.SecondID = t.SecondID;
                    ui.IsActive = t.Active;
                    ui.Weight   = t.Weight;

                    var hours = new List <int>()
                    {
                        t.FirstID, t.SecondID
                    };
                    ui.ClassHours = cp.GetClassHours(hours.ToArray());

                    this.Rules.Add(ui);
                });
            }
        }
 public CreateBetweenClassHours(OperatorEnum operatorEnum, AdministrativeAlgoRuleEnum ruleType, UIClassHourRule rule) : this()
 {
     VM?.SetValue(operatorEnum, ruleType, rule);
 }
 /// <summary>
 /// 当前显示界面:规则或高级
 /// </summary>
 public void SetCurrentRuleEnum(AdministrativeAlgoRuleEnum value)
 {
     currentRuleEnum = value;
     this.Comments   = CommonDataManager.GetAdminAlgoComments(value);
 }
예제 #20
0
 public CreateClassHoursRequiredTimes(OperatorEnum operatorEnum, AdministrativeAlgoRuleEnum rule) : this()
 {
     VM?.SetValue(operatorEnum, rule);
 }
예제 #21
0
 public CreateMaxHoursDaily(OperatorEnum operatorEnum, AdministrativeAlgoRuleEnum ruleType, UITeacherRule rule) : this()
 {
     VM?.SetValue(operatorEnum, ruleType, rule);
 }
예제 #22
0
 public CreateMaxGapsPerDay(OperatorEnum operatorEnum, AdministrativeAlgoRuleEnum rule) : this()
 {
     VM?.SetValue(operatorEnum, rule);
 }
 public CreateSameStarting(OperatorEnum operatorEnum, AdministrativeAlgoRuleEnum rule) : this()
 {
     VM?.SetValue(operatorEnum, rule);
 }
예제 #24
0
 public MaxDaysPerWeekView(AdministrativeAlgoRuleEnum ruleEnum) : this()
 {
     (this.DataContext as MaxDaysPerWeekViewModel).BindData(ruleEnum);
 }
 public MaxHoursDailyView(AdministrativeAlgoRuleEnum ruleEnum) : this()
 {
     (this.DataContext as MaxHoursDailyViewModel).BindData(ruleEnum);
 }
 public HoursSameStartingView(AdministrativeAlgoRuleEnum ruleEnum) : this()
 {
     (this.DataContext as HoursSameStartingViewModel).BindData(ruleEnum);
 }
 public CreateNoOverlap(OperatorEnum operatorEnum, AdministrativeAlgoRuleEnum rule) : this()
 {
     VM?.SetValue(operatorEnum, rule);
 }
예제 #28
0
 public CreateRequiredStartingTime(OperatorEnum operatorEnum, AdministrativeAlgoRuleEnum ruleType, UIClassHourRule rule) : this()
 {
     VM?.SetValue(operatorEnum, ruleType, rule);
 }
예제 #29
0
 public ClassHoursRequiredTimes(AdministrativeAlgoRuleEnum ruleEnum) : this()
 {
     (this.DataContext as ClassHoursRequiredTimesModel).BindData(ruleEnum);
 }
 public CreateTeacherNoAvaliable(OperatorEnum operatorEnum, AdministrativeAlgoRuleEnum ruleType, UITeacherRule rule) : this()
 {
     VM?.SetValue(operatorEnum, ruleType, rule);
 }