예제 #1
0
        void _bgWork_DoWork(object sender, DoWorkEventArgs e)
        {
            List <K12.Data.SemesterHistoryRecord> recs    = K12.Data.SemesterHistory.SelectByStudentIDs(_StudentIDList);
            List <K12.Data.SemesterHistoryRecord> delRecs = new List <K12.Data.SemesterHistoryRecord>();

            foreach (K12.Data.SemesterHistoryRecord shis in recs)
            {
                K12.Data.SemesterHistoryItem delItm = null;

                foreach (K12.Data.SemesterHistoryItem shi in shis.SemesterHistoryItems)
                {
                    if (shi.SchoolYear == sc && shi.Semester == ss)
                    {
                        delItm = shi;
                    }
                }

                if (delItm != null)
                {
                    shis.SemesterHistoryItems.Remove(delItm);
                    delRecs.Add(shis);
                }
            }

            if (delRecs.Count > 0)
            {
                K12.Data.SemesterHistory.Update(delRecs);
            }
        }
예제 #2
0
        private void Add(K12.Data.SemesterHistoryItem item)
        {
            SemesterData semester = new SemesterData("" + item.SchoolYear, "" + item.Semester);

            if (!_semsMapping.ContainsKey(semester))
            {
                int gradeYear = item.GradeYear;
                if (gradeYear > 6)
                {
                    gradeYear -= 6;
                }

                int index = (gradeYear - 1) * 2 + item.Semester;
                _semsMapping.Add(semester, index - 1);
            }
        }
예제 #3
0
        /// <summary>
        /// 檢查學生學期歷程
        /// 改寫當學年度、學期、年級加入判斷
        /// </summary>
        /// <param name="students"></param>
        /// <returns></returns>
        public List <StudentRecord> CheckSemesterHistories(IEnumerable <StudentRecord> students)
        {
            // 檢查是否新增學期歷程
            bool chkInsertShi = false;

            // 取得目前學生班級年級
            Dictionary <string, int> studGrYearDic = new Dictionary <string, int>();

            foreach (JHStudentRecord stud in JHStudent.SelectByIDs(students.AsKeyList()))
            {
                if (stud.Class != null)
                {
                    if (stud.Class.GradeYear.HasValue)
                    {
                        studGrYearDic.Add(stud.ID, stud.Class.GradeYear.Value);
                    }
                }
            }


            // 取得學生學期歷程
            Dictionary <string, JHSemesterHistoryRecord> studentSemesterHistoryRecordDict = new Dictionary <string, JHSemesterHistoryRecord>();

            foreach (JHSemesterHistoryRecord record in JHSemesterHistory.SelectByStudentIDs(students.AsKeyList()))
            {
                chkInsertShi = true;
                K12.Data.SemesterHistoryItem shi = new K12.Data.SemesterHistoryItem();
                shi.SchoolYear = UIConfig._UserSetSHSchoolYear;
                shi.Semester   = UIConfig._UserSetSHSemester;

                if (studGrYearDic.ContainsKey(record.RefStudentID))
                {
                    shi.GradeYear = studGrYearDic[record.RefStudentID];
                }

                // 檢查是否已經有同學年度學期學期歷程
                foreach (K12.Data.SemesterHistoryItem shiItem in record.SemesterHistoryItems)
                {
                    if (shiItem.SchoolYear == UIConfig._UserSetSHSchoolYear && shiItem.Semester == UIConfig._UserSetSHSemester)
                    {
                        chkInsertShi = false;
                        break;
                    }
                }

                // 加入當學年度學期判斷用
                if (chkInsertShi)
                {
                    record.SemesterHistoryItems.Add(shi);
                }

                studentSemesterHistoryRecordDict.Add(record.RefStudentID, record);
            }

            List <StudentRecord> errorList = new List <StudentRecord>();

            // 主要修改成檢查是否有學期歷程與不重複,不推測學期歷程是否合理
            foreach (StudentRecord student in students)
            {
                // 當學生沒有學期歷程紀錄
                if (!studentSemesterHistoryRecordDict.ContainsKey(student.ID))
                {
                    errorList.Add(student);
                    continue;
                }

                List <string> checkSame = new List <string>();

                // 有學期歷程
                if (studentSemesterHistoryRecordDict.ContainsKey(student.ID))
                {
                    // 當學生有學期歷程,但是筆數是0
                    if (studentSemesterHistoryRecordDict[student.ID].SemesterHistoryItems.Count == 0)
                    {
                        errorList.Add(student);
                        continue;
                    }

                    checkSame.Clear();
                    foreach (K12.Data.SemesterHistoryItem shi in studentSemesterHistoryRecordDict[student.ID].SemesterHistoryItems)
                    {
                        // 當資料有疑問
                        if (shi.SchoolYear < 1 || shi.Semester < 1 || shi.GradeYear < 1)
                        {
                            errorList.Add(student);
                            continue;
                        }

                        // 檢查學期歷程是否有重複(學年度+學期+年級)
                        string key = shi.SchoolYear.ToString() + shi.Semester.ToString() + shi.GradeYear;
                        if (checkSame.Contains(key))
                        {
                            errorList.Add(student);
                            continue;
                        }
                        checkSame.Add(key);
                    }
                }
            }

            return(errorList);
        }
