Example #1
0
        public IHttpActionResult RemoveSubjectFromTeacher(string teacherId, int subjectId)
        {
            Teacher teacher = teachersService.GetById(teacherId);

            if (teacher == null || subjectsService.GetById(subjectId) == null)
            {
                return(NotFound());
            }

            try
            {
                if (!teacher.TeacherTeachesSubject.Select(x => x.Subject.SubjectId).Contains(subjectId))
                {
                    throw new NullReferenceException("Teacher doesn't teach this subject!");
                }

                else
                {
                    logger.Info("Removing subject from teacher");

                    TeacherToSubject teacherSubject = teachersService.RemoveSubjectTeacherPair(teacherId, subjectId);
                    return(Ok(teacherSubject));
                }
            }
            catch (NullReferenceException e)
            {
                logger.Error(e.Message, "Removing subject from teacher");
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e.Message)));
            }
        }
Example #2
0
        public TeacherToSubject GetTeacherToSubjectByTeacherIdAndSubjectId(string teacherId, int subjectId)
        {
            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 found = db.TeachersToSubjectsRepository.GetByTeacherIdAndSubjectId(foundTeacher.Id, foundSubject.Id);

            if (found == null)
            {
                throw new HttpException("The subject with id: " + subjectId + " is not assigned to " +
                                        "the teacher with id: " + teacherId + ".");
            }

            return(found);
        }
Example #3
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);
        }
Example #4
0
        public TeacherToSubjectDTOForAdmin PutStoppedTeachingNowByTSId(int id)
        {
            TeacherToSubject found = GetByID(id);

            if (found == null)
            {
                throw new HttpException("The Teacher-Subject combination with id: " + id + " was not found.");
            }

            found.StoppedTeaching = DateTime.UtcNow;
            db.TeachersToSubjectsRepository.Update(found);

            IEnumerable <FormToTeacherSubject> ftsByFoundTSId = found.TeacherSubjectForms;

            if (ftsByFoundTSId != null)
            {
                foreach (var fts in ftsByFoundTSId)
                {
                    if (fts.Stopped == null)
                    {
                        fts.Stopped = DateTime.UtcNow;
                        db.FormsToTeacherSubjectsRepository.Update(fts);
                    }
                }
            }

            db.Save();

            TeacherToSubjectDTOForAdmin dto = toDTO.ConvertToTeacherToSubjectDTOForAdmin(found);

            return(dto);
        }
Example #5
0
        public HttpResponseMessage DeleteTeacherToSubject(int id)
        {
            string userId = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == "UserId").Value;

            logger.Info("UserId: " + userId + ": Requesting Remove For Teacher-Subject with Id: " + id);

            try
            {
                TeacherToSubject teacherToSubject = teachersToSubjectsService.Delete(id);

                if (teacherToSubject == null)
                {
                    logger.Info("TeacherToSubjectject with id " + id + " was not found.");
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "TeacherToSubjectject with id " + id + " was not found."));
                }

                logger.Info("Success!");
                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception e)
            {
                logger.Error(e);
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e));
            }
        }
Example #6
0
        public FormToTeacherSubject FindFTSForMark(int formId, string teacherId, int subjectId)
        {
            TeacherToSubject foundTeacherToSubject = teachersToSubjectsService.GetActiveTeacherToSubjectByTeacherIdAndSubjectId(teacherId, subjectId);

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

            return(foundActiveFTS);
        }
Example #7
0
        public HttpResponseMessage GetTeacherToSubject(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 Teacher To Subject by id: " + id);

            try
            {
                TeacherToSubject ts = teachersToSubjectsService.GetByID(id);
                if (ts == null)
                {
                    logger.Info("The teacher with id: " + id + " was not found.");
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "The TeacherToSubject with id: " + id + " was not found."));
                }
                if (userRole == "admin")
                {
                    logger.Info("Requesting found TeacherToSubject convert for " + userRole + "role.");
                    TeacherToSubjectDTOForAdmin dto = toDTO.ConvertToTeacherToSubjectDTOForAdmin(ts);
                    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 TeacherToSubject convert for " + userRole + "role.");
                    TeacherToSubjectDTOForTeacher dto = toDTO.ConvertToTeacherToSubjectDTOForTeacher(ts);
                    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 == "student" || userRole == "parent")
                {
                    logger.Info("Requesting found TeacherToSubject convert for " + userRole + "role.");
                    TeacherToSubjectDTOForStudentAndParent dto = toDTO.ConvertToTeacherToSubjectDTOForStudentAndParent(ts);
                    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));
            }
        }
