public byte[] CreateDocument(object docObj)
        {
            PdfDocumentDto doc       = (PdfDocumentDto)docObj;
            var            reportDto = doc.ReportDto;
            var            contacts  = doc.Contacts;

            CountryInSettings = reportDto.Country;
            _translator       = Startup.GetTranslation;
            _document         = new Document {
                Info = { Title = reportDto.Name }
            };
            var cosCount = GetColCount(reportDto.Criteria);

            DefineStyles();
            if (reportDto.AdditionalPreferences.ExportType == "table")
            {
                colsRows = 0;
                CreateTablePage(reportDto.Criteria, cosCount);
                if (reportDto.Criteria.Columns.Any(r => (int)r.Column >= 9 && (int)r.Column <= 13 && r.IsChecked) &&
                    !string.Equals(reportDto.Criteria.GroupBy, "None", StringComparison.InvariantCultureIgnoreCase))
                {
                    FillGrouped(cosCount, GroupBy(contacts, reportDto.Criteria), reportDto.Criteria);
                }
                else
                {
                    FillContent(contacts, reportDto.Criteria);
                }
                AddBottom(GetTranslation("contact_report_summary"), GetTranslation("contact_number_addresses"), colsRows);
            }
            if (reportDto.AdditionalPreferences.ExportType == "labels")
            {
                CreateLabelPage();
                FillLabelRows(reportDto.Criteria, contacts);
            }
            if (reportDto.AdditionalPreferences.ExportType == "envelopes")
            {
                return(FillEnvelops(contacts, reportDto.AdditionalPreferences.CustomAddress, reportDto.Criteria));
            }
            PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true);

            pdfRenderer.Document = _document;
            pdfRenderer.RenderDocument();
            using (MemoryStream ms = new MemoryStream())
            {
                pdfRenderer.Save(ms, false);
                byte[] buffer = new byte[ms.Length];
                ms.Seek(0, SeekOrigin.Begin);
                ms.Flush();
                ms.Read(buffer, 0, (int)ms.Length);
                ms.Close();
                return(buffer);
            }
        }
Esempio n. 2
0
        private async Task <bool> GenerateReport(string qRepName, QueueObject obj)
        {
            var reportData = (BaseFilterReportRequest)obj.FilterDataObj;
            var resp       = new UploadPdfReportDto
            {
                PdfReportId = reportData.PdfReportId,
                Schema      = reportData.Schema,
                Key         = reportData.Key,
                Status      = PDFReportStatus.Ready
            };

            try
            {
                PdfDocumentDto          pdfDoc;
                BaseFilterReportRequest req;
                switch (obj.Executor.Method.Name)
                {
                case "GetContactPdf":
                    req             = (BaseFilterReportRequest)obj.FilterDataObj;
                    resp.PdfByteArr = obj.Executor.Invoke(req.ReportDto);
                    break;

                case "GetTransactionPdf":
                    req             = (BaseFilterReportRequest)obj.FilterDataObj;
                    resp.PdfByteArr = obj.Executor.Invoke(req.Filter);
                    break;

                case "CreateContactReportPDf":
                    var reqContPdf = (ContactReportPdfOnlyRequest)obj.FilterDataObj;
                    pdfDoc = new PdfDocumentDto
                    {
                        ReportDto = reqContPdf.ReportDto,
                        Contacts  = reqContPdf.Contacts
                    };
                    resp.PdfByteArr = obj.Executor.Invoke(pdfDoc);
                    break;

                case "CreateTransactionReportPDf":
                    var reqTransPdf = (TransactionReportPdfOnlyRequest)obj.FilterDataObj;
                    pdfDoc = new PdfDocumentDto
                    {
                        Filter     = reqTransPdf.Filter,
                        Grouped    = reqTransPdf.Grouped,
                        CountTrans = reqTransPdf.TransactionCount
                    };
                    resp.PdfByteArr = obj.Executor.Invoke(pdfDoc);
                    break;

                default:
                    throw new MissingMethodException("can't get correct method for delegate");
                }
            }
            catch (Exception e)
            {
                resp.Status     = PDFReportStatus.GenerationError;
                resp.Message    = e.Message;
                resp.StackTrace = e.StackTrace;
                isWorking       = false;
            }

            AddToSending(resp);


            if (!isSending && _sendingDict.Any())
            {
                await SendReport();
            }
            return(true);
        }
Esempio n. 3
0
        /// <summary>
        /// Initializate collections in case if we need name of one of them
        /// </summary>
        /// <param name="transFunc">Use delegate for translation method wich work with localResource file</param>
        /// <param name="paymentMethods"></param>
        /// <param name="solicitors"></param>
        /// <param name="mailings"></param>
        /// <param name="departments"></param>
        /// <param name="categoryTree"></param>
        public byte[] CreateDocument(object docObj)
        {
            PdfDocumentDto doc        = (PdfDocumentDto)docObj;
            var            filter     = doc.Filter;
            var            countTrans = doc.CountTrans;
            var            grouped    = doc.Grouped;

            // Create a new MigraDoc document
            _document = new Document {
                Info = { Title = filter.Name }
            };


            DefineStyles();
            if (filter.view == TransFilterView.Details)
            {
                var colsCount = CreatePage(filter, countTrans);
                if (string.Equals(filter.subtotalBy, "None", StringComparison.InvariantCultureIgnoreCase))
                {
                    FillContent(colsCount, grouped.GroupedObj, filter);
                }
                else
                {
                    FillGroupedContent(colsCount, grouped.GroupedObj, filter);
                }
            }
            if (filter.view == TransFilterView.Total)
            {
                if (string.Equals(filter.totalOnlyBy, "totalOnly", StringComparison.InvariantCultureIgnoreCase))
                {
                    CreatePage(filter, countTrans);
                    if (string.Equals(filter.subtotalBy, "None", StringComparison.InvariantCultureIgnoreCase))
                    {
                        FillTotalContent(grouped, filter);
                    }
                    if (!string.Equals(filter.subtotalBy, "None", StringComparison.InvariantCultureIgnoreCase))
                    {
                        FillSubGroupedTotalContent(grouped, filter);
                    }
                }
                else
                {
                    if (filter.ReportType == TransFilterType.Payment)
                    {
                        FillMatrixRows((MatrixDTO)grouped, filter, countTrans);
                    }
                }
            }
            //  FillContent(colsCount);
            PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true);

            pdfRenderer.Document = _document;
            pdfRenderer.RenderDocument();
            using (MemoryStream ms = new MemoryStream())
            {
                pdfRenderer.Save(ms, false);
                byte[] buffer = new byte[ms.Length];
                ms.Seek(0, SeekOrigin.Begin);
                ms.Flush();
                ms.Read(buffer, 0, (int)ms.Length);
                ms.Close();
                return(buffer);
            }
        }