protected override void OnActive()
        {
            //MotherForm.SetWaitCursor();
            _MoralConductElement = QueryScoreCalcRule.GetMoralConductCalcRule();
            if (_MoralConductElement == null)
            {
                XmlDocument doc = new XmlDocument();
                doc.LoadXml("<MoralConductScoreCalcRule/>");
                _MoralConductElement = doc.DocumentElement;
            }
            DSXmlHelper helper = new DSXmlHelper(_MoralConductElement);

            foreach (IMoralConductInstance item in _Instances)
            {
                item.SetSource(helper.GetElement(item.XPath));
                item.GetDependenceData();

                if (!item.IsValidate)
                {
                    SetWarring(item, (GroupPanel)((Control)item).Parent);
                }
                item.IsValidateChanged += new EventHandler(item_IsValidateChanged);
            }
            //MotherForm.ResetWaitCursor();
        }
Ejemplo n.º 2
0
        public AngelDemonComputer()
        {
            //取得德行成績計算規則
            _MoralConductElement = QueryScoreCalcRule.GetMoralConductCalcRule();
            if (_MoralConductElement != null)
            {
                _MoralConductHelper = new DSXmlHelper(_MoralConductElement);
            }
            else
            {
                _MoralConductHelper = new DSXmlHelper();
            }
            #region 取得記分缺曠項目

            #region 取得節次類別與缺曠對照表
            List <string> periodList  = new List <string>();
            List <string> absenceList = new List <string>();

            //取得對照表並且對照出節次->類別的清單(99/11/24 by dylan)
            periodDic.Clear();

            //取得節次對照表
            foreach (XmlElement var in SmartSchool.Feature.Basic.Config.GetPeriodList().GetContent().GetElements("Period"))
            {
                string name = var.GetAttribute("Type");
                if (!periodList.Contains(name))
                {
                    periodList.Add(name);
                }

                //取得對照表並且對照出節次->類別的清單(99/11/24 by dylan)
                if (!periodDic.ContainsKey(var.GetAttribute("Name")))
                {
                    periodDic.Add(var.GetAttribute("Name"), var.GetAttribute("Type"));
                }
            }
            //取得假別對照表
            foreach (XmlElement var in SmartSchool.Feature.Basic.Config.GetAbsenceList().GetContent().GetElements("Absence"))
            {
                //假別清單
                string name = var.GetAttribute("Name");
                if (!absenceList.Contains(name))
                {
                    absenceList.Add(name);
                }
                //建立不影響全勤清單
                bool noabsence;
                if (bool.TryParse(var.GetAttribute("Noabsence"), out noabsence) && noabsence && !_NoabsenceList.Contains(name))
                {
                    _NoabsenceList.Add(name);
                }
            }
            #endregion
            _UsefulPeriodAbsences = new List <UsefulPeriodAbsence>();
            foreach (XmlElement element in _MoralConductHelper.GetElements("PeriodAbsenceCalcRule/Rule"))
            {
                string  absence = element.GetAttribute("Absence");
                string  period  = element.GetAttribute("Period");
                decimal subtract;
                decimal.TryParse(element.GetAttribute("Subtract"), out subtract);
                int aggregated;
                int.TryParse(element.GetAttribute("Aggregated"), out aggregated);
                if (aggregated > 0 && subtract > 0 && periodList.Contains(period) && absenceList.Contains(absence))
                {
                    _UsefulPeriodAbsences.Add(new UsefulPeriodAbsence(absence, period, subtract, aggregated));
                }
            }
            #endregion

            SystemInformation.getField("Degree");
            _degreeList = (Dictionary <string, decimal>)SystemInformation.Fields["Degree"];
        }