public PagedList <Skill> GetSkillsForJob(Guid jobId, SkillsResourceParameters parameters) { if (jobId == Guid.Empty) { throw new ArgumentNullException(nameof(jobId)); } IQueryable <Skill> skills = Enumerable.Empty <Skill>().AsQueryable(); if (parameters.Filter != null) { foreach (var condition in GetSkillsDictionary(jobId, parameters.Filter).Keys) { if (condition) { skills = GetSkillsDictionary(jobId, parameters.Filter)[condition]; } } } else { skills = GetSkills(jobId); } if (!string.IsNullOrWhiteSpace(parameters.OrderBy)) { var moviePropertyMappingDictionary = _propertyMappingService.GetPropertyMapping <SkillDto, Skill>(); skills = skills.ApplySort(parameters.OrderBy, moviePropertyMappingDictionary); } return(PagedList <Skill> .Create(skills, parameters.PageNumber, parameters.PageSize)); }
public ActionResult <IEnumerable <SkillDto> > GetSkillsForJob(Guid jobId, [FromQuery] SkillsResourceParameters parameters, [FromHeader(Name = "Accept")] string mediaType) { if (!_unitOfWork.Jobs.JobExists(jobId)) { return(NotFound()); } if (mediaType.Contains("full")) { if (!_propertyCheckerService.TypeHasProperties <SkillFullDto>(parameters.Fields)) { return(BadRequest()); } } if (!MediaTypeHeaderValue.TryParse(mediaType, out MediaTypeHeaderValue parsedMediaType)) { return(BadRequest()); } if (!_propertyMappingService.ValidMappingExistsFor <SkillDto, Skill>(parameters.OrderBy) || !_propertyCheckerService.TypeHasProperties <SkillDto>(parameters.Fields)) { return(BadRequest()); } if (!string.IsNullOrEmpty(parameters.Fields) && !parameters.Fields.Contains("id")) { return(BadRequest()); } var skills = _unitOfWork.Skills.GetSkillsForJob(jobId, parameters); //Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject( // _paginationService.CreatePaginationMetadata(skills, parameters))); return(Ok(_dataShapingService.GetShapedCollection(skills, parameters, parsedMediaType))); }