Beispiel #1
0
 public GroupsCreatorAndCopier(UlearnDb db, ICourseRolesRepo courseRolesRepo,
                               IManualCheckingsForOldSolutionsAdder manualCheckingsForOldSolutionsAdder)
 {
     this.db = db;
     this.courseRolesRepo = courseRolesRepo;
     this.manualCheckingsForOldSolutionsAdder = manualCheckingsForOldSolutionsAdder;
 }
Beispiel #2
0
        public static async Task <Func <Slide, string> > BuildGetGitEditLinkFunc(string userId, Course course,
                                                                                 ICourseRolesRepo courseRolesRepo, ICoursesRepo coursesRepo)
        {
            var courseRole = await courseRolesRepo.GetRoleAsync(userId, course.Id);

            var canEditGit = courseRole <= CourseRoleType.CourseAdmin;

            if (!canEditGit)
            {
                return(s => null);
            }
            var publishedCourseVersion = await coursesRepo.GetPublishedCourseVersionAsync(course.Id);

            if (publishedCourseVersion == null)
            {
                return(s => null);
            }
            var repoUrl         = publishedCourseVersion.RepoUrl;
            var pathToCourseXml = publishedCourseVersion.PathToCourseXml;

            if (repoUrl == null || pathToCourseXml == null)
            {
                return(s => null);
            }
            var courseXmlDirectory = course.CourseXmlDirectory;

            return(slide =>
            {
                var pathRelative2CourseXml = slide.Info.SlideFile.FullName.Substring(courseXmlDirectory.FullName.Length + 1);
                return GitUtils.GetSlideEditLink(repoUrl, pathToCourseXml, pathRelative2CourseXml);
            });
        }
 public UsersController(IWebCourseManager courseManager, UlearnDb db,
                        IUsersRepo usersRepo, IUserSearcher userSearcher, ICourseRolesRepo courseRolesRepo)
     : base(courseManager, db, usersRepo)
 {
     this.userSearcher    = userSearcher;
     this.courseRolesRepo = courseRolesRepo;
 }
Beispiel #4
0
 public SearcherByLogin(IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, IAccessRestrictor accessRestrictor)
     : base(usersRepo, courseRolesRepo, accessRestrictor,
            true, true, true, true,
            SearchField.Login
            )
 {
 }
Beispiel #5
0
 public CourseAccessAuthorizationHandler(ICoursesRepo coursesRepo, ICourseRolesRepo courseRolesRepo, IUsersRepo usersRepo, ILogger logger)
     : base(logger)
 {
     this.coursesRepo     = coursesRepo;
     this.courseRolesRepo = courseRolesRepo;
     this.usersRepo       = usersRepo;
 }
Beispiel #6
0
 public SearcherByEmail(IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, IAccessRestrictor accessRestrictor)
     : base(usersRepo, courseRolesRepo, accessRestrictor,
            true, true, true, false,
            SearchField.Email
            )
 {
 }
Beispiel #7
0
 public UsersController(ILogger logger, IWebCourseManager courseManager, UlearnDb db,
                        IUsersRepo usersRepo, ICourseRoleUsersFilter courseRoleUsersFilter, IUserSearcher userSearcher, ICourseRolesRepo courseRolesRepo)
     : base(logger, courseManager, db, usersRepo)
 {
     this.userSearcher          = userSearcher;
     this.courseRolesRepo       = courseRolesRepo;
     this.courseRoleUsersFilter = courseRoleUsersFilter ?? throw new ArgumentNullException(nameof(courseRoleUsersFilter));
 }
Beispiel #8
0
 public SlideRenderer(IUlearnVideoAnnotationsClient videoAnnotationsClient,
                      IUserSolutionsRepo solutionsRepo, ISlideCheckingsRepo slideCheckingsRepo, ICourseRolesRepo courseRolesRepo)
 {
     this.videoAnnotationsClient = videoAnnotationsClient;
     this.solutionsRepo          = solutionsRepo;
     this.slideCheckingsRepo     = slideCheckingsRepo;
     this.courseRolesRepo        = courseRolesRepo;
 }
Beispiel #9
0
 public SearcherByNames(IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, IAccessRestrictor accessRestrictor)
     : base(usersRepo, courseRolesRepo, accessRestrictor,
            true, true, true, true,
            SearchField.Name,
            u => u.FirstName, u => u.LastName
            )
 {
 }
