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