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); }
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); }