private static Formatting.FormattingRule BuildColumnFormatRule(Model.FormattingRule formattingRule, DatabaseType columnType, IReportToQueryContext context)
        {
            var converter = Factory.Current.Resolve <IReportToQueryPartsConverter>( );

            if (formattingRule.Is <Model.BarFormattingRule>())
            {
                Model.BarFormattingRule      barRule           = formattingRule.As <Model.BarFormattingRule>();
                Formatting.BarFormattingRule barFormattingRule = new Formatting.BarFormattingRule()
                {
                    Color = ColourFromString(barRule.BarColor)
                };
                List <TypedValue> value = TypedValueHelper.TypedValueFromEntity(barRule.BarMinValue);
                if (value != null && value.Count > 0)
                {
                    barFormattingRule.Minimum = value[0];
                }
                value = TypedValueHelper.TypedValueFromEntity(barRule.BarMaxValue);
                if (value != null && value.Count > 0)
                {
                    barFormattingRule.Maximum = value[0];
                }
                return(barFormattingRule);
            }
            if (formattingRule.Is <Model.ColorFormattingRule>())
            {
                Model.ColorFormattingRule modelColourRule = formattingRule.As <Model.ColorFormattingRule>();
                List <ColorRule>          colourRules     = modelColourRule.ColorRules.Count > 0 ?
                                                            modelColourRule.ColorRules.OrderBy(rule => rule.RulePriority ?? 0).Select(colorRule => new ColorRule
                {
                    BackgroundColor = ColourFromString(colorRule.ColorRuleBackground),
                    ForegroundColor = ColourFromString(colorRule.ColorRuleForeground),
                    Condition       = converter.ConvertCondition(colorRule.RuleCondition, columnType, context)
                }).ToList()
                                                             : null;
                Formatting.ColorFormattingRule colourFormattingRule = new Formatting.ColorFormattingRule
                {
                    Rules = colourRules
                };
                return(colourFormattingRule);
            }
            if (formattingRule.Is <Model.IconFormattingRule>())
            {
                Model.IconFormattingRule modelIconFormattingRule = formattingRule.As <Model.IconFormattingRule>();
                return(new Formatting.IconFormattingRule
                {
                    Rules = modelIconFormattingRule.IconRules.OrderBy(rule => rule.RulePriority ?? 0).Select(rule => new Formatting.IconRule
                    {
                        CfEntityId = rule.IconRuleCFIcon != null ? rule.IconRuleCFIcon.Id: -1,
                        IconId = GetIconId(rule),
                        Condition = converter.ConvertCondition(rule.RuleCondition, columnType, context)
                    }).ToList()
                });
            }
            return(null);
        }
Example #2
0
        /// <summary>
        /// Builds the condition parameter.
        /// </summary>
        /// <param name="reportCondition">The report condition.</param>
        /// <param name="queryCondition">The query condition.</param>
        /// <param name="context"></param>
        internal static void BuildConditionParameter([NotNull] ReportCondition reportCondition, QueryCondition queryCondition, FromEntityContext context)
        {
            if (reportCondition == null)
            {
                throw new ArgumentNullException(nameof(reportCondition));
            }

            ActivityArgument activityArgument;

            // Get the column expression for the analysable field. If this is a referenced column then use it's referenced column's expression.
            ReportExpression reportExpression = reportCondition.ConditionExpression;

            if (reportExpression != null && reportExpression.Is <ColumnReferenceExpression>())
            {
                reportExpression =
                    reportCondition.ConditionExpression.As <ColumnReferenceExpression>()
                    .ExpressionReferencesColumn.ColumnExpression;
            }


            if (reportCondition.ConditionParameter?.ParamTypeAndDefault != null)
            {
                activityArgument = reportCondition.ConditionParameter.ParamTypeAndDefault;
            }
            else if (reportExpression?.ReportExpressionResultType != null)
            {
                activityArgument = reportCondition.ConditionExpression.ReportExpressionResultType;
            }
            else
            {
                EventLog.Application.WriteWarning(context.DebugInfo + "condition parameter could not be processed");
                return;
            }
            List <TypedValue> typedValues = TypedValueHelper.TypedValueFromEntity(activityArgument);

            foreach (TypedValue typedValue in typedValues)
            {
                queryCondition.Arguments.Add(typedValue);
            }
        }