public IActionResult AddSubject(SubjectsInputViewModel input)
        {
            var courseId = this.GetRouteId();
            var course   = this.coursesService.GetById(courseId);

            string[] parts        = input.SubjectTeacher.Split(" - ", StringSplitOptions.RemoveEmptyEntries);
            string[] teacherNames = parts[1].Split(" ", StringSplitOptions.RemoveEmptyEntries);
            Subject  subject      = this.subjectsService.GetASubjectByName(parts[0]);

            if (subject != null)
            {
                Teacher teacher = this.teachersService.GetTeacherByFullName(teacherNames[0], teacherNames[1], teacherNames[2]);

                var subjectToAdd = this.db.Subjects.Where(x => x.Id == subject.Id).Select(x => x).FirstOrDefault();
                var teacherToAdd = this.db.Teachers.Where(x => x.Id == teacher.Id).Select(x => x).FirstOrDefault();

                if (subjectToAdd == null)
                {
                    return(this.View("This Subject does not exist"));
                }

                if (teacherToAdd == null)
                {
                    return(this.View("This teacher does not exist"));
                }

                using (this.db)
                {
                    SubjectTeachers subjectTeacher = new SubjectTeachers(subject, teacher);

                    this.db.Set <CourseSubjects>().Add(new CourseSubjects
                    {
                        CourseId  = courseId,
                        Course    = this.coursesService.GetById(courseId),
                        SubjectId = subjectToAdd.Id,
                        Subject   = this.subjectsService.GetById(subjectToAdd.Id),
                    });

                    this.db.Set <CourseSubjectTeacher>().Add(new CourseSubjectTeacher
                    {
                        CourseId  = courseId,
                        Course    = this.coursesService.GetById(courseId),
                        SubjectId = subjectToAdd.Id,
                        Subject   = this.subjectsService.GetById(subjectToAdd.Id),
                        TeacherId = teacher.Id,
                        Teacher   = teacher,
                    });

                    //foreach (var course in this.db.Courses)
                    //{
                    //    if (course.Id == courseId)
                    //    {
                    //        if (!course.SubjectTeachers.Contains(subjectTeacher))
                    //        {
                    //            course.SubjectTeachers.Add(subjectTeacher);
                    //        }
                    //        break;
                    //    }
                    //}

                    //foreach (var subjectDb in this.db.Subjects)
                    //{
                    //    if (subjectDb.Id == subjectToAdd.Id)
                    //    {
                    //        subjectDb.SubjectTeachers.Add(subjectTeacher);
                    //        break;
                    //    }
                    //}

                    //foreach (var teacherDb in this.db.Teachers)
                    //{
                    //    if (teacherDb.Id == teacherToAdd.Id)
                    //    {
                    //        teacherDb.SubjectTeachers.Add(subjectTeacher);
                    //        break;
                    //    }
                    //}

                    foreach (var student in this.db.Students)
                    {
                        if (student.CourseId == courseId)
                        {
                            student.Subjects.Add(new StudentSubjects
                            {
                                StudentId = student.Id,
                                Student   = student,
                                SubjectId = subjectToAdd.Id,
                                Subject   = this.subjectsService.GetById(subjectToAdd.Id),
                            });
                        }
                    }

                    this.db.SaveChanges();
                }
            }

            return(this.RedirectToAction("ByName", new { name = course.Name }));
        }
 public void AddSubjectTeacherToCourse(int courseId, SubjectTeachers subjectTeacher)
 {
     //var c = this.coursesRepository.All().Where(x => x.Id == courseId).Select(x => x.SubjectTeachers.Add(subjectTeacher));
 }