Exemple #1
0
        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)));
        }