Esempio n. 1
0
        public void Apply(Guid courseId, Guid userId)
        {
            //basic guard clauses
            if (!_coursesRepository.CourseExists(courseId))
            {
                throw new ArgumentException();
            }
            if (!_userRepository.UserExists(userId))
            {
                throw new ArgumentException();
            }

            var user   = _userRepository.FindById(userId);
            var course = _coursesRepository.FindById(courseId);

            //this prevents the user from applying multiple times
            //I could also consider throwing something like UserAlreadyAppliedException in this case
            if (!CheckIfUserHasAlreadyApplied(user, course))
            {
                course.AppliedUsers.Add(user);
            }
        }