Example #8
0
        public TeacherToSubject GetActiveTeacherToSubjectByTeacherIdAndSubjectId(string teacherId, int subjectId)
        {
            TeacherToSubject found = GetTeacherToSubjectByTeacherIdAndSubjectId(teacherId, subjectId);

            if (found.StoppedTeaching != null)
            {
                throw new HttpException("The teacher with id " + teacherId + " has stopped teaching the subject " +
                                        "with id: " + subjectId + ". You need to renew the teaching contract.");
            }

            return(found);
        }
Example #9
0
        public TeacherToSubject RemoveSubjectTeacherPair(string teacherId, int subjectId)
        {
            Teacher teacher = db.TeacherRepository.GetByID(teacherId);
            Subject subject = db.SubjectRepository.GetByID(subjectId);

            TeacherToSubject teacherToSubject = teacher.TeacherTeachesSubject.FirstOrDefault(x => x.Teacher == teacher && x.Subject == subject);

            db.TeacherSubjectRepository.Delete(teacherToSubject);

            db.Save();
            return(teacherToSubject);
        }
Example #10
0
        public TeacherToSubjectDTOForAdmin ConvertToTeacherToSubjectDTOForAdmin(TeacherToSubject x)
        {
            TeacherToSubjectDTOForAdmin dto = new TeacherToSubjectDTOForAdmin
            {
                Id              = x.Id,
                Teacher         = teacherToDTO.ConvertToTeacherDTOForAdmin(x.Teacher, (List <IdentityUserRole>)x.Teacher.Roles),
                Subject         = x.Subject,
                StartedTeaching = x.StartedTeaching,
                StoppedTeaching = x.StoppedTeaching
            };

            return(dto);
        }
Example #11
0
        public TeacherToSubjectDTOForTeacher ConvertToTeacherToSubjectDTOForTeacher(TeacherToSubject x)
        {
            TeacherToSubjectDTOForTeacher dto = new TeacherToSubjectDTOForTeacher
            {
                Id              = x.Id,
                Teacher         = teacherToDTO.ConvertToTeacherDTOForTeacher(x.Teacher),
                Subject         = x.Subject,
                StartedTeaching = x.StartedTeaching,
                StoppedTeaching = x.StoppedTeaching
            };

            return(dto);
        }
Example #12
0
        public Teacher AddSubjectToTeacher(string teacherId, int subjectId)
        {
            Teacher teacher = db.TeacherRepository.GetByID(teacherId);
            Subject subject = db.SubjectRepository.GetByID(subjectId);

            TeacherToSubject subjectToTeacher = new TeacherToSubject();

            subjectToTeacher.Teacher = teacher;
            subjectToTeacher.Subject = subject;

            teacher.TeacherTeachesSubject.Add(subjectToTeacher);
            db.Save();
            return(teacher);
        }
Example #13
0
        public Student AddTeacherToStudentSubject(string studentId, int subjectId, string teacherId)
        {
            Student student = db.StudentRepository.GetByID(studentId);
            Subject subject = db.SubjectRepository.GetByID(subjectId);
            Teacher teacher = db.TeacherRepository.GetByID(teacherId);

            StudentToSubject studentSubject = student.StudentAttendsSubject.FirstOrDefault(x => x.Student == student && x.Subject == subject);
            TeacherToSubject teacherSubject = teacher.TeacherTeachesSubject.FirstOrDefault(x => x.Teacher == teacher && x.Subject == subject);

            studentSubject.TacherTeachesSubject = teacherSubject;

            db.StudentSubjectRepository.Update(studentSubject);
            db.Save();
            return(student);
        }
Example #14
0
        public TeacherInfoDTO DeleteSubjectFromTeacher(string id, int subjectId)
        {
            TeacherModel     TeacherFromDB = db.TeachersRepository.GetByID(id.ToString());
            SubjectModel     SubjectFromDB = db.SubjectsRepository.GetByID(subjectId);
            TeacherToSubject tts           = db.TeacherToSubjectsRepository.Get().FirstOrDefault(x => x.Teacher == TeacherFromDB && x.Subject == SubjectFromDB);

            TeacherFromDB.TeacherToSubjects.Remove(tts);
            TeacherFromDB.SubjectFond -= SubjectFromDB.SubjectFond;
            db.TeachersRepository.Update(TeacherFromDB);
            db.Save();

            logger.Info($"Teacher with id {id} ({TeacherFromDB.FirstName} {TeacherFromDB.LastName}) no longer teaches subject with id {subjectId} ({SubjectFromDB.SubjectName})");

            return(MakeTeacherInfoDTO(TeacherFromDB));
        }
Example #15
0
        public ActionResult AddSubject(int id)
        {
            var userId = User.Identity.GetUserId();
            TeacherToSubject teacherToSubject = new TeacherToSubject()
            {
                SubjectId = id, TeacherId = userId
            };

            db.TeacherToSubjects.Add(teacherToSubject);
            db.SaveChanges();
            var mySubjects = db.Subjects.Join((db.TeacherToSubjects.Where(ts => ts.TeacherId == userId).Select(ts => ts)),
                                              s => s.Id, ts => ts.SubjectId, (s, ts) => s);
            var otherSubjects = db.Subjects.Except(mySubjects).ToList();

            return(PartialView("GetSubjects", otherSubjects));
        }
