Exemplo n.º 1
0
 internal static ExpressionSyntax StringNotEmptyCheckExpression(string parameterName)
 {
     return(PrefixUnaryExpression(
                SyntaxKind.LogicalNotExpression,
                InvocationExpression(BaseSyntaxGenerator.SimpleMemberAccess("string.IsNullOrEmpty"))
                .WithArgumentList(BaseSyntaxGenerator.SeparatedArgumentList(IdentifierName(parameterName)))));
 }
        internal static SimpleLambdaExpressionSyntax ContainsPredicate(
            string lambdaParameter,
            string modelProperty,
            string filterProperty)
        {
            var body = InvocationExpression(BaseSyntaxGenerator.SimpleMemberAccess($"{lambdaParameter}.{modelProperty}.{nameof(Queryable.Contains)}"))
                       .WithArgumentList(BaseSyntaxGenerator.SeparatedArgumentList(IdentifierName(filterProperty)));

            return(LambdaExpression(lambdaParameter, body));
        }
Exemplo n.º 3
0
        internal static MethodDeclarationSyntax SummaryFilterExtensionMethod(
            ParameterSyntax collectionParameter,
            IEnumerable <PropertyInfo> modelProperties,
            string filterModelClass)
        {
            var collectionName        = collectionParameter.Identifier.Text;
            var filterPropertiesNames = modelProperties
                                        .SelectMany(p =>
                                                    p.FilterType == FilterType.Range
                        ? new[] { p.Name + "From", p.Name + "To" }
                        : new[] { p.Name })
                                        .ToList();

            var body = Block(SingletonList(ReturnStatement(FilterChainInvocation(filterPropertiesNames))));

            return(ExtensionMethod(
                       "FilterBy",
                       collectionParameter.Type,
                       collectionParameter,
                       new[] { BaseSyntaxGenerator.Parameter(filterModelClass, "filters") },
                       body));

            InvocationExpressionSyntax FilterChainInvocation(IReadOnlyCollection <string> filterProperties)
            {
                string propertyName;

                if (filterProperties.Count == 1)
                {
                    propertyName = filterProperties.First();
                    return(InvocationExpression(
                               MemberAccessExpression(
                                   SyntaxKind.SimpleMemberAccessExpression,
                                   IdentifierName(collectionName).WithTrailingTrivia(Trivias.EndOfLine),
                                   IdentifierName($"FilterBy{propertyName}")).WithLeadingTrivia(Tab),
                               BaseSyntaxGenerator.SeparatedArgumentList(BaseSyntaxGenerator.SimpleMemberAccess($"filters.{propertyName}")))
                           .WithLeadingTrivia(Tab));
                }

                propertyName = filterProperties.Last();
                return(InvocationExpression(
                           MemberAccessExpression(
                               SyntaxKind.SimpleMemberAccessExpression,
                               FilterChainInvocation(filterProperties.Take(filterProperties.Count - 1).ToList())
                               .WithTrailingTrivia(Trivias.EndOfLine),
                               IdentifierName($"FilterBy{propertyName}")),
                           BaseSyntaxGenerator.SeparatedArgumentList(
                               BaseSyntaxGenerator.SimpleMemberAccess($"filters.{propertyName}")))
                       .WithLeadingTrivia(Tab));
            }
        }
Exemplo n.º 4
0
 internal static ExpressionSyntax LinqWhereExpression(string collectionName, SimpleLambdaExpressionSyntax predicate)
 {
     return(InvocationExpression(BaseSyntaxGenerator.SimpleMemberAccess(new[] { collectionName, "Where" }))
            .WithArgumentList(BaseSyntaxGenerator.SeparatedArgumentList(predicate)));
 }