Beispiel #10
0
 public CommentsController(ILogger logger, IWebCourseManager courseManager, UlearnDb db,
                           ICommentsRepo commentsRepo, ICommentLikesRepo commentLikesRepo, ICommentPoliciesRepo commentPoliciesRepo,
                           IUsersRepo usersRepo, ICoursesRepo coursesRepo, ICourseRolesRepo courseRolesRepo, INotificationsRepo notificationsRepo,
                           IGroupMembersRepo groupMembersRepo, IGroupAccessesRepo groupAccessesRepo)
     : base(logger, courseManager, db, usersRepo, commentsRepo, commentLikesRepo, coursesRepo, courseRolesRepo, notificationsRepo, groupMembersRepo, groupAccessesRepo)
 {
     this.commentPoliciesRepo = commentPoliciesRepo;
 }
Beispiel #11
0
 public ReviewCommentsController(IWebCourseManager courseManager, UlearnDb db, IUsersRepo usersRepo,
                                 ISlideCheckingsRepo slideCheckingsRepo, ICourseRolesRepo courseRolesRepo, IUnitsRepo unitsRepo, INotificationsRepo notificationsRepo)
     : base(courseManager, db, usersRepo)
 {
     this.slideCheckingsRepo = slideCheckingsRepo;
     this.courseRolesRepo    = courseRolesRepo;
     this.unitsRepo          = unitsRepo;
     this.notificationsRepo  = notificationsRepo;
     this.notificationsRepo  = notificationsRepo;
 }
Beispiel #12
0
 public SlidesController(ILogger logger, IWebCourseManager courseManager, UlearnDb db, IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo,
                         IUserSolutionsRepo solutionsRepo, IUserQuizzesRepo userQuizzesRepo, IVisitsRepo visitsRepo, IGroupsRepo groupsRepo)
     : base(logger, courseManager, db, usersRepo)
 {
     CourseRolesRepo = courseRolesRepo;
     SolutionsRepo   = solutionsRepo;
     UserQuizzesRepo = userQuizzesRepo;
     VisitsRepo      = visitsRepo;
     GroupsRepo      = groupsRepo;
 }
Beispiel #13
0
 public NotificationsRepo(UlearnDb db, IServiceProvider serviceProvider,
                          IUnitsRepo unitsRepo, ICourseRolesRepo courseRolesRepo, IUsersRepo usersRepo, IWebCourseManager courseManager)
 {
     this.db = db;
     this.serviceProvider = serviceProvider;
     this.unitsRepo       = unitsRepo;
     this.usersRepo       = usersRepo;
     this.courseRolesRepo = courseRolesRepo;
     this.courseManager   = courseManager;
 }
Beispiel #14
0
 public BaseCommentController(ILogger logger, IWebCourseManager courseManager, UlearnDb db, IUsersRepo usersRepo,
                              ICommentsRepo commentsRepo, ICommentLikesRepo commentLikesRepo, ICoursesRepo coursesRepo, ICourseRolesRepo courseRolesRepo, INotificationsRepo notificationsRepo)
     : base(logger, courseManager, db, usersRepo)
 {
     this.commentsRepo      = commentsRepo;
     this.commentLikesRepo  = commentLikesRepo;
     this.coursesRepo       = coursesRepo;
     this.courseRolesRepo   = courseRolesRepo;
     this.notificationsRepo = notificationsRepo;
 }
 public FlashcardsController(ILogger logger, IWebCourseManager courseManager, UlearnDb db, IUsersRepo usersRepo,
                             IUsersFlashcardsVisitsRepo usersFlashcardsVisitsRepo,
                             IUserFlashcardsUnlockingRepo userFlashcardsUnlockingRepo,
                             ICourseRolesRepo courseRolesRepo, IGroupAccessesRepo groupAccessesRepo)
     : base(logger, courseManager, db, usersRepo)
 {
     this.usersFlashcardsVisitsRepo   = usersFlashcardsVisitsRepo;
     this.userFlashcardsUnlockingRepo = userFlashcardsUnlockingRepo;
     this.courseRolesRepo             = courseRolesRepo;
     this.groupAccessesRepo           = groupAccessesRepo;
 }
