コード例 #1
0
        public StudentSubjectMarksDto GetTestMarkBottomStudentSubjectHistory(Guid studentTermRegisterId, string subjectCode)
        {
            StudentSubjectMarksDto studentSubjectMarksDto = new StudentSubjectMarksDto();

            bool dbFlag = false;

            var studentTermRegister = _uofRepository.StudentTermRegisterRepository.GetByEnrollemtID(studentTermRegisterId, ref dbFlag);

            if (studentTermRegister == null)
            {
                return(studentSubjectMarksDto);
            }

            var student = _uofRepository.StudentRepository.GetStudentById(studentTermRegister.StudentID, ref dbFlag);

            if (student == null)
            {
                return(studentSubjectMarksDto);
            }

            var subject = _uofRepository.SubjectRepository.GetSubjectByCode(subjectCode, student.SchoolID, ref dbFlag);

            if (subject == null)
            {
                return(studentSubjectMarksDto);
            }

            studentSubjectMarksDto.PercentageAscendingByDate = new List <StudentSubjectMarksByDateDto>();

            var marks = _uofRepository.TestMarkRepository.GetListTestMarksStudentIDAndSubjectIDLatest100((Guid)student.StudentID, (Guid)subject.SubjectID, ref dbFlag)?.OrderByDescending(c => c.TestDateCreated)?.ToList() ?? new List <TestMarkDto>();

            if (marks == null)
            {
                return(studentSubjectMarksDto);
            }

            foreach (var testMark in marks)
            {
                studentSubjectMarksDto.PercentageAscendingByDate.Add(new StudentSubjectMarksByDateDto()
                {
                    Mark = testMark.MarkPercentage,
                    Date = testMark.TestDateCreated
                });
            }

            studentSubjectMarksDto.PercentageAscendingByDate = studentSubjectMarksDto.PercentageAscendingByDate.ToSetPositiveOrNegativeExtensionMarkDateValue();

            studentSubjectMarksDto.PercentageAscendingByDate = studentSubjectMarksDto.PercentageAscendingByDate.OrderBy(c => c.Date).ToList();
            return(studentSubjectMarksDto);
        }
コード例 #2
0
        public List <StudentSubjectMarksDto> GetStudentMarkExamHistoryMarksListByRegNumberAndSchoolID(string regNumber, Guid schoolID)
        {
            bool dbFlag = false;

            var student = _uofRepository.StudentRepository.GetStudentByRegNumber(regNumber, schoolID, ref dbFlag);

            if (student == null)
            {
                return(null);
            }

            var marks = _uofRepository.ExamRepository.GetListExamByStudentId((Guid)student.StudentID, ref dbFlag) ?? new List <ExamDto>();

            if (marks == null | marks?.Count() <= 0)
            {
                return(null);
            }

            List <StudentSubjectMarksDto> studentSubjectMarksDtos = new List <StudentSubjectMarksDto>();

            var subjects = marks.Select(c => new { Code = c.SubjectCode, Name = c.SubjectName }).Distinct();

            foreach (var su in subjects)
            {
                StudentSubjectMarksDto studentSubjectMarksDto = new StudentSubjectMarksDto();
                studentSubjectMarksDto.SubjectCode = su.Code;
                studentSubjectMarksDto.SubjectName = su.Name;
                studentSubjectMarksDto.PercentageAscendingByDate = new List <StudentSubjectMarksByDateDto>();

                var myMarks = marks.Where(c => c.SubjectCode == su.Code);

                if (myMarks == null | myMarks?.Count() <= 0)
                {
                    return(null);
                }
                foreach (var testMark in myMarks)
                {
                    studentSubjectMarksDto.PercentageAscendingByDate.Add(new StudentSubjectMarksByDateDto()
                    {
                        Mark = testMark.Mark,
                        Date = testMark.EndOfTermDate
                    });
                }
                studentSubjectMarksDto.PercentageAscendingByDate = studentSubjectMarksDto.PercentageAscendingByDate.ToSetPositiveOrNegativeExtensionMarkDateValue();
                studentSubjectMarksDtos.Add(studentSubjectMarksDto);
            }
            return(studentSubjectMarksDtos);
        }
