public FormToTeacherSubject GetActiveFTS(int formId, int tsId) { Form foundForm = db.FormsRepository.GetByID(formId); if (foundForm == null) { throw new HttpException("The Form with id: " + formId + " was not found"); } TeacherToSubject foundTS = db.TeachersToSubjectsRepository.GetByID(tsId); if (foundTS == null) { throw new HttpException("The Teacher-Subject with id: " + tsId + " was not found"); } FormToTeacherSubject foundActiveFTS = db.FormsToTeacherSubjectsRepository.Get(x => x.Form.Id == foundForm.Id && x.TeacherToSubject.Id == foundTS.Id).FirstOrDefault(); 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); } return(foundActiveFTS); }
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 FormToTeacherSubject FindFTSForMark(int formId, string teacherId, int subjectId) { TeacherToSubject foundTeacherToSubject = teachersToSubjectsService.GetActiveTeacherToSubjectByTeacherIdAndSubjectId(teacherId, subjectId); FormToTeacherSubject foundActiveFTS = GetActiveFTS(formId, foundTeacherToSubject.Id); return(foundActiveFTS); }
public FTSDTOForUser ConvertToFTSDTOForUser(FormToTeacherSubject x) { FTSDTOForAdmin dto = new FTSDTOForAdmin { Id = x.Id, Form = formToDTO.ConvertToFormDTOForStudentAndParent(x.Form), TeacherToSubject = tsToDTO.ConvertToTeacherToSubjectDTOForStudentAndParent(x.TeacherToSubject), Started = x.Started, Stopped = x.Stopped }; return(dto); }
public MarkDTO Create(PostMarkDTO postDTO, string teacherId, int subjectId, int formId, string studentId) { FormToTeacherSubject foundFTS = formsToTeacherSubjectsService.FindFTSForMark(formId, teacherId, subjectId); Student foundStudent = studentsService.GetByID(studentId); if (foundStudent == null) { throw new HttpException("The student with id: " + studentId + " was not found."); } if (foundStudent.IsActive == false) { throw new HttpException("The student with id: " + studentId + " is no longer actively enrolled in this school."); } if (foundFTS.Form.Id != foundStudent.Form.Id) { throw new HttpException("The teacher (id: " + teacherId + ") does not teach the subject (" + subjectId + ") " + "in the student's (id: " + studentId + ") form."); } Mark mark = new Mark { MarkValue = postDTO.MarkValue, Created = DateTime.UtcNow, FormToTeacherSubject = foundFTS, Student = foundStudent }; if (DateTime.Today.Month > DateTime.ParseExact("Avgust", "MMMM", CultureInfo.CurrentCulture).Month) { mark.Semester = Semesters.FIRST_SEMESTER; } else { mark.Semester = Semesters.SECOND_SEMESTER; } db.MarksRepository.Insert(mark); db.Save(); emailsService.NewMarkMailForParent(mark.Id); emailsService.NewMarkMailForStudent(mark.Id); MarkDTO markDto = ConvertToMarkDTO(mark.Id); return(markDto); }
private ReportCardDTOItem ConvertToReportCardDTOItem(FormToTeacherSubject fts, IEnumerable <Mark> studentMarks) { IList <int> firstSemesterMarks = new List <int>(); IList <int> secondSemesterMarks = new List <int>(); int firstSemesterSum = 0; int secondSemesterSum = 0; foreach (var mark in studentMarks) { if (mark.Semester == 0) { firstSemesterMarks.Add(mark.MarkValue); firstSemesterSum += mark.MarkValue; } else { secondSemesterMarks.Add(mark.MarkValue); secondSemesterSum += mark.MarkValue; } } ReportCardDTOItem item = new ReportCardDTOItem { Subject = fts.TeacherToSubject.Subject.Id + ", " + fts.TeacherToSubject.Subject.Name, Teacher = fts.TeacherToSubject.Teacher.Id + ", " + fts.TeacherToSubject.Teacher.LastName + " " + fts.TeacherToSubject.Teacher.FirstName, FirstSemesterMarks = firstSemesterMarks, SecondSemesterMarks = secondSemesterMarks }; if (firstSemesterMarks.Count == 0) { item.FirstSemesterAverageMark = null; } else { item.FirstSemesterAverageMark = (double)firstSemesterSum / firstSemesterMarks.Count; } if (secondSemesterMarks.Count == 0) { item.SecondSemesterAverageMark = null; } else { item.SecondSemesterAverageMark = (double)secondSemesterSum / secondSemesterMarks.Count; } return(item); }
private TeacherDTOItem ConvertToTeacherDTOItem(FormToTeacherSubject fts) { if (fts == null) { return(null); } TeacherDTOItem dto = new TeacherDTOItem { Id = fts.TeacherToSubject.Teacher.Id, Teacher = fts.TeacherToSubject.Teacher.LastName + " " + fts.TeacherToSubject.Teacher.FirstName }; return(dto); }
public HttpResponseMessage GetFormsToTeachersSubjectsById(int id) { 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 FormToTeacherSubject by id: " + id); try { FormToTeacherSubject formToTeacherSubject = formsToTeacherSubjectsService.GetByID(id); if (formToTeacherSubject == null) { logger.Info("The formToTeacherSubject with id: " + id + " was not found."); return(Request.CreateResponse(HttpStatusCode.BadRequest, "The formToTeacherSubject with id: " + id + " was not found.")); } if (userRole == "admin") { logger.Info("Requesting found FormToTeacherSubject convert for " + userRole + "role."); FTSDTOForAdmin dto = toDTO.ConvertToFTSDTOForAdmin(formToTeacherSubject); if (dto == null) { logger.Info("Failed!"); return(Request.CreateResponse(HttpStatusCode.BadRequest, "Something went wrong.")); } logger.Info("Success!"); return(Request.CreateResponse(HttpStatusCode.OK, dto)); } else //if (userRole == "teacher") { logger.Info("Requesting found FormToTeacherSubject convert for " + userRole + "role."); FTSDTOForTeacher dto = toDTO.ConvertToFTSDTOForTeacher(formToTeacherSubject); if (dto == null) { logger.Info("Failed!"); return(Request.CreateResponse(HttpStatusCode.BadRequest, "Something went wrong.")); } logger.Info("Success!"); return(Request.CreateResponse(HttpStatusCode.OK, dto)); } } catch (Exception e) { logger.Error(e); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e)); } }
public FTSDTOForAdmin Create(int formId, string teacherId, int subjectId) { Form foundForm = formsService.GetByID(formId); if (foundForm == null) { throw new HttpException("The Form with id: " + formId + " was not found"); } if (foundForm.Started.AddDays(360).CompareTo(DateTime.UtcNow) < 0) { throw new HttpException("The Form with id: " + formId + " was not created for this shool year. " + "This form is from: " + foundForm.Started.Year + ". Classes must be assign to a form from this school year."); } TeacherToSubject foundTeacherToSubject = teachersToSubjectsService.GetActiveTeacherToSubjectByTeacherIdAndSubjectId(teacherId, subjectId); if (foundForm.Grade != foundTeacherToSubject.Subject.Grade) { throw new HttpException("The subject and teacher combination with id: " + foundTeacherToSubject.Id + " has " + "the subject that is taught in grade " + foundTeacherToSubject.Subject.Grade + "and it can not be assigned to the grade " + foundForm.Grade + " in form " + foundForm.Id); } FormToTeacherSubject duplicate = db.FormsToTeacherSubjectsRepository.GetDuplicate(foundForm.Id, foundTeacherToSubject.Id); if (duplicate != null) { throw new HttpException("The combination form-teacher-subject you are trying to create already exists - FTS Id: " + duplicate.Id); } FormToTeacherSubject fts = new FormToTeacherSubject { Form = foundForm, TeacherToSubject = foundTeacherToSubject, Started = DateTime.UtcNow, Stopped = null }; db.FormsToTeacherSubjectsRepository.Insert(fts); db.Save(); FTSDTOForAdmin dto = toDTO.ConvertToFTSDTOForAdmin(fts); return(dto); }
public FTSDTOForAdmin UpdateStoppedNowByFTSId(int id) { FormToTeacherSubject found = GetByID(id); if (found == null) { throw new HttpException("The Form To TeacherSubject with id: " + id + " was not found."); } found.Stopped = DateTime.UtcNow; db.FormsToTeacherSubjectsRepository.Update(found); db.Save(); FTSDTOForAdmin dto = toDTO.ConvertToFTSDTOForAdmin(found); return(dto); }
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 HttpResponseMessage DeleteFormToTeacherSubject(int id) { string userId = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == "UserId").Value; logger.Info("UserId: " + userId + ": Requesting FormToTeacherSubject Remove for FTS Id: " + id); try { FormToTeacherSubject deleted = formsToTeacherSubjectsService.Delete(id); logger.Info("Success!"); return(Request.CreateResponse(HttpStatusCode.OK, "Success!")); } catch (Exception e) { logger.Error(e); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e)); } }
public FormToTeacherSubject Delete(int id) { FormToTeacherSubject found = GetByID(id); if (found == null) { throw new HttpException("The Form To TeacherSubject with id: " + id + " was not found."); } if (found.Marks.Count != 0) { throw new HttpException("The Form To TeacherSubject with id: " + id + " has a list of marks in database. It can not be deleted." + " If you want to stop the teacher's engagement in teaching the subject in the selected form you need to " + "update Form-Teacher-Subject's property Stopped with HttpPut at http://localhost:54164/project/forms-to-teachers-subjects/" + found.Id + "/stopped-to-now"); } db.FormsToTeacherSubjectsRepository.Delete(found); db.Save(); return(found); }
public MarkDTO ConvertToMarkDTO(int id) { Mark x = GetByID(id); Student foundStudent = db.StudentsRepository.GetByID(x.Student.Id); Subject foundSubject = db.SubjectsRepository.GetByID(x.FormToTeacherSubject.TeacherToSubject.Subject.Id); Teacher foundTeacher = db.TeachersRepository.GetByID(x.FormToTeacherSubject.TeacherToSubject.Teacher.Id); Parent foundParent = db.ParentsRepository.GetByID(x.Student.Parent.Id); Form foundForm = db.FormsRepository.GetByID(x.Student.Form.Id); Teacher foundAttending = db.TeachersRepository.GetByID(x.Student.Form.AttendingTeacher.Id); TeacherToSubject foundTS = db.TeachersToSubjectsRepository.GetByID(x.FormToTeacherSubject.TeacherToSubject.Id); FormToTeacherSubject foundFTS = db.FormsToTeacherSubjectsRepository.GetByID(x.FormToTeacherSubject.Id); if (x != null) { MarkDTO dto = new MarkDTO { Id = x.Id, MarkValue = x.MarkValue, Semester = x.Semester, Created = x.Created, StudentID = foundStudent.Id, Student = foundStudent.FirstName + " " + foundStudent.LastName, SubjectID = foundSubject.Id, SubjectName = foundSubject.Name, TeacherID = foundTeacher.Id, Teacher = foundTeacher.FirstName + " " + foundTeacher.LastName, ParentID = foundParent.Id, FormID = foundForm.Id, AttendingTeacherID = foundAttending.Id, TeacherToSubjectID = foundTS.Id, FormToTeacherToSubjectID = foundFTS.Id }; return(dto); } return(null); }
public FTSDTOForAdmin Update(int id, PutFormToTeacherSubjectDTO updated) { FormToTeacherSubject found = GetByID(id); if (found == null) { throw new HttpException("The FormToTeacherSubject with id: " + id + " was not found"); } Form foundForm = formsService.GetByID(updated.FormId); found.Form = foundForm ?? throw new HttpException("The Form with id: " + updated.FormId + " was not found"); TeacherToSubject foundTS = teachersToSubjectsService.GetActiveTeacherToSubjectByTeacherIdAndSubjectId(updated.TeacherId, updated.SubjectId); found.TeacherToSubject = foundTS; found.Started = DateTime.UtcNow; found.Stopped = null; FormToTeacherSubject duplicate = db.FormsToTeacherSubjectsRepository.GetDuplicate(updated.FormId, foundTS.Id); if (duplicate != null) { throw new HttpException("The combination form-teacher-subject you are trying to create already exists - FTS Id: " + duplicate.Id); } if (foundForm.Grade != foundTS.Subject.Grade) { throw new HttpException("The subject and teacher combination with id: " + foundTS.Id + " has " + "the subject that is taught in grade " + foundTS.Subject.Grade + "and it can not be assigned to the grade " + foundForm.Grade + " in form " + foundForm.Id); } db.FormsToTeacherSubjectsRepository.Update(found); db.Save(); FTSDTOForAdmin dto = toDTO.ConvertToFTSDTOForAdmin(found); return(dto); }
public FormToTeacherSubject GetByID(int id) { FormToTeacherSubject found = db.FormsToTeacherSubjectsRepository.GetByID(id); return(found); }
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); }