Beispiel #16
0
 public AccountController(ILogger logger, IOptions <WebApiConfiguration> options, WebCourseManager courseManager, UlearnDb db, UlearnUserManager userManager, SignInManager <ApplicationUser> signInManager,
                          ICourseRolesRepo courseRolesRepo, ICoursesRepo coursesRepo, IUsersRepo usersRepo, ISystemAccessesRepo systemAccessesRepo)
     : base(logger, courseManager, db, usersRepo)
 {
     this.userManager        = userManager;
     this.signInManager      = signInManager;
     this.courseRolesRepo    = courseRolesRepo;
     this.coursesRepo        = coursesRepo;
     this.systemAccessesRepo = systemAccessesRepo;
     this.configuration      = options.Value;
 }
Beispiel #17
0
 public void OneTimeSetUp()
 {
     SetupTestInfrastructureAsync(services => { services.AddScoped <TempCourseController>(); }).GetAwaiter().GetResult();
     tempCourseController = GetController <TempCourseController>();
     tempCourseController.DontCheckBaseCourseExistsOnCreate = true;
     tempCoursesRepo        = serviceProvider.GetService <ITempCoursesRepo>();
     courseRolesRepo        = serviceProvider.GetService <ICourseRolesRepo>();
     courseManager          = serviceProvider.GetService <IWebCourseManager>();
     testCourseDirectory    = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestData", "TempCourses", "Help"));
     workingCourseDirectory = new DirectoryInfo(Path.Combine(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "WorkingCourse")));
 }
Beispiel #18
0
 public ExportController(IWebCourseManager courseManager, UlearnDb db, IUsersRepo usersRepo,
                         IGroupMembersRepo groupMembersRepo, IVisitsRepo visitsRepo, IGroupsRepo groupsRepo, IUserQuizzesRepo userQuizzesRepo,
                         ICourseRolesRepo courseRolesRepo)
     : base(courseManager, db, usersRepo)
 {
     this.groupMembersRepo = groupMembersRepo;
     this.visitsRepo       = visitsRepo;
     this.groupsRepo       = groupsRepo;
     this.userQuizzesRepo  = userQuizzesRepo;
     this.courseRolesRepo  = courseRolesRepo;
 }
Beispiel #19
0
 public GroupController(ILogger logger, WebCourseManager courseManager, UlearnDb db,
                        IGroupsRepo groupsRepo, IGroupAccessesRepo groupAccessesRepo, IGroupMembersRepo groupMembersRepo, IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, INotificationsRepo notificationsRepo,
                        IGroupsCreatorAndCopier groupsCreatorAndCopier)
     : base(logger, courseManager, db, usersRepo)
 {
     this.groupsRepo             = groupsRepo;
     this.groupAccessesRepo      = groupAccessesRepo;
     this.groupMembersRepo       = groupMembersRepo;
     this.courseRolesRepo        = courseRolesRepo;
     this.notificationsRepo      = notificationsRepo;
     this.groupsCreatorAndCopier = groupsCreatorAndCopier;
 }
Beispiel #20
0
 public SlidesController(IWebCourseManager courseManager, UlearnDb db, IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo,
                         IUserSolutionsRepo solutionsRepo, IUserQuizzesRepo userQuizzesRepo, IVisitsRepo visitsRepo, IGroupsRepo groupsRepo,
                         SlideRenderer slideRenderer, ICoursesRepo coursesRepo)
     : base(courseManager, db, usersRepo)
 {
     this.coursesRepo     = coursesRepo;
     this.courseRolesRepo = courseRolesRepo;
     this.solutionsRepo   = solutionsRepo;
     this.userQuizzesRepo = userQuizzesRepo;
     this.visitsRepo      = visitsRepo;
     this.groupsRepo      = groupsRepo;
     this.slideRenderer   = slideRenderer;
 }
Beispiel #21
0
 public CoursesController(ILogger logger, IWebCourseManager courseManager, UlearnDb db, ICoursesRepo coursesRepo,
                          IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, IUnitsRepo unitsRepo, IUserSolutionsRepo solutionsRepo,
                          IUserQuizzesRepo userQuizzesRepo, IVisitsRepo visitsRepo, IGroupsRepo groupsRepo)
     : base(logger, courseManager, db, usersRepo)
 {
     this.coursesRepo     = coursesRepo;
     this.courseRolesRepo = courseRolesRepo;
     this.unitsRepo       = unitsRepo;
     this.solutionsRepo   = solutionsRepo;
     this.userQuizzesRepo = userQuizzesRepo;
     this.visitsRepo      = visitsRepo;
     this.groupsRepo      = groupsRepo;
 }
