public IHttpActionResult AddSubjectToTeacher(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 Exception("Teacher already teaches this subject!"); } else { logger.Info("Adding subject to teacher"); teachersService.AddSubjectToTeacher(teacherId, subjectId); return(Ok(teacher.TeacherTeachesSubject.Select(s => s.Subject))); } } catch (Exception e) { logger.Error(e, "Adding subject to teacher"); return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e))); } }