Ejemplo n.º 1
0
        /// <summary>
        /// Gets the expression.
        /// </summary>
        /// <param name="entityType">Type of the entity.</param>
        /// <param name="serviceInstance">The service instance.</param>
        /// <param name="parameterExpression">The parameter expression.</param>
        /// <param name="selection">The selection.</param>
        /// <returns></returns>
        public override Expression GetExpression(Type entityType, IService serviceInstance, ParameterExpression parameterExpression, string selection)
        {
            var values = selection.Split('|');

            ComparisonType comparisonType = values[0].ConvertToEnum <ComparisonType>(ComparisonType.EqualTo);
            decimal?       amountValue    = values[1].AsDecimalOrNull();

            var qry = new BenevolenceRequestService((RockContext)serviceInstance.Context).Queryable();
            var totalAmountEqualQuery = qry.Where(p => p.BenevolenceResults.Sum(a => a.Amount) == amountValue);

            BinaryExpression compareEqualExpression = FilterExpressionExtractor.Extract <Rock.Model.BenevolenceRequest>(totalAmountEqualQuery, parameterExpression, "p") as BinaryExpression;
            BinaryExpression result = FilterExpressionExtractor.AlterComparisonType(comparisonType, compareEqualExpression, null);

            return(result);
        }