public IHttpActionResult UpdateStudent(int id, StudentServiceModel updatedStudent)
        {
            if (!this.ModelState.IsValid)
            {
                return(BadRequest(this.ModelState));
            }

            var oldStudent = this.GetStudentById(id);

            oldStudent.FirstName = updatedStudent.FirstName;
            oldStudent.LastName  = updatedStudent.LastName;
            foreach (var courseName in updatedStudent.Courses)
            {
                if (!oldStudent.Courses.Any(c => c.Name == courseName))
                {
                    oldStudent.Courses.Add(new Course
                    {
                        Name = courseName
                    });
                }
            }

            this.data.Students.SaveChanges();

            return(Ok(StudentServiceModel.ConvertFromStudent(oldStudent)));
        }
        public IHttpActionResult RemoveStudent(int id)
        {
            var student = this.GetStudentById(id);

            this.data.Students.Delete(student);
            this.data.Students.SaveChanges();

            return(Ok(StudentServiceModel.ConvertFromStudent(student)));
        }
        public IHttpActionResult EnrollInCourse(int studentId, CourseServiceModel newCourse)
        {
            var student = this.GetStudentById(studentId);

            var course = newCourse.ConvertToCourse();

            student.Courses.Add(course);
            this.data.SaveChanges();

            return(Ok(StudentServiceModel.ConvertFromStudent(student)));
        }
        public IHttpActionResult EnrollInCourse(int studentId, Guid courseId)
        {
            var student = this.GetStudentById(studentId);

            var course = this.data.Courses.All().FirstOrDefault(c => c.Id == courseId);

            if (course == null)
            {
                BadRequest("Invalud course id" + courseId);
            }

            student.Courses.Add(course);

            return(Ok(StudentServiceModel.ConvertFromStudent(student)));
        }
        public IHttpActionResult StudentById(int id)
        {
            var student = this.GetStudentById(id);

            return(Ok(StudentServiceModel.ConvertFromStudent(student)));
        }
        public IHttpActionResult AllStudents()
        {
            var students = this.data.Students.All().ToList().Select(s => StudentServiceModel.ConvertFromStudent(s));

            return(Ok(students));
        }