public CourseManager(ICourseRegistrationPolicy registrationPolicy, IRepository <CourseRegistration> courseRegistrationRepository, IRepository <Course> courseRepository)
        {
            _registrationPolicy           = registrationPolicy ?? throw new ArgumentNullException(nameof(registrationPolicy));
            _courseRegistrationRepository = courseRegistrationRepository ?? throw new ArgumentNullException(nameof(courseRegistrationRepository));
            _courseRepository             = courseRepository ?? throw new ArgumentNullException(nameof(courseRepository));

            EventBus = NullEventBus.Instance;
        }
Example #2
0
        public static async Task <CourseRegistration> CreateAsync(Course newCourse, User user, ICourseRegistrationPolicy registrationPolicy)
        {
            await registrationPolicy.CheckRegistrationAttemptAsync(newCourse, user);

            return(new CourseRegistration
            {
                TenantId = newCourse.TenantId,
                CourseId = newCourse.Id,
                Course = newCourse,
                UserId = user.Id,
                User = user
            });
        }