예제 #1
0
        public async Task <LearnerCoursesListResult> GetCoursesList(GetCoursesListQuery coursesQuery, string learnerId,
                                                                    string learningPathId, string publishedStatus, CancellationToken token)
        {
            IQueryable <Course> query;

            if (IsOrderedByLastAccess(coursesQuery.OrderBy))
            {
                query = OrderByLastAccess(learnerId, learningPathId, publishedStatus);
            }
            else
            {
                query = OrderByLearningPathOrder(learningPathId, publishedStatus);
            }

            var totalItems = await query.CountAsync(token);

            query = query.ApplyPaging(coursesQuery);

            var items = await query
                        .Select(CourseMapping())
                        .ToListAsync(token);

            var progress = await GetLearnerCourseProgress(learnerId, token, items);

            return(new LearnerCoursesListResult(totalItems, items, progress));
        }
예제 #2
0
        public void GetCoursesList_OrderByNotDefined_SetCreationDateDescOrder()
        {
            var query = new GetCoursesListQuery();

            _sut.GetCoursesList(query, default).Wait();

            Assert.That(query.OrderBy, Is.EqualTo(OrderByCreationDateDesc.Instance.Value));
        }
예제 #3
0
        public void GetCoursesList_OrderByNotDefined_SetLastAccessedOrder()
        {
            var query = new GetCoursesListQuery();

            _sut.GetCoursesList(query, default).Wait();

            Assert.That(query.OrderBy, Is.EqualTo(OrderByLastAccessed.Instance.Value));
        }
예제 #4
0
        public async Task <CoursesListResult> GetCoursesList(GetCoursesListQuery query, CancellationToken token)
        {
            if (query.OrderBy == 0)
            {
                query.OrderBy = OrderByCreationDateDesc.Instance.Value;
            }

            return(await _repo.GetCoursesList(query, _currentUserAccessor.OrganizationId, token));
        }
예제 #5
0
        public async Task <LearnerCoursesListResult> GetCoursesList(GetCoursesListQuery coursesQuery,
                                                                    CancellationToken token)
        {
            if (coursesQuery.OrderBy == 0)
            {
                coursesQuery.OrderBy = OrderByLastAccessed.Instance.Value;
            }

            return(await _repo.GetCoursesList(coursesQuery, _currentUserAccessor.UserId,
                                              _currentUserAccessor.LearningPathId, PublishedStatus.Instance.Name, token));
        }
예제 #6
0
        public void GetCoursesList_WhenCalled_ReturnCorrectCoursesList()
        {
            var query       = new GetCoursesListQuery();
            var coursesList = new CoursesListResult(1, new List <CoursesListItemDto>());

            _repo.Setup(x => x.GetCoursesList(query, "organizationId", default))
            .ReturnsAsync(coursesList);

            var result = _sut.GetCoursesList(query, default).Result;

            Assert.That(result, Is.EqualTo(coursesList));
        }
예제 #7
0
        public void GetCoursesList_WhenCalled_ReturnCorrectCoursesList()
        {
            var query       = new GetCoursesListQuery();
            var coursesList = new LearnerCoursesListResult(1, new List <LearnerCourseDto>(),
                                                           new List <LearnerCourseProgressDto>());

            _repo.Setup(x => x.GetCoursesList(query, "learnerId", "learningPathId", _publishedStatus, default))
            .ReturnsAsync(coursesList);

            var result = _sut.GetCoursesList(query, default).Result;

            Assert.That(result, Is.EqualTo(coursesList));
        }
예제 #8
0
        private static IQueryable <Course> ApplyOrdering(IQueryable <Course> query, GetCoursesListQuery coursesQuery)
        {
            var isSortDescending =
                Enumeration.FromValue <CourseOrderBy>(coursesQuery.OrderBy).IsSortDescending;

            var columnsMap = new Dictionary <int, Expression <Func <Course, object> > >
            {
                [OrderByAuthor.Instance.Value]           = c => c.Creator.UserName,
                [OrderByAuthorDesc.Instance.Value]       = c => c.Creator.UserName,
                [OrderByCreationDate.Instance.Value]     = c => c.CreationDate,
                [OrderByCreationDateDesc.Instance.Value] = c => c.CreationDate
            };

            query = query.ApplyOrdering(coursesQuery, columnsMap, isSortDescending);
            return(query);
        }
예제 #9
0
        public async Task <CoursesListResult> GetCoursesList(GetCoursesListQuery coursesQuery,
                                                             string organizationId,
                                                             CancellationToken token)
        {
            var query = _context.Courses.Where(c => c.Creator.OrganizationId == organizationId);

            query = ApplyAuthorFiltering(query, coursesQuery.AuthorId);

            query = ApplyLearningPathFiltering(query, coursesQuery.LearningPathId);

            query = ApplyStatusFiltering(query, coursesQuery.StatusId);

            query = ApplyOrdering(query, coursesQuery);

            var totalItems = await query.CountAsync(token);

            query = query.ApplyPaging(coursesQuery);

            var items = await query.Select(CourseMapping()).ToListAsync(token);

            return(new CoursesListResult(totalItems, items));
        }
 public void SetUp()
 {
     _service = new Mock <IGetCoursesListService>();
     _query   = new GetCoursesListQuery();
     _sut     = new GetCoursesListQueryHandler(_service.Object);
 }
예제 #11
0
 public async Task <ActionResult <CoursesListVm> > GetAll([FromQuery] GetCoursesListQuery query)
 {
     return(Ok(await Mediator.Send(query)));
 }
예제 #12
0
        public async Task <List <CourseVM> > Handle(GetCoursesListQuery request, CancellationToken cancellationToken)
        {
            var courses = await repo.GetAllAsync();

            return(mapper.Map <List <CourseVM> >(courses));
        }
예제 #13
0
 public async Task <ActionResult <LearnerCoursesListViewModel> > GetAll([FromQuery] GetCoursesListQuery query,
                                                                        CancellationToken token)
 {
     return(Ok(await Mediator.Send(query, token)));
 }