public MarkValuesListDTO ConvertToMarkValuesListDTO(FormToTeacherSubject fts, Student student, List <Mark> marks) { IList <int> marksFirstSemester = new List <int>(); IList <int> marksSecondSemester = new List <int>(); foreach (var mark in marks) { if (mark.Semester == 0) { marksFirstSemester.Add(mark.MarkValue); } else { marksSecondSemester.Add(mark.MarkValue); } } MarkValuesListDTO dto = new MarkValuesListDTO { SubjectID = fts.TeacherToSubject.Subject.Id, SubjectName = fts.TeacherToSubject.Subject.Name, TeacherID = fts.TeacherToSubject.Teacher.Id, Teacher = fts.TeacherToSubject.Teacher.FirstName + " " + fts.TeacherToSubject.Teacher.LastName, ParentID = student.Parent.Id, StudentID = student.Id, Student = student.FirstName + " " + student.LastName, FirstSemesterMarks = marksFirstSemester, SecondSemesterMarks = marksSecondSemester }; return(dto); }
public IEnumerable <MarkValuesListDTO> ConvertToMarkValuesListDTOList(int formId) { Form foundForm = db.FormsRepository.GetByID(formId); if (foundForm == null) { throw new HttpException("The form with id: " + formId + " was not found"); } IList <MarkValuesListDTO> dtos = new List <MarkValuesListDTO>(); IEnumerable <Student> formStudents = foundForm.Students; IEnumerable <FormToTeacherSubject> formFTSs = db.FormsToTeacherSubjectsRepository.GetByFormIdOnlyActive(foundForm.Id); foreach (var fts in formFTSs) { foreach (var student in formStudents) { IEnumerable <Mark> studentMarks = db.MarksRepository.GetByFTSIdAndStudentId(fts.Id, student.Id); MarkValuesListDTO dto = ConvertToMarkValuesListDTO(fts, student, (List <Mark>)studentMarks); dtos.Add(dto); } } dtos = dtos.OrderBy(x => x.Student).ThenBy(x => x.SubjectName).ToList(); return(dtos); }
public HttpResponseMessage GetMarksByStudentIdFromTeacherId(string studentId, string teacherId) { string userId = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == "UserId").Value; string userRole = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == ClaimTypes.Role).Value; logger.Info("UserRole: " + userRole + ", UserId: " + userId + ": Requesting Marks " + "By Student Id: " + studentId + " From Teacher Id: " + teacherId); try { MarkValuesListDTO marks = marksService.GetMarkValuesListByStudentIdFromTeacherId(studentId, teacherId); if (userRole == "admin" || userId == studentId || marks.ParentID == userId || marks.TeacherID == userId) { logger.Info("Success!"); return(Request.CreateResponse(HttpStatusCode.OK, marks)); } logger.Info("Authorisation failure. User is not authorised for this request."); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Access Denied. We’re sorry, " + "but you are not authorized to perform the requested operation.")); } catch (Exception e) { logger.Error(e); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e)); } }
public MarkValuesListDTO GetMarkValuesListByStudentIdForSubjectId(string studentId, int subjectId) { Subject foundSubject = db.SubjectsRepository.GetByID(subjectId); if (foundSubject == null) { throw new HttpException("Subject with id: " + subjectId + " was not found."); } Student foundStudent = studentsService.GetByID(studentId); if (foundStudent == null) { throw new HttpException("Student with id: " + studentId + " was not found."); } IEnumerable <Mark> marksByfoundStudentId = db.MarksRepository.GetAllMarksByStudentId(foundStudent.Id); IList <Mark> foundMarksForSubjectId = new List <Mark>(); if (marksByfoundStudentId != null) { foreach (var mark in marksByfoundStudentId) { if (mark.FormToTeacherSubject.TeacherToSubject.Subject.Id == foundSubject.Id) { foundMarksForSubjectId.Add(mark); } } } if (foundMarksForSubjectId.Count == 0) { throw new HttpException("Null"); } FormToTeacherSubject foundFTS = db.FormsToTeacherSubjectsRepository.GetByFormIdAndSubjectId(foundStudent.Form.Id, foundSubject.Id); if (foundFTS == null) { return(null); } MarkValuesListDTO dto = ConvertToMarkValuesListDTO(foundFTS, foundStudent, (List <Mark>)foundMarksForSubjectId); return(dto); }
public IEnumerable <MarkValuesListDTO> GetMarksByFormIdFromTeacherIdForSubjectId(int formId, string teacherId, int subjectId) { Form foundForm = db.FormsRepository.GetByID(formId); if (foundForm == null) { throw new HttpException("The form with id: " + formId + " was not found"); } Teacher foundTeacher = db.TeachersRepository.GetByID(teacherId); if (foundTeacher == null) { throw new HttpException("The teacher with id: " + teacherId + " was not found"); } Subject foundSubject = db.SubjectsRepository.GetByID(subjectId); if (foundSubject == null) { throw new HttpException("The subject with id: " + subjectId + " was found"); } TeacherToSubject foundTS = db.TeachersToSubjectsRepository.GetByTeacherIdAndSubjectId(foundTeacher.Id, foundSubject.Id); if (foundTS == null) { throw new HttpException("The subject with id: " + subjectId + " has never been assigned to " + "the teacher with id: " + teacherId + "."); } if (foundTS.StoppedTeaching != null) { throw new HttpException("The teacher id: " + foundTS.Teacher.Id + " is no longer teaching the subject id " + foundSubject.Id + ". " + "The teaching engagement has stopped at: " + foundTS.StoppedTeaching); } FormToTeacherSubject foundActiveFTS = db.FormsToTeacherSubjectsRepository.GetByFormIdAndTeacherSubjectId(foundForm.Id, foundTS.Id); if (foundActiveFTS == null) { throw new HttpException("The teacher id: " + foundTS.Teacher.Id + " and the subject id " + foundTS.Subject.Id + " are " + "not assigned to the form id: " + formId + "."); } if (foundActiveFTS.Stopped != null) { throw new HttpException("The teacher id: " + foundTS.Teacher.Id + " is no longer teaching the subject id " + foundTS.Subject.Id + " to the form id: " + formId + ". The teaching engagement has stopped at: " + foundActiveFTS.Stopped); } IEnumerable <Student> formStudents = foundForm.Students; IList <MarkValuesListDTO> dtos = new List <MarkValuesListDTO>(); foreach (var student in formStudents) { IEnumerable <Mark> marksByfoundFTSByStudentId = db.MarksRepository.GetByFTSIdAndStudentId(foundActiveFTS.Id, student.Id); MarkValuesListDTO dto = ConvertToMarkValuesListDTO(foundActiveFTS, student, (List <Mark>)marksByfoundFTSByStudentId); dtos.Add(dto); } dtos = dtos.OrderBy(x => x.Student).ToList(); return(dtos); }