예제 #4
0
        void wizard_ImportPackage(object sender, SmartSchool.API.PlugIn.Import.ImportPackageEventArgs e)
        {
            //根據學生編號、學年度、學期組成主鍵
            List <string>                        keyList           = new List <string>();
            Dictionary <string, int>             schoolYearMapping = new Dictionary <string, int>();
            Dictionary <string, int>             semesterMapping   = new Dictionary <string, int>();
            Dictionary <string, string>          studentIDMapping  = new Dictionary <string, string>();
            Dictionary <string, List <RowData> > rowsMapping       = new Dictionary <string, List <RowData> >();
            //一個學生只會有一筆學期歷程
            Dictionary <string, JHSemesterHistoryRecord> studentSemesterHistory = new Dictionary <string, JHSemesterHistoryRecord>();

            //掃描每行資料,定出資料的PrimaryKey,並且將PrimaryKey對應到的資料寫成Dictionary
            foreach (RowData Row in e.Items)
            {
                int    schoolYear = int.Parse(Row["學年度"]);
                int    semester   = int.Parse(Row["學期"]);
                string studentID  = Row.ID;
                string key        = schoolYear + "^_^" + semester + "^_^" + studentID;

                if (!keyList.Contains(key))
                {
                    keyList.Add(key);
                    schoolYearMapping.Add(key, schoolYear);
                    semesterMapping.Add(key, semester);
                    studentIDMapping.Add(key, studentID);
                    rowsMapping.Add(key, new List <RowData>());
                }
                rowsMapping[key].Add(Row);
            }

            //一次取得學生學期歷程
            List <JHSemesterHistoryRecord> records = JHSemesterHistory.SelectByStudentIDs(studentIDMapping.Values.Distinct());

            #region 將學生現有學期歷程做快取
            foreach (JHSemesterHistoryRecord var in records)
            {
                studentSemesterHistory.Add(var.RefStudentID, var);
            }
            #endregion

            List <JHSemesterHistoryRecord> UpdateRecords = new List <JHSemesterHistoryRecord>();

            foreach (string key in keyList)
            {
                JHSemesterHistoryRecord record = studentSemesterHistory[studentIDMapping[key]];

                List <RowData> Rows = rowsMapping[key];

                if (record != null)
                {
                    for (int i = 0; i < Rows.Count; i++)
                    {
                        string StudentID      = Rows[i].ID;
                        string SchoolYear     = Rows[i]["學年度"];
                        string Semester       = Rows[i]["學期"];
                        string GradeYear      = Rows[i]["年級"];
                        string ClassName      = Rows[i].ContainsKey("當時班級")?Rows[i]["當時班級"]:string.Empty;
                        string SeatNo         = Rows[i].ContainsKey("當時座號")?Rows[i]["當時座號"]:string.Empty;
                        string TeacherName    = Rows[i].ContainsKey("當時班導師姓名")?Rows[i]["當時班導師姓名"]:string.Empty;
                        string SchoolDayCount = Rows[i].ContainsKey("上課天數")?Rows[i]["上課天數"]:string.Empty;

                        List <K12.Data.SemesterHistoryItem> Items = record.SemesterHistoryItems.Where(x => x.RefStudentID == StudentID && x.SchoolYear.ToString() == SchoolYear && x.Semester.ToString() == Semester).ToList();

                        if (Items.Count > 0)
                        {
                            Items[0].GradeYear = K12.Data.Int.Parse(GradeYear);
                            if (Rows[i].ContainsKey("當時班級"))
                            {
                                Items[0].ClassName = ClassName;
                            }
                            if (Rows[i].ContainsKey("當時座號"))
                            {
                                Items[0].SeatNo = K12.Data.Int.ParseAllowNull(SeatNo);
                            }
                            if (Rows[i].ContainsKey("當時班導師姓名"))
                            {
                                Items[0].Teacher = TeacherName;
                            }
                            if (Rows[i].ContainsKey("上課天數"))
                            {
                                Items[0].SchoolDayCount = K12.Data.Int.ParseAllowNull(SchoolDayCount);
                            }
                        }
                        else
                        {
                            K12.Data.SemesterHistoryItem Item = new K12.Data.SemesterHistoryItem();
                            Item.SchoolYear     = K12.Data.Int.Parse(SchoolYear);
                            Item.Semester       = K12.Data.Int.Parse(Semester);
                            Item.GradeYear      = K12.Data.Int.Parse(GradeYear);
                            Item.ClassName      = ClassName;
                            Item.SeatNo         = K12.Data.Int.ParseAllowNull(SeatNo);
                            Item.Teacher        = TeacherName;
                            Item.SchoolDayCount = K12.Data.Int.ParseAllowNull(SchoolDayCount);
                            record.SemesterHistoryItems.Add(Item);
                        }
                    }

                    UpdateRecords.Add(record);
                }
                else
                {
                    JHSemesterHistoryRecord newrecord = new JHSemesterHistoryRecord();

                    newrecord.RefStudentID = Rows[0].ID;

                    List <K12.Data.SemesterHistoryItem> Items = new List <K12.Data.SemesterHistoryItem>();

                    for (int i = 0; i < Rows.Count; i++)
                    {
                        string SchoolYear     = Rows[i]["學年度"];
                        string Semester       = Rows[i]["學期"];
                        string GradeYear      = Rows[i].ContainsKey("年級") ? Rows[i]["年級"] : string.Empty;
                        string ClassName      = Rows[i].ContainsKey("當時班級") ? Rows[i]["當時班級"] : string.Empty;
                        string SeatNo         = Rows[i].ContainsKey("當時座號") ? Rows[i]["當時座號"] : string.Empty;
                        string TeacherName    = Rows[i].ContainsKey("當時班導師姓名") ? Rows[i]["當時班導師姓名"] : string.Empty;
                        string SchoolDayCount = Rows[i].ContainsKey("上課天數") ? Rows[i]["上課天數"] : string.Empty;

                        K12.Data.SemesterHistoryItem Item = new K12.Data.SemesterHistoryItem();
                        Item.SchoolYear     = K12.Data.Int.Parse(SchoolYear);
                        Item.Semester       = K12.Data.Int.Parse(Semester);
                        Item.GradeYear      = K12.Data.Int.Parse(GradeYear);
                        Item.ClassName      = ClassName;
                        Item.SeatNo         = K12.Data.Int.ParseAllowNull(SeatNo);
                        Item.Teacher        = TeacherName;
                        Item.SchoolDayCount = K12.Data.Int.ParseAllowNull(SchoolDayCount);
                        Items.Add(Item);
                    }

                    newrecord.SemesterHistoryItems = Items;

                    UpdateRecords.Add(newrecord);
                }
            }

            if (UpdateRecords.Count > 0)
            {
                JHSemesterHistory.Update(UpdateRecords);
            }
        }
