public async Task <GenericResponse <ShapedDataWithLinks> > GetApplicationClients(ApplicationClientResourceParameter resourceParameter, string mediaType) { try { if (!MediaTypeHeaderValue.TryParse(mediaType, out MediaTypeHeaderValue parsedMediaType)) { return(GenericResponseBuilder.NoSuccess <ShapedDataWithLinks>(null, "Wrong media type")); } if (!propertyMappingService.ValidMappingExistsFor <ApplicationClientDto, ApplicationClient>(resourceParameter.OrderBy)) { return(GenericResponseBuilder.NoSuccess <ShapedDataWithLinks>(null, "Wrong OrderBy entered")); } if (!propertyCheckerService.TypeHasProperties <ApplicationClientDto>(resourceParameter.Fields, true)) { return(GenericResponseBuilder.NoSuccess <ShapedDataWithLinks>(null, "Wrong fields entered")); } var applicationClients = await this.dataService.ApplicationClients.FindAllAsync(resourceParameter); if (applicationClients.Count == 0) { return(GenericResponseBuilder.Success <ShapedDataWithLinks>(null)); } var paginationMetaData = new PaginationMetaData() { TotalCount = applicationClients.TotalCount, PageSize = applicationClients.PageSize, CurrentPage = applicationClients.CurrentPage, TotalPages = applicationClients.TotalPages }; var links = CreateLinksForApplicationClients(resourceParameter, applicationClients.HasNext, applicationClients.HasPrevious); var shapedClientsToReturn = this.mapper .Map <IEnumerable <ApplicationClientDto> >(applicationClients) .ShapeData(resourceParameter.Fields); var includeLinks = parsedMediaType.SubTypeWithoutSuffix .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase); var shapedClientsToReturnWithLinks = shapedClientsToReturn.Select(client => { var userAsDictionary = client as IDictionary <string, object>; if (includeLinks) { var userLinks = CreateLinksForApplicationClient((Guid)userAsDictionary["Id"], resourceParameter.Fields); userAsDictionary.Add("links", userLinks); } return(userAsDictionary); }); var applicationClientsToReturn = new ShapedDataWithLinks() { Value = shapedClientsToReturnWithLinks, Links = links, PaginationMetaData = paginationMetaData }; return(GenericResponseBuilder.Success <ShapedDataWithLinks>(applicationClientsToReturn)); } catch (Exception ex) { logger.LogError(string.Format("Error in BLL - GetApplicationClients. {0}", ex.Message)); return(GenericResponseBuilder.NoSuccess <ShapedDataWithLinks>(null, ex.Message.ToString())); } }