Ejemplo n.º 1
0
        public static ReportDef Create(DocDef docDef)
        {
            if (docDef == null)
            {
                throw new ApplicationException("Не могу создать отчет! Класс документа не указан!");
            }

            var sourceDefId = Guid.NewGuid();
            var sourceDef   = new ReportSourceDef {
                Id = sourceDefId, DocDef = docDef, Caption = docDef.Caption, Attributes = new List <ReportSourceSystemAttributeDef>()
            };

            sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.Created,
                Caption = "Дата создания документа"
            });
            sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.Modified,
                Caption = "Дата изменения документа"
            });
            sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.State,
                Caption = "Статус документа"
            });
            sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.StateDate,
                Caption = "Дата установки статуса документа"
            });

            return(new ReportDef
            {
                Caption = docDef.Caption ?? docDef.Name ?? "Новый отчет",
                Columns = new List <ReportColumnDef>(),
                Conditions = new List <ReportConditionItemDef>(),
                Joins = new List <ReportSourceJoinDef>(),
                Sources = new List <ReportSourceDef>(new[] { sourceDef }),
                SourceId = sourceDefId
            });
        }
Ejemplo n.º 2
0
        public static ReportSourceJoinDef JoinDocDefSource(this ReportDef def, Guid masterSourceId, DocDef docDef,
                                                           Guid attrDefId)
        {
            Check(def);
            var masterSourceDef = GetSourceDef(def, masterSourceId);
            var docDefCount     = def.Sources.Count(s => s.DocDef.Id == docDef.Id);

            var jointSourceId  = Guid.NewGuid();
            var jointSourceDef = new ReportSourceDef
            {
                Id         = jointSourceId,
                DocDef     = docDef,
                Caption    = docDef.Caption + (docDefCount > 0 ? (docDefCount + 1).ToString() : String.Empty),
                Attributes = new List <ReportSourceSystemAttributeDef>()
            };

            jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.Created,
                Caption = "Дата создания документа"
            });
            jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.Modified,
                Caption = "Дата изменения документа"
            });
            jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.State,
                Caption = "Статус документа"
            });
            jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.StateDate,
                Caption = "Дата установки статуса документа"
            });

            def.Sources.Add(jointSourceDef);

            var jointAttrId  = Guid.NewGuid();
            var attr         = masterSourceDef.DocDef.Attributes.FirstOrDefault(a => a.Id == attrDefId);
            var jointAttrDef = attr != null
                ? new ReportAttributeDef {
                Id = jointAttrId, SourceId = masterSourceId, AttributeId = attrDefId
            }
                : new ReportAttributeDef {
                Id = jointAttrId, SourceId = jointSourceId, AttributeId = attrDefId
            };

            var joinDef =
                new ReportSourceJoinDef
            {
                Id            = Guid.NewGuid(),
                JoinAttribute = jointAttrDef,
                JoinType      = SqlSourceJoinType.Inner,
                MasterId      = masterSourceId,
                SourceId      = jointSourceId
            };

            def.Joins.Add(joinDef);

            return(joinDef);
        }