Beispiel #22
0
 public BaseCommentController(IWebCourseManager courseManager, UlearnDb db, IUsersRepo usersRepo,
                              ICommentsRepo commentsRepo, ICommentLikesRepo commentLikesRepo, ICoursesRepo coursesRepo, ICourseRolesRepo courseRolesRepo,
                              INotificationsRepo notificationsRepo, IGroupMembersRepo groupMembersRepo, IGroupAccessesRepo groupAccessesRepo)
     : base(courseManager, db, usersRepo)
 {
     this.commentsRepo      = commentsRepo;
     this.commentLikesRepo  = commentLikesRepo;
     this.coursesRepo       = coursesRepo;
     this.courseRolesRepo   = courseRolesRepo;
     this.notificationsRepo = notificationsRepo;
     this.groupMembersRepo  = groupMembersRepo;
     this.groupAccessesRepo = groupAccessesRepo;
 }
Beispiel #23
0
 public GroupController(IWebCourseManager courseManager, UlearnDb db,
                        IGroupsRepo groupsRepo, IGroupAccessesRepo groupAccessesRepo, IGroupMembersRepo groupMembersRepo, IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, INotificationsRepo notificationsRepo,
                        IGroupsCreatorAndCopier groupsCreatorAndCopier, IUnitsRepo unitsRepo, ISlideCheckingsRepo slideCheckingsRepo)
     : base(courseManager, db, usersRepo)
 {
     this.groupsRepo             = groupsRepo;
     this.groupAccessesRepo      = groupAccessesRepo;
     this.groupMembersRepo       = groupMembersRepo;
     this.courseRolesRepo        = courseRolesRepo;
     this.notificationsRepo      = notificationsRepo;
     this.groupsCreatorAndCopier = groupsCreatorAndCopier;
     this.unitsRepo          = unitsRepo;
     this.slideCheckingsRepo = slideCheckingsRepo;
 }
Beispiel #24
0
 public UserProgressController(IWebCourseManager courseManager, UlearnDb db, IUsersRepo usersRepo,
                               IVisitsRepo visitsRepo, IUserQuizzesRepo userQuizzesRepo, IAdditionalScoresRepo additionalScoresRepo,
                               ICourseRolesRepo courseRolesRepo, IGroupAccessesRepo groupAccessesRepo, IGroupMembersRepo groupMembersRepo,
                               ISlideCheckingsRepo slideCheckingsRepo)
     : base(courseManager, db, usersRepo)
 {
     this.visitsRepo           = visitsRepo;
     this.userQuizzesRepo      = userQuizzesRepo;
     this.additionalScoresRepo = additionalScoresRepo;
     this.courseRolesRepo      = courseRolesRepo;
     this.groupAccessesRepo    = groupAccessesRepo;
     this.groupMembersRepo     = groupMembersRepo;
     this.slideCheckingsRepo   = slideCheckingsRepo;
 }
Beispiel #25
0
 public CodeReviewStatisticsController(IWebCourseManager courseManager,
                                       ISlideCheckingsRepo slideCheckingsRepo,
                                       IUsersRepo usersRepo,
                                       IGroupsRepo groupsRepo,
                                       IGroupMembersRepo groupMembersRepo,
                                       ICourseRolesRepo courseRolesRepo,
                                       UlearnDb db)
     : base(courseManager, db, usersRepo)
 {
     this.slideCheckingsRepo = slideCheckingsRepo;
     this.groupsRepo         = groupsRepo;
     this.groupMembersRepo   = groupMembersRepo;
     this.courseRolesRepo    = courseRolesRepo;
 }
Beispiel #26
0
 public ExerciseController(IWebCourseManager courseManager, UlearnDb db, MetricSender metricSender,
                           IUsersRepo usersRepo, IUserSolutionsRepo userSolutionsRepo, ICourseRolesRepo courseRolesRepo, IVisitsRepo visitsRepo,
                           ILtiConsumersRepo ltiConsumersRepo, ILtiRequestsRepo ltiRequestsRepo, ISlideCheckingsRepo slideCheckingsRepo, IGroupsRepo groupsRepo,
                           IStyleErrorsRepo styleErrorsRepo)
     : base(courseManager, db, usersRepo)
 {
     this.metricSender       = metricSender;
     this.userSolutionsRepo  = userSolutionsRepo;
     this.courseRolesRepo    = courseRolesRepo;
     this.visitsRepo         = visitsRepo;
     this.ltiConsumersRepo   = ltiConsumersRepo;
     this.ltiRequestsRepo    = ltiRequestsRepo;
     this.slideCheckingsRepo = slideCheckingsRepo;
     this.groupsRepo         = groupsRepo;
     this.styleErrorsRepo    = styleErrorsRepo;
 }
