public virtual async Task <ActionResult <TDto> > GetByIdFullGraph(string id, [FromQuery] WebApiParamsDto <TDto> parameters) { if (!UIHelper.ValidFieldsFor <TDto>(parameters.Fields)) { return(BadRequest(Messages.FieldsInvalid)); } var cts = TaskHelper.CreateChildCancellationTokenSource(ClientDisconnectedToken()); //By passing true we should get the full graph of Composition and Aggregation Properties var response = await Service.GetByIdAsync(id, cts.Token, true); if (response == null) { return(NotFound()); } var links = CreateLinks(id, parameters.Fields, true); var linkedResourceToReturn = response.ShapeData(parameters.Fields) as IDictionary <string, object>; linkedResourceToReturn.Add("links", links); return(Ok(linkedResourceToReturn)); // Success(shapedData); }
public virtual async Task <ActionResult <TDto> > GetById(string id, [FromQuery] WebApiParamsDto parameters) { if (!TypeHelperService.TypeHasProperties <TDto>(parameters.Fields)) { return(ApiErrorMessage(Messages.FieldsInvalid)); } var cts = TaskHelper.CreateChildCancellationTokenSource(ClientDisconnectedToken()); //By passing true we include the Composition properties which should be any child or join entities. var response = await Service.GetByIdAsync(id, cts.Token, true, false); if (response == null) { return(ApiNotFoundErrorMessage(Messages.NotFound)); } var links = CreateLinks(id, parameters.Fields); var linkedResourceToReturn = response.ShapeData(parameters.Fields) as IDictionary <string, object>; linkedResourceToReturn.Add("links", links); return(Ok(linkedResourceToReturn)); // Success(shapedData); }
public async Task <TReadDto> GetByIdFullGraphAsync(object id, WebApiParamsDto parameters = null, CancellationToken cancellationToken = default) { var response = await client.GetWithQueryString($"{ResourceCollection}/full-graph/{id}", parameters); TReadDto item = null; if (response.IsSuccessStatusCode) { item = await response.ContentAsTypeAsync <TReadDto>(); } return(item); }