public IVoidResult RemoveStudent(Student student)
        {
            var result = new VoidResult();

            if (!Students.Contains(student))
            {
                return(result.AddErrorMessage(string.Format("{0}'s students collection does not contain this student ({1})", Name, student.FullName)));
            }

            if (student.Courses == null || !student.Courses.Contains(this))
            {
                return(result.AddErrorMessage(string.Format("{0}'s courses collection does not contain this course ({1})", student.FullName, Name)));
            }

            Students.Remove(student);
            student.Courses.Remove(this);

            return(result);
        }
        public IVoidResult AddStudent(Student student)
        {
            var result = new VoidResult();

            if (Students.Any(s => s.SurName.Equals(student.SurName, StringComparison.InvariantCultureIgnoreCase)))
            {
                return(result.AddErrorMessage("Another student with this surname already exists in this course"));
            }

            Students.Add(student);
            if (student.Courses == null)
            {
                student.Courses = new Collection <Course>();
            }
            student.Courses.Add(this);

            return(result);
        }