public MemoryStream GenerateCSV() { MemoryStream outStream = new MemoryStream(); StreamWriter writer = new StreamWriter(outStream); // Headings writer.Write("School_id" + delimiter); writer.Write("Section_id" + delimiter); writer.Write("Student_id" + delimiter); writer.Write(Environment.NewLine); StudentClassEnrolmentRepository studentClassEnrolmentRepo = new StudentClassEnrolmentRepository(_dbConnectionString); List <StudentClassEnrolment> studentEnrolments = studentClassEnrolmentRepo.GetAll(); foreach (StudentClassEnrolment sa in studentEnrolments) { writer.Write(stringContainer + sa.Class.School.DAN + stringContainer + delimiter); writer.Write(stringContainer + sa.Class.iClassID + stringContainer + delimiter); writer.Write(stringContainer + sa.Student.StudentNumber + stringContainer + delimiter); writer.Write(Environment.NewLine); } writer.Flush(); outStream.Flush(); return(outStream); }
// This file contains: // Student history marks // Student currently enroled classes that have a credit public MemoryStream GenerateCSV() { MemoryStream outStream = new MemoryStream(); StreamWriter writer = new StreamWriter(outStream); // Headings writer.Write("StudentID" + delimiter); writer.Write("CourseCode" + delimiter); writer.Write("CourseName" + delimiter); writer.Write("GradeLevel" + delimiter); writer.Write("GradeMark" + delimiter); writer.Write("CreditValue" + delimiter); writer.Write("DateCourseComplete" + delimiter); writer.Write("HSCourse" + delimiter); writer.Write("CoursePart"); writer.Write(Environment.NewLine); StudentRepository studentRepo = new StudentRepository(_dbConnectionString); StudentClassEnrolmentRepository enrolmentRepo = new StudentClassEnrolmentRepository(_dbConnectionString); StudentHistoryMarkRepository historyMarkRepo = new StudentHistoryMarkRepository(_dbConnectionString); // Load all enrolments into a dictionary for easier parsing Dictionary <int, List <StudentClassEnrolment> > enrolmentsByStudent = new Dictionary <int, List <StudentClassEnrolment> >(); foreach (StudentClassEnrolment e in enrolmentRepo.GetAll()) { if (!enrolmentsByStudent.ContainsKey(e.Student.iStudentID)) { enrolmentsByStudent.Add(e.Student.iStudentID, new List <StudentClassEnrolment>()); } enrolmentsByStudent[e.Student.iStudentID].Add(e); } foreach (Student student in studentRepo.GetAll().Where(s => gradeList.Contains(s.Grade))) { // ************************************ // History marks // ************************************ List <StudentHistoryMark> studentHistoryMarks = historyMarkRepo.GetForStudent(student).Where(x => x.CreditsPossible > 0).ToList(); if (studentHistoryMarks.Count > 0) { foreach (StudentHistoryMark mark in studentHistoryMarks) { writer.Write(stringContainer + student.StudentNumber + stringContainer + delimiter); writer.Write(stringContainer + mark.CourseCode + stringContainer + delimiter); writer.Write(stringContainer + mark.CourseName + stringContainer + delimiter); writer.Write(stringContainer + mark.Grade + stringContainer + delimiter); writer.Write(stringContainer + mark.NumericMark + stringContainer + delimiter); // In progress courses have 0 grades writer.Write(stringContainer + mark.CreditsEarned + stringContainer + delimiter); writer.Write(stringContainer + mark.CompletionDate.ToString("yyyy-MM-dd") + stringContainer + delimiter); writer.Write(stringContainer + ((mark.CreditsEarned > 0) ? 1 : 0) + stringContainer + delimiter); writer.Write(stringContainer + "" + stringContainer); // This column isn't really used writer.Write(Environment.NewLine); } } // ************************************ // Currently enrolled classes // ************************************ if (enrolmentsByStudent.ContainsKey(student.iStudentID)) { foreach (StudentClassEnrolment enrolment in enrolmentsByStudent[student.iStudentID].Where(e => e.Class.Course.Credits > 0)) { writer.Write(stringContainer + student.StudentNumber + stringContainer + delimiter); writer.Write(stringContainer + enrolment.Class.Course.CourseCode + stringContainer + delimiter); writer.Write(stringContainer + enrolment.Class.Course.Name + stringContainer + delimiter); writer.Write(stringContainer + student.Grade + stringContainer + delimiter); writer.Write(stringContainer + "0" + stringContainer + delimiter); // In progress courses have 0 grades writer.Write(stringContainer + enrolment.Class.Course.Credits + stringContainer + delimiter); writer.Write(stringContainer + "" + stringContainer + delimiter); // In progress courses have empty dates writer.Write(stringContainer + ((enrolment.Class.Course.Credits > 0) ? 1 : 0) + stringContainer + delimiter); writer.Write(stringContainer + "" + stringContainer); // This column isn't really used writer.Write(Environment.NewLine); } } } writer.Flush(); outStream.Flush(); return(outStream); }
public MemoryStream GenerateCSV() { MemoryStream outStream = new MemoryStream(); StreamWriter writer = new StreamWriter(outStream); // Headings writer.Write("School_id" + delimiter); writer.Write("Section_id" + delimiter); writer.Write("Teacher_id" + delimiter); writer.Write("Teacher_2_id" + delimiter); writer.Write("Teacher_3_id" + delimiter); writer.Write("Teacher_4_id" + delimiter); writer.Write("Teacher_5_id" + delimiter); writer.Write("Teacher_6_id" + delimiter); writer.Write("Teacher_7_id" + delimiter); writer.Write("Teacher_8_id" + delimiter); writer.Write("Teacher_9_id" + delimiter); writer.Write("Teacher_10_id" + delimiter); writer.Write("Name" + delimiter); writer.Write("Section_number" + delimiter); writer.Write("Grade" + delimiter); writer.Write("Course_name" + delimiter); writer.Write("Course_number" + delimiter); writer.Write("Course_description" + delimiter); writer.Write("Period" + delimiter); writer.Write("Subject" + delimiter); writer.Write("Term_name" + delimiter); writer.Write("Term_start" + delimiter); writer.Write("Term_end" + delimiter); writer.Write(Environment.NewLine); SchoolClassRepository screpo = new SchoolClassRepository(_dbConnectionString); List <SchoolClass> sections = screpo.GetAll(); TeacherAssignmentRepository teacherAssignmentRepo = new TeacherAssignmentRepository(_dbConnectionString); List <TeacherAssignment> allTeachingAssignments = teacherAssignmentRepo.GetAll(); // Sort teacher assignments into a dictionary for easier consumption // Only send up classes that have teachers assigned Dictionary <int, List <TeacherAssignment> > assignmentsByClassID = new Dictionary <int, List <TeacherAssignment> >(); // Don't send empty classes, so get enrolment counts for each class StudentClassEnrolmentRepository enrolmentRepo = new StudentClassEnrolmentRepository(_dbConnectionString); Dictionary <int, int> enrolmentCountsByClassID = enrolmentRepo.GetEnrolmentCountsByClassID(); foreach (TeacherAssignment ta in allTeachingAssignments) { if (ta.Class != null) { if (!assignmentsByClassID.ContainsKey(ta.Class.iClassID)) { assignmentsByClassID.Add(ta.Class.iClassID, new List <TeacherAssignment>()); } if (ta.Teacher.TeachingCertificateNumber.Length > 0) { assignmentsByClassID[ta.Class.iClassID].Add(ta); } } } foreach (SchoolClass sc in sections) { if (enrolmentCountsByClassID.ContainsKey(sc.iClassID)) { if (enrolmentCountsByClassID[sc.iClassID] > 0) { if (assignmentsByClassID.ContainsKey(sc.iClassID)) { List <TeacherAssignment> thisClassAssignments = assignmentsByClassID[sc.iClassID]; if (thisClassAssignments.Count > 0) { writer.Write(stringContainer + sc.School.DAN + stringContainer + delimiter); // School id writer.Write(stringContainer + sc.iClassID + stringContainer + delimiter); // Section id writer.Write(stringContainer + (thisClassAssignments.Count >= 1 ? thisClassAssignments[0].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 1 writer.Write(stringContainer + (thisClassAssignments.Count >= 2 ? thisClassAssignments[1].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 2 writer.Write(stringContainer + (thisClassAssignments.Count >= 3 ? thisClassAssignments[2].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 3 writer.Write(stringContainer + (thisClassAssignments.Count >= 4 ? thisClassAssignments[3].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 4 writer.Write(stringContainer + (thisClassAssignments.Count >= 5 ? thisClassAssignments[4].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 5 writer.Write(stringContainer + (thisClassAssignments.Count >= 6 ? thisClassAssignments[5].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 6 writer.Write(stringContainer + (thisClassAssignments.Count >= 7 ? thisClassAssignments[6].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 7 writer.Write(stringContainer + (thisClassAssignments.Count >= 8 ? thisClassAssignments[7].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 8 writer.Write(stringContainer + (thisClassAssignments.Count >= 9 ? thisClassAssignments[8].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 9 writer.Write(stringContainer + (thisClassAssignments.Count >= 10 ? thisClassAssignments[9].Teacher.TeachingCertificateNumber.ToString() : string.Empty) + stringContainer + delimiter); // Teacher 10 writer.Write(stringContainer + sc.Name + stringContainer + delimiter); // Name writer.Write(stringContainer + sc.Section + stringContainer + delimiter); // Section number writer.Write(stringContainer + "" + stringContainer + delimiter); // Grade writer.Write(stringContainer + sc.Course.Name + stringContainer + delimiter); // Course Name writer.Write(stringContainer + sc.Course.CourseCode + stringContainer + delimiter); // Course Number writer.Write(stringContainer + "" + stringContainer + delimiter); // Course Description writer.Write(stringContainer + "" + stringContainer + delimiter); // Period writer.Write(stringContainer + "" + stringContainer + delimiter); // Subject writer.Write(stringContainer + "" + stringContainer + delimiter); // Term name writer.Write(stringContainer + "" + stringContainer + delimiter); // Term start writer.Write(stringContainer + "" + stringContainer + delimiter); // Term end writer.Write(Environment.NewLine); } } } } } writer.Flush(); outStream.Flush(); return(outStream); }