Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        public FormToTeacherSubject FindFTSForMark(int formId, string teacherId, int subjectId)
        {
            TeacherToSubject foundTeacherToSubject = teachersToSubjectsService.GetActiveTeacherToSubjectByTeacherIdAndSubjectId(teacherId, subjectId);

            FormToTeacherSubject foundActiveFTS = GetActiveFTS(formId, foundTeacherToSubject.Id);

            return(foundActiveFTS);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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));
            }
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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));
            }
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        public FormToTeacherSubject GetByID(int id)
        {
            FormToTeacherSubject found = db.FormsToTeacherSubjectsRepository.GetByID(id);

            return(found);
        }
Exemplo n.º 17
0
        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);
        }