public async Task <GenericResponse <ShapedDataWithLinks> > GetRefreshTokens(RefreshTokenResourceParameter resourceParameter, string mediaType)
        {
            try
            {
                if (!MediaTypeHeaderValue.TryParse(mediaType,
                                                   out MediaTypeHeaderValue parsedMediaType))
                {
                    return(GenericResponseBuilder.NoSuccess <ShapedDataWithLinks>(null, "Wrong media type"));
                }

                var refreshTokens = await this.dataService.RefreshTokens.FindAllAsync(resourceParameter);

                if (refreshTokens.Count == 0)
                {
                    return(GenericResponseBuilder.Success <ShapedDataWithLinks>(null));
                }

                var paginationMetaData = new PaginationMetaData
                {
                    TotalCount  = refreshTokens.TotalCount,
                    PageSize    = refreshTokens.PageSize,
                    CurrentPage = refreshTokens.CurrentPage,
                    TotalPages  = refreshTokens.TotalPages
                };

                var links = CreateLinksForRefreshTokens(resourceParameter, refreshTokens.HasNext, refreshTokens.HasPrevious);

                var shapedRefreshTokens = this.mapper
                                          .Map <IEnumerable <RefreshTokenDto> >(refreshTokens)
                                          .ShapeData(resourceParameter.Fields);

                var includeLinks = parsedMediaType.SubTypeWithoutSuffix
                                   .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase);

                var refreshTokensToReturnWithLinks = shapedRefreshTokens.Select(token =>
                {
                    var tokenAsDictionary = token as IDictionary <string, object>;
                    if (includeLinks)
                    {
                        var userLinks = CreateLinksForRefreshToken((Guid)tokenAsDictionary["Id"], resourceParameter.Fields);
                        tokenAsDictionary.Add("links", userLinks);
                    }
                    return(tokenAsDictionary);
                });

                var refreshTokensToReturn = new ShapedDataWithLinks()
                {
                    Value = refreshTokensToReturnWithLinks,
                    Links = links,
                    PaginationMetaData = paginationMetaData
                };

                return(GenericResponseBuilder.Success <ShapedDataWithLinks>(refreshTokensToReturn));
            }
            catch (Exception ex)
            {
                logger.LogError(string.Format("Error in BLL - GetRefreshTokens. {0}", ex.Message));
                return(GenericResponseBuilder.NoSuccess <ShapedDataWithLinks>(null, ex.Message.ToString()));
            }
        }
Esempio n. 2
0
        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()));
            }
        }