예제 #1
0
        private async Task <bool> Sender(UploadPdfReportDto request)
        {
            HttpClient client     = new HttpClient();
            var        baseUrlStr = string.Format(baseSenderAddress, request.Schema);

            client.BaseAddress = new Uri(baseUrlStr);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));
            var req = Newtonsoft.Json.JsonConvert.SerializeObject(request);
            //var result = await client.PostAsJsonAsync("api/report/UploadPdfReport", request);
            HttpContent inputContent = new StringContent(req, Encoding.UTF8, "application/json");
            var         result       = await client.PostAsync("api/report/UploadPdfReport", inputContent);

            return(result.IsSuccessStatusCode);
        }
예제 #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);
        }
예제 #3
0
 private void AddToSending(UploadPdfReportDto resp)
 {
     _sendingDict.TryAdd($"{resp.PdfReportId}_{resp.Schema}", resp);
 }