Пример #1
0
        public IDictionary <string, object> GetShapedEntity(MediaTypeHeaderValue parsedMediaType,
                                                            Performance performance, string fields)
        {
            if (_paginationService.GetPrimaryMediaType(parsedMediaType) == MediaTypes.PrimaryFullPerformance)
            {
                var fullResourceToReturn = _mapper.Map <PerformanceFullDto>(performance)
                                           .ShapeData(fields) as IDictionary <string, object>;

                if (_paginationService.IncludeLinks(parsedMediaType))
                {
                    fullResourceToReturn.Add("links", _paginationService.CreateLinksForEntity(performance.Guid, fields));
                }

                return(fullResourceToReturn);
            }

            var friendlyResourceToReturn = _mapper.Map <PerformanceDto>(performance)
                                           .ShapeData(fields) as IDictionary <string, object>;

            if (_paginationService.IncludeLinks(parsedMediaType))
            {
                friendlyResourceToReturn.Add("links", _paginationService.CreateLinksForEntity(performance.Guid, fields));
            }

            return(friendlyResourceToReturn);
        }
Пример #2
0
        private object GetCustomShapedCollection(PagedList <Skill> skills, ResourceParameters resourceParameters, MediaTypeHeaderValue parsedMediaType)
        {
            var shapedSkills = _mapper.Map <IEnumerable <SkillDto> >(skills)
                               .ShapeData(resourceParameters.Fields);

            if (_paginationService.IncludeLinks(parsedMediaType))
            {
                var shapedSkillsWithLinks = shapedSkills.Select(skill =>
                {
                    var skillAsDictionary = skill as IDictionary <string, object>;
                    var skillLinks        = _paginationService.CreateLinksForEntity((Guid)skillAsDictionary["Id"], null);
                    skillAsDictionary.Add("links", skillLinks);
                    return(skillAsDictionary);
                });

                return(new
                {
                    value = shapedSkillsWithLinks,
                    links = _paginationService.CreateLinksForEntities(resourceParameters, skills.HasNext, skills.HasPrevious)
                });
            }

            return(shapedSkills);
        }