Exemplo n.º 1
0
        private void buttonX3_Click(object sender, EventArgs e)
        {
            if (MsgBox.Show("您確定要刪除此學年成績?", "", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            foreach (XmlElement var in QueryScore.GetSchoolYearEntryScoreBySchoolYearGradeYear(int.Parse(listView1.SelectedItems[0].SubItems[0].Text), int.Parse(listView1.SelectedItems[0].SubItems[1].Text), _CurrentID).GetContent().GetElements("SchoolYearEntryScore"))
            {
                RemoveScore.DeleteSchoolYearEntityScore(var.SelectSingleNode("@ID").InnerText);
            }
            foreach (XmlElement var in QueryScore.GetSchoolYearSubjectScoreBySchoolYearGradeYear(int.Parse(listView1.SelectedItems[0].SubItems[0].Text), int.Parse(listView1.SelectedItems[0].SubItems[1].Text), _CurrentID).GetContent().GetElements("SchoolYearSubjectScore"))
            {
                RemoveScore.DeleteSchoolYearSubjectScore(var.SelectSingleNode("@ID").InnerText);
            }

            // 刪除學年成績 log
            StringBuilder deleteDesc = new StringBuilder("");

            deleteDesc.AppendLine("學生姓名:" + Student.Instance.Items[_CurrentID].Name + " ");
            deleteDesc.AppendLine("刪除 " + listView1.SelectedItems[0].SubItems[0].Text + " 學年度 學年成績");
            CurrentUser.Instance.AppLog.Write(EntityType.Student, EntityAction.Delete, _CurrentID, deleteDesc.ToString(), Title, "");

            EventHub.Instance.InvokScoreChanged(_CurrentID);
        }
Exemplo n.º 2
0
        public override bool Fill()
        {
            SubProgress progress = new SubProgress(MainProgress, WeightTable.GetJobWeight("GetYearSubject"));

            try
            {
                Utility.StartTime("GetYearSubject");
                progress.ReportMessage("取得學年科目成績資料…");

                List <List <string> > packages = Utility.SplitGetPackage(Students, PackageSize);

                int offset = 1;
                foreach (List <string> eachPackage in packages)
                {
                    if (MainProgress.Cancellation)
                    {
                        return(false);                           //這個部份要看的必須是 MainProgress。
                    }
                    DSXmlHelper response = QueryScore.GetSchoolYearSubjectScore(true, Parameters.SchoolYear, eachPackage.ToArray());

                    foreach (XmlElement eachStudent in response.GetElements("SchoolYearSubjectScore"))
                    {
                        DSXmlHelper hlpScore  = new DSXmlHelper(eachStudent);
                        string      studentId = hlpScore.GetText("RefStudentId");
                        string      scoreId   = hlpScore.GetText("@ID");

                        if (Students.ContainsKey(studentId))
                        {
                            Student student = Students[studentId];
                            student.YearSubjects.ScoreRecordIdentity = scoreId;

                            string scoresPath = "ScoreInfo/SchoolYearSubjectScore/Subject";
                            foreach (XmlElement eachScore in eachStudent.SelectNodes(scoresPath))
                            {
                                YearSubjectScore objScore = new YearSubjectScore(eachScore);
                                if (!student.YearSubjects.AddSubject(objScore))
                                {
                                    LogDuplicateSubject(progress, student, objScore);
                                }
                            }
                        }
                    }

                    progress.ReportProgress((int)(((float)offset / packages.Count) * 100));
                    offset++;
                }

                progress.ReportProgress(100);
                Utility.EndTime("GetYearSubject");
                return(true);
            }
            catch (Exception ex)
            {
                progress.ReportException(ex);
                return(false);
            }
        }
Exemplo n.º 3
0
        public override bool Fill()
        {
            SubProgress progress = new SubProgress(MainProgress, WeightTable.GetJobWeight("GetSemsMoral"));

            try
            {
                Utility.StartTime("GetSemsMoral");
                progress.ReportMessage("取得學期德行成績資料…");

                List <List <string> > packages = Utility.SplitGetPackage(Students, PackageSize);

                int offset = 1;
                foreach (List <string> eachPackage in packages)
                {
                    if (MainProgress.Cancellation)
                    {
                        return(false);                           //這個部份要看的必須是 MainProgress。
                    }
                    DSXmlHelper response = QueryScore.GetSemesterEntryScoreBySemester(true,
                                                                                      Parameters.SchoolYear,
                                                                                      Parameters.Semester,
                                                                                      QueryScore.EntryGroup.行為,
                                                                                      eachPackage.ToArray());

                    foreach (XmlElement eachStudent in response.GetElements("SemesterEntryScore"))
                    {
                        DSXmlHelper hlpScore  = new DSXmlHelper(eachStudent);
                        string      studentId = hlpScore.GetText("RefStudentId");
                        string      scoreId   = hlpScore.GetText("@ID");

                        if (Students.ContainsKey(studentId))
                        {
                            Student student = Students[studentId];
                            student.SemsMoral = new SemesterEntry("德行", eachStudent);
                        }
                    }

                    progress.ReportProgress((int)(((float)offset / packages.Count) * 100));
                    offset++;
                }

                progress.ReportProgress(100);
                Utility.EndTime("GetSemsMoral");
                return(true);
            }
            catch (Exception ex)
            {
                progress.ReportException(ex);
                return(false);
            }
        }
Exemplo n.º 4
0
        private void ReLoad(object sender, EventArgs e)
        {
            _SubjectScoreID = "";
            _EntryScoreID1  = "";
            _EntryScoreID2  = "";

            if (!ValidateSchoolYear())
            {
                return;
            }

            #region 科目成績
            dataGridViewX1.Rows.Clear();
            DSXmlHelper _SubjectResponse = QueryScore.GetSchoolYearSubjectScore(true, comboBoxEx1.Text, _StudentID);
            if (_SubjectResponse.GetElement("SchoolYearSubjectScore") != null)
            {
                if (comboBoxEx3.Text == "")
                {
                    comboBoxEx3.Text = _SubjectResponse.GetElement("SchoolYearSubjectScore/GradeYear").InnerText;
                }
                else
                {
                    if (comboBoxEx3.Text != _SubjectResponse.GetElement("SchoolYearSubjectScore/GradeYear").InnerText)
                    {
                        MsgBox.Show("發現同一學年度出現兩筆不同成績年級之資料。");
                    }
                }

                #region 建立排名相關物件
                _subject_rating = new SubjectScoreToolTipProvider(_SubjectResponse.GetElement("SchoolYearSubjectScore/ClassRating"),
                                                                  _SubjectResponse.GetElement("SchoolYearSubjectScore/DeptRating"),
                                                                  _SubjectResponse.GetElement("SchoolYearSubjectScore/YearRating"));
                #endregion

                beforeXml.AddElement("SubjectGradeYear", "GradeYear", comboBoxEx3.Text);

                _SubjectScoreID = _SubjectResponse.GetElement("SchoolYearSubjectScore").GetAttribute("ID");
                foreach (XmlElement var in _SubjectResponse.GetElements("SchoolYearSubjectScore/ScoreInfo/SchoolYearSubjectScore/Subject"))
                {
                    beforeXml.AddElement("SubjectCollection", var);

                    DataGridViewRow row = new DataGridViewRow();
                    row.CreateCells(dataGridViewX1,
                                    var.GetAttribute("科目"),
                                    var.GetAttribute("學年成績"),
                                    var.GetAttribute("結算成績") == "" ? var.GetAttribute("學年成績") : var.GetAttribute("結算成績"),
                                    var.GetAttribute("補考成績"),
                                    var.GetAttribute("重修成績"),
                                    var.GetAttribute("校部定"),
                                    var.GetAttribute("必選修"),
                                    var.GetAttribute("識別學分數")
                                    );
                    row.Cells[0].ToolTipText = _subject_rating.GetTooltip(row);
                    dataGridViewX1.Rows.Add(row);
                }
            }
            #endregion
            #region 分項成績
            textBoxX1.Text = "";
            textBoxX2.Text = "";
            textBoxX3.Text = "";
            textBoxX4.Text = "";
            textBoxX5.Text = "";
            textBoxX6.Text = "";
            textBoxX7.Text = "";
            DSXmlHelper _EntryResponse = QueryScore.GetSchoolYearEntryScore(true, comboBoxEx1.Text, null, _StudentID);
            foreach (XmlElement var in _EntryResponse.GetElements("SchoolYearEntryScore"))
            {
                if (comboBoxEx3.Text == "")
                {
                    comboBoxEx3.Text = var.SelectSingleNode("GradeYear").InnerText;
                }
                else
                {
                    if (comboBoxEx3.Text != var.SelectSingleNode("GradeYear").InnerText)
                    {
                        MsgBox.Show("發現同一學年度出現兩筆不同成績年級之資料。");
                    }
                }
                string id = var.GetAttribute("ID");
                switch (var.SelectSingleNode("EntryGroup").InnerText)
                {
                case "學習":
                    _EntryScoreID1 = id;
                    _score_rating  = new EntryScoreToolTipProvider("學業", var);
                    break;

                case "行為":
                    _EntryScoreID2 = id;
                    _moral_rating  = new EntryScoreToolTipProvider("德行", var);
                    break;

                default:
                    throw new Exception("拎唄謀洗鰓機雷EntryGroup:  \"" + var.SelectSingleNode("EntryGroup").InnerText + "\"");
                }
                foreach (XmlNode score in var.SelectNodes("ScoreInfo/SchoolYearEntryScore/Entry"))
                {
                    XmlElement element = (XmlElement)score;
                    beforeXml.AddElement("EntryCollection", element);

                    #region 依分項填入格子
                    switch (element.GetAttribute("分項"))
                    {
                    case "學業":
                        textBoxX1.Text = element.GetAttribute("成績");

                        _score_rating.SetTooltip(textBoxX1);
                        _score_rating.SetTooltip(labelX3);
                        break;

                    case "體育":
                        textBoxX3.Text = element.GetAttribute("成績");
                        break;

                    case "國防通識":
                        textBoxX4.Text = element.GetAttribute("成績");
                        break;

                    case "健康與護理":
                        textBoxX5.Text = element.GetAttribute("成績");
                        break;

                    case "實習科目":
                        textBoxX6.Text = element.GetAttribute("成績");
                        break;

                    case "專業科目":
                        textBoxX7.Text = element.GetAttribute("成績");
                        break;

                    case "德行":
                        textBoxX2.Text = element.GetAttribute("成績");
                        _moral_rating.SetTooltip(textBoxX2);
                        _moral_rating.SetTooltip(labelX4);

                        break;

                    default:
                        //throw new Exception("拎唄謀洗鰓機雷分項: " + element.GetAttribute("分項"));
                        break;
                    }
                    #endregion
                }
            }
            #endregion
        }
Exemplo n.º 5
0
 void _bkwEntryLoader_DoWork(object sender, DoWorkEventArgs e)
 {
     e.Result = QueryScore.GetSchoolYearEntryScore(e.Argument.ToString());
 }
Exemplo n.º 6
0
 void _bkwSubjectLoader_DoWork(object sender, DoWorkEventArgs e)
 {
     e.Result = QueryScore.GetSemesterSubjectScore(e.Argument.ToString());
 }
        private void btnArchive_Click(object sender, EventArgs e)
        {
            CreateUDTTable();

            //寫入log
            StringBuilder sb_log = new StringBuilder();

            //封存 (複製sems_subj_score 和 sems_entry_score)

            if (MsgBox.Show("確定將" + listView1.SelectedItems[0].SubItems[0].Text + "-" + listView1.SelectedItems[0].SubItems[1].Text + "學期成績,複製到「學期成績(封存)」?", "", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            UpdateHelper updateHelper = new UpdateHelper();
            QueryHelper  qh           = new QueryHelper();
            int          uid          = 0;

            string searchSql = "SELECT id FROM sems_subj_score WHERE ref_student_id ={0} AND school_year={1} AND semester={2}";

            searchSql = string.Format(searchSql, _CurrentID, listView1.SelectedItems[0].SubItems[0].Text, listView1.SelectedItems[0].SubItems[1].Text);


            DataTable searchIDdt = qh.Select(searchSql);

            if (searchIDdt.Rows.Count > 0)
            {
                try
                {
                    foreach (XmlElement var in QueryScore.GetSemesterEntryScoreBySemester(int.Parse(listView1.SelectedItems[0].SubItems[0].Text), int.Parse(listView1.SelectedItems[0].SubItems[1].Text), _CurrentID).GetContent().GetElements("SemesterEntryScore"))
                    {
                        //複製學期分項成績(不複製德行成績)
                        string sql = @"INSERT INTO $semester_entry_score_archive (ref_student_id,school_year,semester, grade_year, score_info) 
                                                    SELECT ref_student_id,school_year,semester, grade_year, score_info 
                                                    FROM sems_entry_score 
                                                    WHERE entry_group=1  AND id={0}
                                                    RETURNING uid";

                        sql = string.Format(sql, var.SelectSingleNode("@ID").InnerText);
                        //updateHelper.Execute(sql);
                        //取得回傳的uid讓$semester_subject_score_archive 寫入ref_sems_entry_uid
                        DataTable dt = qh.Select(sql);
                        foreach (DataRow dr in dt.Rows)
                        {
                            uid = int.Parse(dr["uid"].ToString());
                        }
                    }
                }
                catch (Exception ex)
                {
                    MsgBox.Show("取得學生學期分項成績發生錯誤。" + ex.Message);
                }

                try
                {
                    foreach (XmlElement var in QueryScore.GetSemesterSubjectScoreBySemester(int.Parse(listView1.SelectedItems[0].SubItems[0].Text), int.Parse(listView1.SelectedItems[0].SubItems[1].Text), _CurrentID).GetContent().GetElements("SemesterSubjectScore"))
                    {
                        //複製學期科目成績
                        string sql = @"INSERT INTO $semester_subject_score_archive (ref_student_id,school_year,semester, grade_year, score_info,ref_sems_entry_uid) 
                                                    SELECT ref_student_id,school_year,semester, grade_year, score_info ,{0}
                                                    FROM sems_subj_score 
                                                    WHERE  id={1} ";

                        sql = string.Format(sql, uid, var.SelectSingleNode("@ID").InnerText);

                        updateHelper.Execute(sql);
                    }
                }
                catch (Exception ex)
                {
                    MsgBox.Show("取得學生學期科目成績發生錯誤。" + ex.Message);
                    return;
                }
                sb_log.AppendLine("複製學生「" + Student.Instance.Items[_CurrentID].Name + "(學號" + Student.Instance.Items[_CurrentID].StudentNumber + ")」" + listView1.SelectedItems[0].SubItems[0].Text + "學年度第" + listView1.SelectedItems[0].SubItems[1].Text + "學期的學期成績至「學期成績(封存)」。");
                FISCA.LogAgent.ApplicationLog.Log("學期成績", "封存", "學生", Student.Instance.Items[_CurrentID].ID, sb_log.ToString());
                MsgBox.Show("封存成功。");

                //todo 封存後,更新封存資料項目。
                EventHub.OnArchiveChanged(); //Cynthia
            }
            else
            {
                MsgBox.Show(listView1.SelectedItems[0].SubItems[0].Text + "學年度第" + listView1.SelectedItems[0].SubItems[1].Text + "學期沒有科目成績。");
            }
        }