Example #16
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);
        }
Example #17
0
        public TeacherModel PutSubjectToTeacher(int id, int subjectId)
        {
            TeacherModel     tm = db.TeachersRepository.GetByID(id);
            SubjectModel     sm = db.SubjectsRepository.GetByID(subjectId);
            TeacherToSubject teacherToSubject = new TeacherToSubject()
            {
                Teacher = tm,
                Subject = sm
            };

            logger.Info($"Teacher {tm.FirstName} {tm.LastName} now teaches subject {sm.SubjectName}");

            db.TeacherToSubjectsRepository.Insert(teacherToSubject);
            db.Save();

            return(tm);
        }
Example #18
0
        public TeacherToSubjectDTOForAdmin Create(string teacherId, int subjectId)
        {
            Teacher foundTeacher = db.TeachersRepository.GetByID(teacherId);

            if (foundTeacher == null)
            {
                throw new HttpException("The teacher with id: " + teacherId + " was not found");
            }
            if (foundTeacher.IsStillWorking == false)
            {
                throw new HttpException("The teacher with id: " + teacherId + " is currently not an active faculty member. " +
                                        "You cannot assign this teacher to a subject.");
            }

            Subject foundSubject = subjectsService.GetByID(subjectId);

            if (foundSubject == null)
            {
                throw new HttpException("The subject with id: " + subjectId + " was found");
            }

            TeacherToSubject found = db.TeachersToSubjectsRepository.GetByTeacherIdAndSubjectId(foundTeacher.Id, foundSubject.Id);

            if (found != null)
            {
                throw new HttpException("The subject with id: " + subjectId + " is already assign to " +
                                        "the teacher with id: " + teacherId + ". You can find the existing Teacher-Subject combination (" + found.Id +
                                        ") with HttpGet at route: http://localhost:54164/project/teachers-to-subjects/" + found.Id);
            }

            TeacherToSubject ts = new TeacherToSubject
            {
                Teacher = foundTeacher,
                Subject = foundSubject,

                StartedTeaching = DateTime.UtcNow,
                StoppedTeaching = null
            };

            db.TeachersToSubjectsRepository.Insert(ts);
            db.Save();

            TeacherToSubjectDTOForAdmin dto = toDTO.ConvertToTeacherToSubjectDTOForAdmin(ts);

            return(dto);
        }
Example #19
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);
        }
Example #20
0
        public TeacherInfoDTO PutSubjectToTeacher(string id, int subjectId)
        {
            TeacherModel     TeacherFromDB = db.TeachersRepository.GetByID(id.ToString());
            SubjectModel     SubjectFromDB = db.SubjectsRepository.GetByID(subjectId);
            TeacherToSubject tts           = new TeacherToSubject()
            {
                TeacherId = TeacherFromDB.Id,
                Teacher   = TeacherFromDB,
                SubjectId = SubjectFromDB.Id,
                Subject   = SubjectFromDB
            };

            TeacherFromDB.TeacherToSubjects.Add(tts);
            TeacherFromDB.SubjectFond += SubjectFromDB.SubjectFond;
            db.TeachersRepository.Update(TeacherFromDB);
            db.Save();

            logger.Info($"Subject with id {subjectId} ({SubjectFromDB.SubjectName}) was put to teacher with id {id} ({TeacherFromDB.FirstName} {TeacherFromDB.LastName})");

            return(MakeTeacherInfoDTO(TeacherFromDB));
        }
Example #21
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);
        }
Example #22
0
        public TeacherToSubjectDTOForAdmin UpdateStoppedTeaching(int id, DateTime updated)
        {
            TeacherToSubject found = GetByID(id);

            if (found == null)
            {
                throw new HttpException("The Teacher-Subject combination with id: " + id + " was not found.");
            }

            if (found.StartedTeaching > updated)
            {
                throw new HttpException("The StoppedTeaching date must be after StartedTeaching Date: " + found.StartedTeaching);
            }

            found.StoppedTeaching = updated;
            db.TeachersToSubjectsRepository.Update(found);
            db.Save();

            TeacherToSubjectDTOForAdmin dto = toDTO.ConvertToTeacherToSubjectDTOForAdmin(found);

            return(dto);
        }
