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