예제 #5
0
        // save
        private void SemesterHistoryDetail_SaveButtonClick(object sender, EventArgs e)
        {
            // 資料檢查
            foreach (DataGridViewRow row in dataGridViewX1.Rows)
            {
                if (row.IsNewRow)
                {
                    continue;
                }
                foreach (DataGridViewCell cell in row.Cells)
                {
                    if (cell.ErrorText != "")
                    {
                        MsgBox.Show("資料有疑問無法儲存,請檢查標紅色儲存格.", "儲存失敗", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                }
            }

            JHSchool.Data.JHSemesterHistoryRecord updateSemeHsitoryRec = new JHSchool.Data.JHSemesterHistoryRecord();

            updateSemeHsitoryRec.RefStudentID = PrimaryKey;

            foreach (DataGridViewRow row in dataGridViewX1.Rows)
            {
                int SchoolYear = 0, Semester = 0, GradeYear = 0, SchoolDayCount = 0, SeatNo = 0;

                if (row.IsNewRow)
                {
                    continue;
                }
                K12.Data.SemesterHistoryItem shi = new K12.Data.SemesterHistoryItem();

                if (row.Cells[colSchoolYear.Index] != null)
                {
                    int.TryParse("" + row.Cells[colSchoolYear.Index].Value, out SchoolYear);
                }

                if (row.Cells[colSemester.Index] != null)
                {
                    int.TryParse("" + row.Cells[colSemester.Index].Value, out Semester);
                }

                if (row.Cells[colGradeYear.Index] != null)
                {
                    int.TryParse("" + row.Cells[colGradeYear.Index].Value, out GradeYear);
                }

                if (row.Cells[colSchoolDayCount.Index] != null)
                {
                    int.TryParse("" + row.Cells[colSchoolDayCount.Index].Value, out SchoolDayCount);
                }

                if (row.Cells[colSeatNo.Index] != null)
                {
                    int.TryParse("" + row.Cells[colSeatNo.Index].Value, out SeatNo);
                }

                shi.SchoolYear = SchoolYear;
                shi.Semester   = Semester;
                shi.GradeYear  = GradeYear;
                if (row.Cells[colClassName.Index] != null)
                {
                    shi.ClassName = row.Cells[colClassName.Index].Value + "";
                }

                if (SeatNo == 0)
                {
                    shi.SeatNo = null;
                }
                else
                {
                    shi.SeatNo = SeatNo;
                }

                if (row.Cells[colTeacherName.Index] != null)
                {
                    shi.Teacher = row.Cells[colTeacherName.Index].Value + "";
                }

                if (SchoolDayCount == 0)
                {
                    shi.SchoolDayCount = null;
                }
                else
                {
                    shi.SchoolDayCount = SchoolDayCount;
                }

                updateSemeHsitoryRec.SemesterHistoryItems.Add(shi);

                string logIdxStr = shi.SchoolYear + "" + shi.Semester + "_";
                prlp.SetAfterSaveText(logIdxStr + "學年度", shi.SchoolYear + "");
                prlp.SetAfterSaveText(logIdxStr + "學期", shi.Semester + "");
                prlp.SetAfterSaveText(logIdxStr + "年級", shi.GradeYear + "");
                prlp.SetAfterSaveText(logIdxStr + "班級", shi.ClassName);
                prlp.SetAfterSaveText(logIdxStr + "座號", SeatNo + "");
                prlp.SetAfterSaveText(logIdxStr + "班導師", shi.Teacher);
                prlp.SetAfterSaveText(logIdxStr + "上課天數", SchoolDayCount + "");
            }

            JHSchool.Data.JHSemesterHistory.Update(updateSemeHsitoryRec);


            prlp.SetActionBy("學籍", "學生學期對照表");
            prlp.SetAction("修改學生學期對照表");
            JHStudentRecord studRec = JHStudent.SelectByID(PrimaryKey);

            prlp.SetDescTitle("學生姓名:" + studRec.Name + ",學號:" + studRec.StudentNumber + ",");

            prlp.SaveLog("", "", "student", PrimaryKey);

            this.CancelButtonVisible = false;
            this.SaveButtonVisible   = false;
        }
        private void _historyWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            progressBar.Value = 100;

            if (e.Error != null)
            {
                MsgBox.Show("檢查學期歷程時發生錯誤。" + e.Error.Message);
                return;
            }

            if (_errorList.Count > 0)
            {
                btnExit.Enabled = true;

                JHSchool.Evaluation.Calculation_for_JHEvaluation.ScoreCalculation.ErrorViewer viewer = new JHSchool.Evaluation.Calculation_for_JHEvaluation.ScoreCalculation.ErrorViewer();
                viewer.SetHeader("學生");
                foreach (StudentRecord student in _errorList)
                {
                    viewer.SetMessage(student, new List <string>(new string[] { "學期歷程不完整" }));
                }
                viewer.ShowDialog();
                pic_loading.Visible = false;
                return;
            }
            else
            {
                // 加入這段主要在處理當學期還沒有產生學期歷程,資料可以判斷
                UIConfig._StudentSHistoryRecDict.Clear();
                Dictionary <string, int> studGradeYearDict = new Dictionary <string, int>();

                // 取得學生ID
                List <string> studIDs = (from data in _students select data.ID).Distinct().ToList();

                foreach (JHStudentRecord stud in JHStudent.SelectByIDs(studIDs))
                {
                    if (stud.Class != null)
                    {
                        if (stud.Class.GradeYear.HasValue)
                        {
                            if (!studGradeYearDict.ContainsKey(stud.ID))
                            {
                                studGradeYearDict.Add(stud.ID, stud.Class.GradeYear.Value);
                            }
                        }
                    }
                }
                bool checkInsShi = false;
                // 取得學生學期歷程,並加入學生學習歷程Cache
                foreach (JHSemesterHistoryRecord rec in JHSemesterHistory.SelectByStudentIDs(studIDs))
                {
                    checkInsShi = true;
                    K12.Data.SemesterHistoryItem shi = new K12.Data.SemesterHistoryItem();
                    shi.SchoolYear = UIConfig._UserSetSHSchoolYear;
                    shi.Semester   = UIConfig._UserSetSHSemester;
                    if (studGradeYearDict.ContainsKey(rec.RefStudentID))
                    {
                        shi.GradeYear = studGradeYearDict[rec.RefStudentID];
                    }

                    foreach (K12.Data.SemesterHistoryItem shiItem in rec.SemesterHistoryItems)
                    {
                        if (shiItem.SchoolYear == shi.SchoolYear && shiItem.Semester == shi.Semester)
                        {
                            checkInsShi = false;
                        }
                    }
                    if (checkInsShi)
                    {
                        rec.SemesterHistoryItems.Add(shi);
                    }

                    if (!UIConfig._StudentSHistoryRecDict.ContainsKey(rec.RefStudentID))
                    {
                        UIConfig._StudentSHistoryRecDict.Add(rec.RefStudentID, rec);
                    }
                }


                lblProgress.Text = "畢業資格審查中…";
                FISCA.LogAgent.ApplicationLog.Log("成績系統.畢業資格審查", "畢業資格審查", "進行畢業資格審查");
                _inspectWorker.RunWorkerAsync();
            }
        }
예제 #7
0
        /// <summary>
        /// 儲存學習歷程項目
        /// </summary>
        /// <param name="SemesterHistoryItemEntityList"></param>
        public static void SetSemesterHistoryItemEntityList(List <SemesterHistoryItemEntity> SemesterHistoryItemEntityList, List <string> StudntIDList)
        {
            Dictionary <string, JHSemesterHistoryRecord> JHSemesterHistoryRecordDic = new Dictionary <string, JHSemesterHistoryRecord>();

            foreach (JHSemesterHistoryRecord shr in JHSemesterHistory.SelectByStudentIDs(StudntIDList))
            {
                JHSemesterHistoryRecordDic.Add(shr.RefStudentID, shr);
            }

            List <JHSemesterHistoryRecord> UpadteRecList = new List <JHSemesterHistoryRecord>();

            foreach (SemesterHistoryItemEntity shie in SemesterHistoryItemEntityList)
            {
                K12.Data.SemesterHistoryItem shi = new K12.Data.SemesterHistoryItem();
                shi.ClassName      = shie.ClassName;
                shi.GradeYear      = shie.GradeYear;
                shi.SchoolDayCount = shie.SchoolDayCount;
                shi.SchoolYear     = shie.Schoolyear;
                shi.SeatNo         = shie.SeatNo;
                shi.Semester       = shie.Semester;
                shi.Teacher        = shie.TeacherName;


                if (JHSemesterHistoryRecordDic.ContainsKey(shie.StudentID))
                {
                    // 完全沒學習歷程
                    if (shie.HasSemsterHistoryRec == false && shie.EditMode == SemesterHistoryItemEntity._EditMode.Insert)
                    {
                        JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems.Add(shi);
                    }

                    // 有學習歷程
                    if (shie.HasSemsterHistoryRec)
                    {
                        K12.Data.SemesterHistoryItem rmItem = null;
                        foreach (K12.Data.SemesterHistoryItem sh in JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems)
                        {
                            // 檢查當有同學年度學期移除
                            if (sh.SchoolYear == shi.SchoolYear && sh.Semester == shi.Semester)
                            {
                                rmItem = sh;
                            }
                        }

                        // 先移除舊的
                        if (rmItem != null)
                        {
                            JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems.Remove(rmItem);
                        }


                        if (shie.EditMode == SemesterHistoryItemEntity._EditMode.Insert)
                        {
                            JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems.Add(shi);
                        }

                        if (shie.EditMode == SemesterHistoryItemEntity._EditMode.Update)
                        {
                            JHSemesterHistoryRecordDic[shie.StudentID].SemesterHistoryItems.Add(shi);
                        }


                        if (shie.EditMode == SemesterHistoryItemEntity._EditMode.Delete)
                        {
                        }
                    }
                    UpadteRecList.Add(JHSemesterHistoryRecordDic[shie.StudentID]);
                }
            }
            JHSemesterHistory.Update(UpadteRecList);
        }
        private void History_worker_DoWork(object sender, DoWorkEventArgs e)
        {
            bool error = false;

            List <StudentRecord> students    = _students;
            List <string>        student_ids = new List <string>();

            foreach (StudentRecord each in students)
            {
                student_ids.Add(each.ID);
            }
            int total = students.Count;
            int count = 0;

            #region 檢查學期歷程
            _viewer.Clear();
            _viewer.SetHeader("學生");

            Dictionary <string, JHSchool.Data.JHSemesterHistoryRecord> studentHistories = new Dictionary <string, JHSchool.Data.JHSemesterHistoryRecord>();
            foreach (JHSchool.Data.JHSemesterHistoryRecord record in JHSchool.Data.JHSemesterHistory.SelectByStudentIDs(student_ids))
            {
                if (!studentHistories.ContainsKey(record.RefStudentID))
                {
                    studentHistories.Add(record.RefStudentID, record);
                }
            }

            _studentHistoryDict = new Dictionary <string, JHSchool.Data.JHSemesterHistoryRecord>();
            //SemesterHistory.Instance.SyncDataBackground(student_ids);
            //_studentHistoryEditors = new Dictionary<string, SemesterHistoryRecordEditor>();

            _gradeYears = new Dictionary <string, int>();

            foreach (StudentRecord each in students)
            {
                count++;

                bool hasSemesterHistory = false;
                foreach (K12.Data.SemesterHistoryItem item in studentHistories[each.ID].SemesterHistoryItems)
                {
                    if (item.SchoolYear == intSchoolYear.Value && item.Semester == intSemester.Value)
                    {
                        if (!_gradeYears.ContainsKey(each.ID))
                        {
                            _gradeYears.Add(each.ID, item.GradeYear);
                        }

                        if (_type.Equals("EduAdmin"))
                        {
                            item.ClassName = (each.Class != null) ? each.Class.Name : "";
                            int i;
                            item.SeatNo         = int.TryParse(each.SeatNo, out i) ? (int?)i : null;
                            item.Teacher        = (each.Class != null) ? ((each.Class.Teacher != null) ? each.Class.Teacher.Name : "") : "";
                            item.SchoolDayCount = (_schoolDayMapping.ContainsKey(item.GradeYear)) ? (int?)_schoolDayMapping[item.GradeYear] : null;
                            if (!_studentHistoryDict.ContainsKey(each.ID))
                            {
                                _studentHistoryDict.Add(each.ID, studentHistories[each.ID]);
                            }
                        }

                        hasSemesterHistory = true;
                        break;
                    }
                }

                if (!hasSemesterHistory)
                {
                    if (_type.Equals("EduAdmin"))
                    {
                        K12.Data.SemesterHistoryItem item = new K12.Data.SemesterHistoryItem();
                        item.SchoolYear = intSchoolYear.Value;
                        item.Semester   = intSemester.Value;
                        item.GradeYear  = intGradeYear.Value;
                        item.ClassName  = (each.Class != null) ? each.Class.Name : "";
                        int i;
                        item.SeatNo         = int.TryParse(each.SeatNo, out i) ? (int?)i : null;
                        item.Teacher        = (each.Class != null) ? ((each.Class.Teacher != null) ? each.Class.Teacher.Name : "") : "";
                        item.SchoolDayCount = (_schoolDayMapping.ContainsKey(item.GradeYear)) ? (int?)_schoolDayMapping[item.GradeYear] : null;
                        studentHistories[each.ID].SemesterHistoryItems.Add(item);
                        if (!_studentHistoryDict.ContainsKey(each.ID))
                        {
                            _studentHistoryDict.Add(each.ID, studentHistories[each.ID]);
                        }
                    }
                    error = true;
                    _viewer.SetMessage(each, new List <string>(new string[] { "缺少學期歷程資訊" }));
                }

                _history_worker.ReportProgress((int)((double)count * 100 / (double)total), "檢查學期歷程中…");
            }

            if (error)
            {
                e.Result = error;
                return;
            }

            #endregion

            e.Result = "OK";
        }
예제 #9
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            SemesterHistoryRecord.SemesterHistoryItems.Clear();

            List <string> checkData = new List <string>();

            foreach (DataGridViewRow dr in dgSemestrHistory.Rows)
            {
                if (dr.IsNewRow)
                {
                    continue;
                }

                if (dr.Cells["學年度"].Value == null || dr.Cells["學期"].Value == null || dr.Cells["年級"].Value == null)
                {
                    MessageBox.Show("資料輸入不完整");
                    return;
                }

                string str = "" + dr.Cells["學年度"].Value + dr.Cells["學期"].Value + dr.Cells["年級"].Value;
                if (checkData.Contains(str))
                {
                    MessageBox.Show("學年度+學期+年級有重複");
                    return;
                }
                else
                {
                    checkData.Add(str);
                }
            }


            foreach (DataGridViewRow dr in dgSemestrHistory.Rows)
            {
                if (dr.IsNewRow)
                {
                    continue;
                }

                int tmpInt;
                K12.Data.SemesterHistoryItem sshe = new K12.Data.SemesterHistoryItem();
                tmpInt = 0;
                int.TryParse(dr.Cells["學年度"].Value.ToString(), out tmpInt);
                sshe.SchoolYear = tmpInt;

                tmpInt = 0;
                int.TryParse(dr.Cells["學期"].Value.ToString(), out tmpInt);
                sshe.Semester = tmpInt;

                tmpInt = 0;
                int.TryParse(dr.Cells["年級"].Value.ToString(), out tmpInt);
                sshe.GradeYear = tmpInt;
                if (dr.Cells["班級"].Value != null)
                {
                    sshe.ClassName = dr.Cells["班級"].Value.ToString();
                }

                if (dr.Cells["班導師"].Value != null)
                {
                    sshe.Teacher = dr.Cells["班導師"].Value.ToString();
                }

                if (dr.Cells["座號"].Value != null)
                {
                    int seatNo;
                    if (int.TryParse(dr.Cells["座號"].Value.ToString(), out seatNo))
                    {
                        sshe.SeatNo = seatNo;
                    }
                }
                if (dr.Cells["上課天數"].Value != null)
                {
                    int DayCount;
                    if (int.TryParse(dr.Cells["上課天數"].Value.ToString(), out DayCount))
                    {
                        sshe.SchoolDayCount = DayCount;
                    }
                }

                SemesterHistoryRecord.SemesterHistoryItems.Add(sshe);
            }

            // 儲存學期歷程
            JHSchool.Data.JHSemesterHistory.Update(SemesterHistoryRecord);

            // log
            JHSchool.PermRecLogProcess prlp = new JHSchool.PermRecLogProcess();
            prlp.SaveLog("學生.轉入異動", "新增", "新增 學生:" + studRec.Name + " 學期歷程資料..");

            this.Close();
        }