private async Task <List <StudyMaterialViewModel> > GetDetailedStudyMaterials(int courseId, int pageNumber = 0, StudyMaterialSortingCriteria sortCriteria = StudyMaterialSortingCriteria.NoSorting, string searchFor = null, int[] categories = null) { int itemsCount = WebConstants.MAX_NUMBER_OF_STUDY_MATERIALS_PER_PAGE; int offset = pageNumber * WebConstants.MAX_NUMBER_OF_STUDY_MATERIALS_PER_PAGE; List <DetailedStudyMaterialDTO> studyMaterials = new List <DetailedStudyMaterialDTO>(); switch (sortCriteria) { case StudyMaterialSortingCriteria.NoSorting: studyMaterials = await _studyMaterialManagementService.GetDetailedStudyMaterials <NoSorting>(courseId, offset, itemsCount, searchFor, categories); break; case StudyMaterialSortingCriteria.RatingAsc: studyMaterials = await _studyMaterialManagementService.GetDetailedStudyMaterials(courseId, offset, itemsCount, searchFor, categories, x => x.TotalRating); break; case StudyMaterialSortingCriteria.RatingDesc: studyMaterials = await _studyMaterialManagementService.GetDetailedStudyMaterials(courseId, offset, itemsCount, searchFor, categories, x => x.TotalRating, false); break; case StudyMaterialSortingCriteria.UploadDateAsc: studyMaterials = await _studyMaterialManagementService.GetDetailedStudyMaterials(courseId, offset, itemsCount, searchFor, categories, x => x.UploadDate); break; case StudyMaterialSortingCriteria.UploadDateDesc: studyMaterials = await _studyMaterialManagementService.GetDetailedStudyMaterials(courseId, offset, itemsCount, searchFor, categories, x => x.UploadDate, false); break; } studyMaterials = await _studyMaterialManagementService.AppendRating(this.GetUserId(), studyMaterials); return(_mapper.Map <List <DetailedStudyMaterialDTO>, List <StudyMaterialViewModel> >(studyMaterials)); }
/// <summary> /// Sets predefined values for a page. /// </summary> /// <param name="courseId">Unique identifier of a course</param> /// <param name="sortCriteria">Choosen sort criteria</param> /// <param name="categories">List of selected categories</param> /// <returns></returns> private async Task SetViewInformation(int courseId, HttpReponseStatusCode statusCode, string searchFor = null, StudyMaterialSortingCriteria sortCriteria = StudyMaterialSortingCriteria.NoSorting, int[] categories = null) { ViewBag.SortingCriteria = sortCriteria; ViewBag.SelectedCategories = categories; ViewBag.SearchFor = searchFor; ViewBag.InfoMessage = new InfoMessage(_stringLocalizer, statusCode); ViewBag.AllCategories = _mapper.Map <List <CategoryDTO>, List <CategoryViewModel> >(await _categoryService.GetAll(x => x.CourseId == courseId && !x.Deleted, x => x.Name)); }
public async Task <ActionResult> SearchSortFilter(int courseId, int pageNumber, StudyMaterialSortingCriteria sortCriteria, string searchFor, int[] categories) { int totalNumberOfItems = await _studyMaterialManagementService.Count(courseId, searchFor, categories); PageInformation pageinformation = new PageInformation(pageNumber, totalNumberOfItems, WebConstants.MAX_NUMBER_OF_STUDY_MATERIALS_PER_PAGE); List <StudyMaterialViewModel> detailedStudyMaterialViewModels = await GetDetailedStudyMaterials(courseId, pageinformation.PageNumber, sortCriteria, searchFor, categories); CourseStudyMaterialsViewModel mainModel = new CourseStudyMaterialsViewModel(courseId, detailedStudyMaterialViewModels, pageinformation); await SetViewInformation(courseId, HttpReponseStatusCode.NoStatus, searchFor, sortCriteria, categories); return(View("Course", mainModel)); }