Example #23
0
        public Mark AddMarkToStudent(string studentId, int subjectId, string teacherId, int markValue)
        {
            TeacherToSubject subjectToTeacher = new TeacherToSubject();
            StudentToSubject studentToSubject = new StudentToSubject();

            Teacher teacher = db.TeacherRepository.GetByID(teacherId);
            Student student = db.StudentRepository.GetByID(studentId);
            Subject subject = db.SubjectRepository.GetByID(subjectId);
            Mark    newMark = new Mark();

            newMark.MarkDate        = DateTime.Now;
            newMark.MarkValue       = markValue;
            newMark.SemesterEndMark = false;
            db.MarkRepository.Insert(newMark);


            teacher.TeacherTeachesSubject.FirstOrDefault(x => x.Teacher == teacher && x.Subject == subject).StudentsAttendSubjects.FirstOrDefault(y => y.Subject == subject && y.Student == student).Marks.Add(newMark);

            db.Save();

            SendMail(student, subject, teacher, newMark);

            return(newMark);
        }
Example #24
0
        public TeacherToSubject Delete(int id)
        {
            TeacherToSubject found = GetByID(id);

            if (found == null)
            {
                throw new HttpException("The TeacherToSubject with id: " + id + " was not found.");
            }

            IEnumerable <Mark> marksByFoundTS = db.MarksRepository.GetAllByTSId(id);

            if (marksByFoundTS.Count() != 0)
            {
                throw new HttpException("The 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 (and with that, stop his teaching engagemets in all forms)" +
                                        " you need to update Teacher-Subject's property StoppedTeaching with HttpPut " +
                                        "at http://localhost:54164/project/teachers-to-subjects/" + found.Id + "/stopped-teaching-now");
            }


            db.TeachersToSubjectsRepository.Delete(found);
            db.Save();
            return(found);
        }
Example #25
0
        public TeacherInfoDTO PutStudentToTeacher(string id, string studentId, int subjectId)
        {
            TeacherModel TeacherFromDB = db.TeachersRepository.GetByID(id);
            StudentModel StudentFromDB = db.StudentsRepository.GetByID(studentId);
            SubjectModel SubjectFromDB = db.SubjectsRepository.GetByID(subjectId);

            TeacherToSubject tts = db.TeacherToSubjectsRepository.Get().FirstOrDefault(x => x.Teacher == TeacherFromDB && x.Subject == SubjectFromDB);
            StudentToSubject sts = db.StudentToSubjectsRepository.Get().FirstOrDefault(x => x.Student == StudentFromDB && x.Subject == SubjectFromDB);

            sts.TeacherToSubject = tts;

            sts.TeacherToSubject.Teacher   = tts.Teacher;
            sts.TeacherToSubject.TeacherId = tts.Teacher.Id;
            sts.TeacherToSubject.Subject   = tts.Subject;
            sts.TeacherToSubject.SubjectId = tts.Subject.Id;

            db.StudentToSubjectsRepository.Update(sts);
            db.Save();

            logger.Info($"Student with id {id} ({StudentFromDB.FirstName} {StudentFromDB.LastName}) changed teacher on subject {SubjectFromDB.SubjectName}." +
                        $"Teacher that now teaches that student has id: {id} ({TeacherFromDB.FirstName} {TeacherFromDB.LastName})");

            return(MakeTeacherInfoDTO(TeacherFromDB));
        }
Example #26
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);
        }
Example #27
0
        public TeacherToSubjectDTOForStudentAndParent ConvertToTeacherToSubjectDTOForStudentAndParent(TeacherToSubject x)
        {
            TeacherToSubjectDTOForStudentAndParent dto = new TeacherToSubjectDTOForStudentAndParent
            {
                Id              = x.Id,
                Teacher         = teacherToDTO.ConvertToTeacherDTOForStudentAndParent(x.Teacher),
                Subject         = x.Subject,
                StartedTeaching = x.StartedTeaching,
                StoppedTeaching = x.StoppedTeaching
            };

            return(dto);
        }
Example #28
0
        private TeacherSubjectDTOItemForSubject ConvertToTeacherSubjectDTOItemForSubject(TeacherToSubject ts)
        {
            if (ts == null)
            {
                return(null);
            }

            TeacherSubjectDTOItemForSubject dto = new TeacherSubjectDTOItemForSubject
            {
                TeacherId       = ts.Teacher.Id,
                Teacher         = ts.Teacher.LastName + " " + ts.Teacher.FirstName,
                StartedTeaching = ts.StartedTeaching,
                StoppedTeaching = ts.StoppedTeaching
            };

            return(dto);
        }
Example #29
0
        private TeacherSubjectDTOItemForTeacher ConvertToTeacherSubjectDTOItemForTeacher(TeacherToSubject ts)
        {
            if (ts == null)
            {
                return(null);
            }

            TeacherSubjectDTOItemForTeacher dto = new TeacherSubjectDTOItemForTeacher
            {
                SubjectId       = ts.Subject.Id,
                Subject         = ts.Subject.Name,
                StartedTeaching = ts.StartedTeaching,
                StoppedTeaching = ts.StoppedTeaching
            };

            return(dto);
        }