コード例 #3
0
        public StudentSubjectMarksDto GetStudentMarkExamHistoryMarksListByRegNumberAndSchoolIDAndSubjectCode(string regNumber, string subjectCode, Guid schoolID)
        {
            bool dbFlag = false;

            var student = _uofRepository.StudentRepository.GetStudentByRegNumber(regNumber, schoolID, ref dbFlag);

            if (student == null)
            {
                return(null);
            }


            var subject = _uofRepository.SubjectRepository.GetSubjectByCode(subjectCode, schoolID, ref dbFlag);

            if (subject == null)
            {
                return(null);
            }


            var marks = _uofRepository.ExamRepository.GetListExamByStudentIdAndSubjectCode(schoolID, (Guid)student.StudentID, subjectCode, ref dbFlag) ?? new List <ExamDto>();

            if (marks == null | marks?.Count() <= 0)
            {
                return(null);
            }

            StudentSubjectMarksDto studentSubjectMarksDto = new StudentSubjectMarksDto();

            studentSubjectMarksDto.SubjectCode = subject.SubjectCode;
            studentSubjectMarksDto.SubjectName = subject.SubjectName;
            studentSubjectMarksDto.PercentageAscendingByDate = new List <StudentSubjectMarksByDateDto>();


            foreach (var testMark in marks)
            {
                studentSubjectMarksDto.PercentageAscendingByDate.Add(new StudentSubjectMarksByDateDto()
                {
                    Mark = testMark.Mark,
                    Date = testMark.EndOfTermDate
                });
            }
            studentSubjectMarksDto.PercentageAscendingByDate = studentSubjectMarksDto.PercentageAscendingByDate.ToSetPositiveOrNegativeExtensionMarkDateValue();

            return(studentSubjectMarksDto);
        }
コード例 #4
0
        public StudentSubjectMarksDto GetStudentMarksListByCurrentTermAndStudentTermRegistrationAndSubjectCode(Guid studentTermRegistrationId, string subjectCode)
        {
            StudentSubjectMarksDto studentSubjectMarksDto = new StudentSubjectMarksDto();

            bool dbFlag        = false;
            var  studetTermReg = _uofRepository.StudentTermRegisterRepository.GetByEnrollemtID(studentTermRegistrationId, ref dbFlag);

            if (studetTermReg == null)
            {
                return(studentSubjectMarksDto);
            }

            var student = _uofRepository.StudentRepository.GetStudentById(studetTermReg.StudentID, ref dbFlag);

            if (student == null)
            {
                return(studentSubjectMarksDto);
            }

            var subject = _uofRepository.SubjectRepository.GetSubjectByCode(subjectCode, student.SchoolID, ref dbFlag);

            if (subject == null)
            {
                return(studentSubjectMarksDto);
            }

            var marks = _uofRepository.ExamRepository.GetListExamByStudentIdAndSubjectCode(student.SchoolID, (Guid)student.StudentID, subjectCode, ref dbFlag) ?? new List <ExamDto>();

            if (marks == null)
            {
                return(studentSubjectMarksDto);
            }

            foreach (var testMark in marks)
            {
                studentSubjectMarksDto.PercentageAscendingByDate.Add(new StudentSubjectMarksByDateDto()
                {
                    Mark = testMark.Mark,
                    Date = testMark.EndOfTermDate
                });
            }

            studentSubjectMarksDto.PercentageAscendingByDate.ToSetPositiveOrNegativeExtensionMarkDateValue();

            return(studentSubjectMarksDto);
        }
