Example #1
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);
        }
Example #2
0
        public byte[] ExecuteTableReport(TableReportContext context)
        {
            try
            {
                using (var stream = new MemoryStream())
                {
                    // DONE: Реализовать генерацию отчета
                    var xlsDefBuilder = Provider.Get <IBuilder <ReportDef, XlsDef> >();
                    using (var xlsDef = xlsDefBuilder.Build(context.Def))
                    {
                        var builder = new XlsBuilder(xlsDef);
                        using (var workbook = builder.Build())
                        {
                            workbook.Write(stream);

                            return(stream.ToArray());
                        }
                    }
                }
            }
            catch (Exception e)
            {
                try
                {
                    var fn = Logger.GetLogFileName("ReportManagerError");
                    Logger.OutputLog(fn, e, "ExecuteTableReport Error");
                }
                catch
                {
                }
                throw;
            }
        }
Example #3
0
        public TableReportContext DeserializeTableReport(byte[] data)
        {
            try
            {
                ReportDef def;

                var s   = Encoding.UTF8.GetString(data).TrimEnd('\0');
                var pos = s.IndexOf("<", StringComparison.Ordinal);
                if (pos > 0)
                {
                    s = s.Substring(pos);
                }

                //using (var stream = new StringStream(data))
                {
                    using (var streamReader = new StringReader(s /*, Encoding.UTF8*/))
                    {
                        var settings = new XmlReaderSettings
                        {
                            CheckCharacters = false
                        };
                        using (var reader = XmlTextReader.Create(streamReader, settings))
                        {
                            var serializer = new XmlSerializer(typeof(ReportDef));
                            def = (ReportDef)serializer.Deserialize(reader);
                        }
                    }
                }
                var relations = def.Sources.Select(sourceDef =>
                                                   new ReportSourceRelations
                {
                    SourceId  = sourceDef.Id,
                    Relations = new List <DocDefRelation>(DocDefRepo.GetDocDefRelations(sourceDef.DocDef.Id))
                }).ToList();

                var context = new TableReportContext
                {
                    Def             = def,
                    SourceRelations = relations
                };

                return(context);
            }
            catch (Exception e)
            {
                try
                {
                    var fn = Logger.GetLogFileName("ReportManagerError");
                    Logger.OutputLog(fn, e, "DeserializeReportDef Error");
                }
                catch
                {
                    ;
                }
                throw;
            }
        }
Example #4
0
        public TableReportContext AddTableReportColumns(TableReportContext context, Guid sourceId, Guid[] attrDefIds)
        {
            foreach (var attrDefId in attrDefIds)
            {
                context.Def.AddColumn(sourceId, attrDefId);
            }

            return(context);
        }
Example #5
0
        public byte[] SerializeTableReport(TableReportContext context)
        {
            try
            {
                //string s;
                var serializer = new XmlSerializer(typeof(ReportDef));
                using (var stream = new MemoryStream())
                {
                    context.Def.Check();

                    var settings = new XmlWriterSettings()
                    {
                        Encoding            = Encoding.UTF8,
                        Indent              = true,
                        NewLineOnAttributes = true,
                    };

                    using (var writer = XmlTextWriter.Create(stream, settings) /*new StreamWriter(stream, Encoding.UTF8)*/)
                    {
                        serializer.Serialize(writer, context.Def); //(stream, context.Def);
                        stream.Position = 0;
                        return(stream.GetBuffer());

                        /*
                         * using (var reader = new StreamReader(stream, Encoding.UTF8))
                         * {
                         *  s = reader.ReadToEnd();
                         * }*/
                    }
                }
                //return s;
            }
            catch (Exception e)
            {
                try
                {
                    var fn = Logger.GetLogFileName("ReportManagerError");
                    Logger.OutputLog(fn, e, "SerializeReportDef Error");
                }
                catch
                {
                    ;
                }
                throw;
            }
        }
Example #6
0
        public TableReportContext CreateTableReport(Guid docDefId)
        {
            var docDef          = DocDefRepo.DocDefById(docDefId);
            var docDefRelations = DocDefRepo.GetDocDefRelations(docDefId);

            // var sourceItemId = Guid.NewGuid();
            var def     = ReportDefHelper.Create(docDef);
            var context = new TableReportContext
            {
                Def             = def,
                SourceRelations =
                    new List <ReportSourceRelations>(new[]
                {
                    new ReportSourceRelations
                    {
                        SourceId  = def.SourceId,
                        Relations = new List <DocDefRelation>(docDefRelations)
                    }
                })
            };

            return(context);
        }
Example #7
0
        public TableReportContext JoinTableReportSource(TableReportContext context, Guid masterSourceId, Guid docDefId, Guid attrDefId)
        {
            var joinDef = context.Def.JoinDocDefSource(masterSourceId, DocDefRepo.DocDefById(docDefId), attrDefId);

            var docDefNames = DocDefRepo.GetDocDefNames();
            var relations   =
                DocDefRepo.GetDocDefRelations(docDefId)
                .Where(
                    r => docDefNames.Any(dd => dd.Id == r.DocDefId) && docDefNames.Any(dd => dd.Id == r.RefDocDefId))
                .ToList();

            if (context.SourceRelations == null)
            {
                context.SourceRelations = new List <ReportSourceRelations>();
            }
            context.SourceRelations.Add(
                new ReportSourceRelations
            {
                SourceId  = joinDef.SourceId,
                Relations = relations
            });

            return(context);
        }
Example #8
0
 public TableReportContext RemoveTableReportCondition(TableReportContext context, Guid conditionId)
 {
     context.Def.RemoveCondition(conditionId);
     return(context);
 }
Example #9
0
 public TableReportContext AddTableReportExpCondition(TableReportContext context)
 {
     context.Def.AddExpConditionDef();
     return(context);
 }
Example #10
0
 public TableReportContext AddTableReportAttributeCondition(TableReportContext context, Guid leftSourceId, Guid leftAttrId,
                                                            CompareOperation operation, Guid rightSourceId, Guid rightAttrId)
 {
     context.Def.AddAttributeCondition(leftSourceId, leftAttrId, operation, rightSourceId, rightAttrId);
     return(context);
 }
Example #11
0
 public TableReportContext AddTableReportParamCondition(TableReportContext context, Guid sourceId, Guid attrDefId,
                                                        CompareOperation operation, object value, string paramCaption)
 {
     context.Def.AddParamCondition(sourceId, attrDefId, operation, value, paramCaption);
     return(context);
 }
Example #12
0
 public TableReportContext AddTableReportColumn(TableReportContext context, Guid sourceId, Guid attrDefId)
 {
     context.Def.AddColumn(sourceId, attrDefId);
     return(context);
 }
Example #13
0
 public TableReportContext RemoveTableReportSource(TableReportContext context, Guid sourceId)
 {
     context.Def.RemoveSource(sourceId);
     return(context);
 }