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; }
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 }); }