コード例 #5
0
        public DataTable GetClassTestAverages(Guid classId, Guid termId)
        {
            bool dbFlag   = false;
            var  classObj = _uofRepository.ClassRepository.GetClassByID(classId, ref dbFlag);

            var termObj = _uofRepository.TermRepository.GetByID(termId, ref dbFlag);


            var tests = _uofRepository.TestMarkRepository.GetListTestMarksByClassIdAndTermID(classId, termId, ref dbFlag);



            var uniqueStudents    = tests.Select(c => c.RegNumber).Distinct();
            var uniqueSubjectCode = tests.Select(c => c.SubjectCode).Distinct();


            DataTable finalScoreSheet = new DataTable();

            finalScoreSheet.Columns.Add("RegNumber");
            finalScoreSheet.Columns.Add("StudentName");
            finalScoreSheet.Columns.Add("ClassName");
            finalScoreSheet.Columns.Add("TotalAverage");
            finalScoreSheet.Columns.Add("ListOfTests", typeof(List <StudentSubjectMarksDto>));

            foreach (var subject in uniqueSubjectCode)
            {
                finalScoreSheet.Columns.Add("SubCode_" + subject);
            }

            foreach (var regNumber in uniqueStudents)
            {
                var student = tests.FirstOrDefault(c => c.RegNumber == regNumber);

                DataRow row = finalScoreSheet.NewRow();
                row["RegNumber"]   = student.RegNumber;
                row["StudentName"] = student.FullName;
                row["ClassName"]   = student.ClassName;

                var studentSubjectList = tests.Where(c => c.RegNumber == student.RegNumber).ToList();
                if (studentSubjectList == null)
                {
                    row["TotalAverage"] = 0;
                    finalScoreSheet.Rows.Add(row);
                    continue;
                }

                var uniqueStudentSubject = studentSubjectList.Select(c => new { SubjectCode = c.SubjectCode, SubjectName = c.SubjectName }).Distinct();
                if (uniqueStudentSubject == null)
                {
                    row["TotalAverage"] = 0;
                    finalScoreSheet.Rows.Add(row);
                    continue;
                }

                List <StudentSubjectMarksDto> studentSubjectMarksDtos = new List <StudentSubjectMarksDto>();
                List <int> totalAverage = new List <int>();
                decimal    totalWritten = 0;

                foreach (var studentSubject in uniqueStudentSubject)
                {
                    StudentSubjectMarksDto studentSubjectMarksDto = new StudentSubjectMarksDto();
                    studentSubjectMarksDto.SubjectCode = studentSubject.SubjectCode;
                    studentSubjectMarksDto.SubjectName = studentSubject.SubjectName;
                    studentSubjectMarksDto.PercentageAscendingByDate = new List <StudentSubjectMarksByDateDto>();

                    var subjectsMarks = studentSubjectList.Where(c => c.SubjectCode == studentSubject.SubjectCode);

                    if (subjectsMarks != null && subjectsMarks?.Count() >= 1)
                    {
                        foreach (var testMark in subjectsMarks)
                        {
                            studentSubjectMarksDto.PercentageAscendingByDate.Add(new StudentSubjectMarksByDateDto()
                            {
                                Mark = testMark.MarkPercentage,
                                Date = testMark.TestDateCreated
                            });
                        }
                        studentSubjectMarksDto.PercentageAscendingByDate = studentSubjectMarksDto.PercentageAscendingByDate.ToSetPositiveOrNegativeExtensionMarkDateValue();
                        var subjectAverage = Convert.ToInt32(subjectsMarks.Average(c => c.MarkPercentage));
                        totalAverage.Add(subjectAverage);
                        row["SubCode_" + studentSubject.SubjectCode] = subjectAverage;

                        if (subjectAverage >= 1)
                        {
                            totalWritten++;
                        }
                    }
                    studentSubjectMarksDtos.Add(studentSubjectMarksDto);
                }

                row["ListOfTests"] = studentSubjectMarksDtos;

                if (totalWritten >= 1)
                {
                    row["TotalAverage"] = Convert.ToInt32(totalAverage.Average());
                }
                finalScoreSheet.Rows.Add(row);
            }

            return(finalScoreSheet);
        }