コード例 #1
0
        public IActionResult GetCoursesForStudent(
            Guid studentId,
            CourseParameters parameters,
            [FromHeader(Name = "Accept")] string mediaType)
        {
            if (!this.courseService.StudentExists(studentId))
            {
                return(this.NotFound());
            }
            if (!this.courseService.CourseMappingExists(parameters))
            {
                return(this.BadRequest());
            }
            if (!this.courseService.CoursePropertiesExists(parameters))
            {
                return(this.BadRequest());
            }

            var courses    = this.courseService.GetPagedList(studentId, parameters);
            var courseDtos = this.mapper.Map <IEnumerable <CourseDto> >(courses);

            if (mediaType == MediaType.OutputFormatterJson)
            {
                this.Response.Headers.Add(Header.XPagination, JsonConvert.SerializeObject(courses.CreateBasePagination()));
                var values = courseDtos.ShapeDataCollectionWithHateoasLinks(parameters.Fields, this.CreateLinksForCourse);
                var links  = this.urlHelper.CreateLinks(RouteName.GetCoursesForStudent, parameters, courses);
                return(this.Ok(new HateoasDto(values, links)));
            }

            this.Response.Headers.Add(Header.XPagination, JsonConvert.SerializeObject(
                                          this.urlHelper.CreateHateoasPagination(RouteName.GetCoursesForStudent, parameters, courses)));

            return(this.Ok(courseDtos.ShapeDataCollection(parameters.Fields)));
        }
コード例 #2
0
        public async Task <PagedList <Course> > GetCoursesAsync(Guid orgId, CourseParameters courseParameters,
                                                                bool trackChanges)
        {
            var course = await FindByCondition(e => e.OrganizationId.Equals(orgId), trackChanges)
                         .OrderBy(e => e.CourseName)
                         .ToListAsync();

            return(PagedList <Course>
                   .ToPagedList(course, courseParameters.PageNumber, courseParameters.PageSize));
        }
コード例 #3
0
        public PagedList <Course> GetCourses(CourseParameters courseParameters)
        {
            var courses = FindByCondition(o => o.Name.Length >= 0)
                          .OrderBy(on => on.Name);

            SearchByName(ref courses, courseParameters.Name);

            return(PagedList <Course> .ToPagedList(courses,
                                                   courseParameters.PageNumber,
                                                   courseParameters.PageSize));
        }
コード例 #4
0
        public IActionResult GetCourses([FromQuery] CourseParameters courseParameters)
        {
            var courses = _repository.Course.GetCourses(courseParameters);

            var metadata = new
            {
                courses.TotalCount,
                courses.PageSize,
                courses.CurrentPage,
                courses.TotalPages,
                courses.HasNext,
                courses.HasPrevious
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

            _logger.LogInfo($"Returned {courses.Count()} courses from database.");

            return(Ok(courses));
        }
コード例 #5
0
        public async Task <IActionResult> GetCoursesForOrganization(Guid orgId, [FromQuery]
                                                                    CourseParameters courseParameters)

        {
            var organization = await _repository.Organization.GetOrganizationAsync(orgId, trackChanges : false);

            if (organization == null)
            {
                _logger.LogInfo($"Organization with id: {orgId} doesn't exist in the database.");
                return(NotFound());
            }

            var coursesFromDb = await _repository.Course.GetCoursesAsync(orgId, courseParameters, trackChanges : false);

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(coursesFromDb.MetaData));
            var coursesDto = _mapper.Map <IEnumerable <CourseDto> >(coursesFromDb);

            //   return Ok(coursesDto);

            var links = _courseLinks.TryGenerateLinks(coursesDto, courseParameters.Fields, orgId, HttpContext);

            return(links.HasLinks ? Ok(links.LinkedEntities) : Ok(links.ShapedEntities));
        }