Beispiel #27
0
 public ExerciseController(IWebCourseManager courseManager, UlearnDb db, MetricSender metricSender,
                           IUsersRepo usersRepo, IUserSolutionsRepo userSolutionsRepo, ICourseRolesRepo courseRolesRepo, IVisitsRepo visitsRepo,
                           ISlideCheckingsRepo slideCheckingsRepo, IGroupsRepo groupsRepo, StyleErrorsResultObserver styleErrorsResultObserver,
                           IStyleErrorsRepo styleErrorsRepo, IServiceScopeFactory serviceScopeFactory)
     : base(courseManager, db, usersRepo)
 {
     this.metricSender              = metricSender;
     this.userSolutionsRepo         = userSolutionsRepo;
     this.courseRolesRepo           = courseRolesRepo;
     this.visitsRepo                = visitsRepo;
     this.slideCheckingsRepo        = slideCheckingsRepo;
     this.groupsRepo                = groupsRepo;
     this.styleErrorsRepo           = styleErrorsRepo;
     this.styleErrorsResultObserver = styleErrorsResultObserver;
     this.serviceScopeFactory       = serviceScopeFactory;
 }
Beispiel #28
0
        protected AbstractSearcherForInstructors(
            IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, IAccessRestrictor accessRestrictor,
            bool hasSystemAdministratorAccess, bool hasCourseAdminAccess, bool hasInstructorAccessToGroupMembers, bool hasInstructorAccessToCourseInstructors,
            SearchField searchField
            )
        {
            this.usersRepo        = usersRepo;
            this.courseRolesRepo  = courseRolesRepo;
            this.accessRestrictor = accessRestrictor;

            this.hasSystemAdministratorAccess           = hasSystemAdministratorAccess;
            this.hasCourseAdminAccess                   = hasCourseAdminAccess;
            this.hasInstructorAccessToGroupMembers      = hasInstructorAccessToGroupMembers;
            this.hasInstructorAccessToCourseInstructors = hasInstructorAccessToCourseInstructors;

            this.searchField = searchField;
        }
Beispiel #29
0
 public GroupAccessesRepo(
     UlearnDb db,
     IGroupsRepo groupsRepo, ISystemAccessesRepo systemAccessesRepo, ICoursesRepo coursesRepo, IGroupMembersRepo groupMembersRepo,
     IUsersRepo usersRepo,
     ICourseRolesRepo courseRolesRepo,
     IWebCourseManager courseManager
     )
 {
     this.db                 = db;
     this.groupsRepo         = groupsRepo;
     this.systemAccessesRepo = systemAccessesRepo;
     this.coursesRepo        = coursesRepo;
     this.groupMembersRepo   = groupMembersRepo;
     this.courseRolesRepo    = courseRolesRepo;
     this.usersRepo          = usersRepo;
     this.courseManager      = courseManager;
 }
Beispiel #30
0
        public AbstractSearcherForInstructors(
            IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, IAccessRestrictor accessRestrictor,
            bool hasSystemAdministratorAccess, bool hasCourseAdminAccess, bool hasInstructorAccessToGroupMembers, bool hasInstructorAccessToCourseInstructors,
            SearchField searchField,
            params Expression <Func <ApplicationUser, string> >[] userProperties
            )
        {
            if (userProperties.Length == 0)
            {
                throw new ArgumentException("UserProperties should be specified", nameof(userProperties));
            }

            this.usersRepo        = usersRepo;
            this.courseRolesRepo  = courseRolesRepo;
            this.accessRestrictor = accessRestrictor;

            this.hasSystemAdministratorAccess           = hasSystemAdministratorAccess;
            this.hasCourseAdminAccess                   = hasCourseAdminAccess;
            this.hasInstructorAccessToGroupMembers      = hasInstructorAccessToGroupMembers;
            this.hasInstructorAccessToCourseInstructors = hasInstructorAccessToCourseInstructors;

            this.searchField    = searchField;
            this.userProperties = userProperties;
        }