Пример #1
0
        public static ReportConditionDef AddCondition(this ReportDef def, Guid leftSourceId, Guid leftAttrId, CompareOperation condition, ReportConditionDefType type = ReportConditionDefType.Param, string caption = null)
        {
            Check(def);
            var attrDef = CheckSourceAttribute(def, leftSourceId, leftAttrId);
            var s       = !String.IsNullOrEmpty(caption)
                ? caption
                : attrDef is AttrDef
                    ? ((AttrDef)attrDef).Caption ?? ((AttrDef)attrDef).Name
                    : ((ReportSourceSystemAttributeDef)attrDef).Caption;

            var rightPart = (type == ReportConditionDefType.Param)
                ? (ReportConditionRightPartDef) new ReportConditionRightParamDef {
                Caption = s
            }
                : new ReportConditionRightAttributeDef {
                Attribute = new ReportAttributeDef()
            };

            var conditionDef = new ReportConditionDef
            {
                Id            = Guid.NewGuid(),
                Operation     = ExpressionOperation.And,
                LeftAttribute = new ReportAttributeDef
                {
                    SourceId    = leftSourceId,
                    AttributeId = leftAttrId
                },
                Condition = condition,
                RightPart = rightPart
            };

            def.Conditions.Add(conditionDef);

            return(conditionDef);
        }
Пример #2
0
        public TableReportContext AddTableReportCondition(TableReportContext context, Guid leftSourceId, Guid leftAttrId, ReportConditionDefType type = ReportConditionDefType.Param)
        {
            var conditionDef = context.Def.AddCondition(leftSourceId, leftAttrId, CompareOperation.Equal, type);

            if (type == ReportConditionDefType.Param)
            {
                var attr       = context.Def.GetAttribute(conditionDef.LeftAttribute);
                var attrDef    = attr as AttrDef;
                var sysAttrDef = attr as ReportSourceSystemAttributeDef;

                if (attrDef != null && attrDef.Type.Id == (short)CissaDataType.Enum && attrDef.EnumDefType != null)
                {
                    var rightPart = conditionDef.RightPart as ReportConditionRightParamDef;
                    if (rightPart != null)
                    {
                        var provider = Provider.Get <IEnumRepository>();
                        rightPart.Values = new List <EnumValue>(provider.GetEnumItems(attrDef.EnumDefType.Id));
                    }
                }
                else if (sysAttrDef != null && sysAttrDef.Ident == SystemIdent.State)
                {
                    var sourceDef = context.Def.GetSourceDef(leftSourceId);
                    var rightPart = conditionDef.RightPart as ReportConditionRightParamDef;
                    if (rightPart != null)
                    {
                        var provider = Provider.Get <IDocDefStateListProvider>();
                        rightPart.Values = provider.Get(sourceDef.DocDef.Id).Select(dst => new EnumValue {
                            Id = dst.Id, Value = dst.Name
                        }).ToList();
                    }
                }
            }
            return(context);
        }