예제 #1
0
        public ExamMark DeleteExamMark(int id)
        {
            ExamMark edu = _context.ExamMark.Find(id);

            if (edu != null)
            {
                _context.ExamMark.Remove(edu);
                _context.SaveChanges();
                return(edu);
            }
            return(null);
        }
예제 #2
0
        public string setPositionAndHighest(ExamMark examMark, string status)
        {
            List <ExamMark> markList = new List <ExamMark>();

            Student student = _context.Student.Where(s => s.Id == examMark.StudentId).FirstOrDefault();

            if (student != null)
            {
                List <Student> studentList = _context.Student.Where(st => st.SectionId == student.SectionId).ToList();
                foreach (Student st in studentList)
                {
                    var mark = _context.ExamMark.Where(e => e.StudentId == st.Id &&
                                                       e.ExamId == examMark.ExamId &&
                                                       e.ExamRoutineId == examMark.ExamRoutineId).FirstOrDefault();
                    if (mark != null)
                    {
                        markList.Add(mark);
                    }
                }
            }



            if (markList.Count() > 0)
            {
                markList.Sort((a, b) => a.ObtainMark.CompareTo(b.ObtainMark));
                markList.Reverse();
                var highestscore = markList[0].ObtainMark;
                var position     = 0;
                foreach (ExamMark em in markList)
                {
                    em.HighestMark = highestscore;
                    em.Position    = position + 1;
                    position       = (int)em.Position;
                }
                _context.ExamMark.UpdateRange(examMark);
                _context.SaveChanges();

                return(@"Successfully " + status + " a mark which result status is " + examMark.ResultStatus +
                       ", Point " + examMark.Point + ", Grade " + examMark.Grade + ", Position " + examMark.Position +
                       ", Highest mark this section is " + examMark.HighestMark);
            }

            return(@"Successfully " + status + " a mark but not set position & Highest mark");
        }
예제 #3
0
        public ExamMark GetExamMarkOfStudent(int examId, int studentId, int subjectId)
        {
            var rotine = _context.ExamRoutine.Where(r => r.ExamId == examId && r.SubjectId == subjectId).FirstOrDefault();

            if (rotine == null)
            {
                return(null);
            }
            ExamMark examMark = _context.ExamMark.Where(em => em.ExamId == examId &&
                                                        em.StudentId == studentId &&
                                                        em.ExamRoutineId == rotine.Id).FirstOrDefault();

            if (examMark == null)
            {
                return(null);
            }
            return(examMark);
        }
예제 #4
0
        public string AddExamMark(ExamMark examMark)
        {
            // check This mark is already exist
            var markExist = _context.ExamMark.Where(e => e.ExamId == examMark.ExamId &&
                                                    e.StudentId == examMark.StudentId &&
                                                    e.ExamRoutineId == examMark.ExamRoutineId).FirstOrDefault();



            //check this student is Present in exam and this subject is in rotine.    =>addorupdate
            var isStudentPresentInExam = false;
            var rotine = _context.ExamRoutine.Where(r => r.Id == examMark.ExamRoutineId &&
                                                    r.ExamId == examMark.ExamId).FirstOrDefault();

            if (rotine != null)
            {
                var stAttend = _context.AttendanceOfStudent.Where(at => at.StudentId == examMark.StudentId &&
                                                                  at.Date.Date == rotine.ExamDate.Date).FirstOrDefault();
                if (stAttend != null)
                {
                    isStudentPresentInExam = true;
                }
                else
                {
                    return("Student not Attend this Exam.");
                }
            }

            //check this subject is in  student  class.
            var isStudentSubject = false;
            int branchId         = 0;

            if (isStudentPresentInExam)
            {
                var student = _context.Student.Where(s => s.Id == examMark.StudentId).FirstOrDefault();
                if (student != null)
                {
                    var stSecton = _context.Section.Where(a => a.Id == student.SectionId).FirstOrDefault();
                    var stClass  = _context.BranchClass.Where(b => b.Id == stSecton.BranchClassId).FirstOrDefault();
                    branchId = stClass.BranchId;

                    var studentSubject = _context.StudentSubject.Where(ss => ss.StudentId == student.Id &&
                                                                       ss.SubjectId == rotine.SubjectId).FirstOrDefault();

                    if (stClass != null && studentSubject != null)
                    {
                        var subject = _context.Subject.Where(sb => sb.Id == rotine.SubjectId &&
                                                             sb.SchoolClassId == stClass.SchoolClassId).FirstOrDefault();
                        if (subject != null)
                        {
                            isStudentSubject = true;
                        }
                    }
                }
            }


            if (isStudentSubject && isStudentPresentInExam)
            {
                Exam            exam            = _context.Exam.Where(e => e.Id == examMark.ExamId).FirstOrDefault();
                ExamResultPoint examResultPoint = GradePoint(branchId, (float)rotine.TotalNumber, examMark.ObtainMark);

                examMark.ResultStatus = IsPassed((float)rotine.TotalNumber, exam.PassingRate, examMark.ObtainMark);

                examMark.Point = examResultPoint.Point;
                if (examMark.ResultStatus)
                {
                    examMark.Grade = examResultPoint.Grade;
                }
                else
                {
                    examMark.Grade = "F";
                }

                if (markExist == null)
                {
                    _context.ExamMark.Add(examMark);
                    _context.SaveChanges();

                    return(setPositionAndHighest(examMark, "Inserted"));

                    //return examMark;
                }
                else
                {
                    markExist.ObtainMark   = examMark.ObtainMark;
                    markExist.ResultStatus = examMark.ResultStatus;
                    markExist.Point        = examMark.Point;
                    markExist.Grade        = examMark.Grade;

                    _context.ExamMark.Update(markExist);
                    _context.SaveChanges();

                    return(setPositionAndHighest(markExist, "Updated"));

                    //return markExist;
                }
            }
            return(null);
        }