Пример #1
0
        public static List<Student> GetGrade(string SchoolYear,List<string> StudentIDs,bool IsConvertScore)
        {
            Dictionary<string, Student> Students = new Dictionary<string, Student>();

            try
            {
                string strStudentSQL = "select name,english_name,seat_no,class_name,student.id from student left outer join class on class.id=student.ref_class_id where student.id in (" + string.Join(",", StudentIDs.ToArray()) + ")";

                string strScoreSQL = "select ref_student_id,score_info,school_year,semester from sems_subj_score where ref_student_id in (" + string.Join(",", StudentIDs.ToArray()) + ")";

                QueryHelper QueryHelper = Utility.QueryHelper;

                #region 取得學生資料
                DataTable tblResult = QueryHelper.Select(strStudentSQL);

                foreach (DataRow row in tblResult.Rows)
                {
                    string StudentID = row.Field<string>("id");

                    if (!Students.ContainsKey(StudentID))
                    {
                        Student vStudent = new Student();

                        vStudent.FillBasic(row, SchoolYear);

                        Students.Add(vStudent.StudentID, vStudent);
                    }
                }
                #endregion

                #region 取得成績資料
                tblResult = QueryHelper.Select(strScoreSQL);

                foreach (DataRow row in tblResult.Rows)
                {
                    string StudentID = row.Field<string>("ref_student_id");

                    Students[StudentID].FillScore(row,IsConvertScore);
                }
                #endregion

                #region 取得獎懲資料

                List<DisciplineRecord> DisciplineRecords = Discipline.SelectByStudentIDs(StudentIDs);

                DisciplineRecords = DisciplineRecords.FindAll(x => ("" + x.SchoolYear).Equals(SchoolYear));

                foreach (DisciplineRecord DisciplineRecord in DisciplineRecords)
                {
                    string StudentID = DisciplineRecord.RefStudentID;

                    Students[StudentID].FillDiscipline(DisciplineRecord);
                }
                #endregion

                #region 取得缺曠資料
                List<int> SchoolYears = new List<int>();

                SchoolYears.Add(int.Parse(SchoolYear));

                List<AttendanceRecord> AttendanceRecords = Attendance.Select(StudentIDs, null, null, null,SchoolYears,null);

                foreach(AttendanceRecord AttendanceRecord in AttendanceRecords)
                {
                    string StudentID = AttendanceRecord.RefStudentID;

                    Students[StudentID].FillAttendance(AttendanceRecord);
                }
                #endregion

                #region 取得學期曆程

                List<SemesterHistoryRecord> SemesterRecords = SemesterHistory.SelectByStudentIDs(StudentIDs);

                foreach (SemesterHistoryRecord SemesterRecord in SemesterRecords)
                {
                    string StudentID = SemesterRecord.RefStudentID;

                    Students[StudentID].FillSemesterHistory(SemesterRecord);
                }
                #endregion
            }
            catch (Exception ve)
            {
                MessageBox.Show(ve.Message);
            }

            return Students.Values.ToList();
        }