public ExpandoObject AddLinksToCollection(IEnumerable <IDictionary <string, object> > collection, string resourceName, object value) { var linkedCollection = new ExpandoObject(); var links = _hateoasHelper.CreateLinksForChildResources(resourceName, value); ((IDictionary <string, object>)linkedCollection).Add("records", collection); ((IDictionary <string, object>)linkedCollection).Add("links", links); return(linkedCollection); }
public async Task <IActionResult> GetAlbumsWithHateoas([FromRoute] Guid artistId, [FromQuery] string fields) { if (!_typeHelperService.TypeHasProperties <AlbumDto>(fields)) { return(BadRequest()); } var albumEntities = await _albumRepository.GetAlbumsForArtistAsync(artistId); var albums = Mapper.Map <IEnumerable <AlbumDto> >(albumEntities); var shapedAlbums = albums.Select(album => { return(_controllerHelper.ShapeAndAddLinkToObject(album, "Album", fields)); }); var resourceLinks = _hateoasHelper.CreateLinksForChildResources("Album", new { artistId }); var linkedResourceCollection = new ExpandoObject(); ((IDictionary <string, object>)linkedResourceCollection).Add("records", shapedAlbums); ((IDictionary <string, object>)linkedResourceCollection).Add("links", resourceLinks); return(Ok(linkedResourceCollection)); }