private static IEnumerable <PostCardResponse> PreparePostCardFromServer(EnvelopeResponse envelopeResponse, Action <double> processHandler = null, Action <string> onError = null)
        {
            var postCardResponses = new List <PostCardResponse>();
            var isWait            = true;

            PostCardItemApi.GetPostCardByEnvelopeId(envelopeResponse.EnvelopeId, postCardList =>
            {
                for (var i1 = 0; i1 < postCardList.Count; i1++)
                {
                    processHandler?.Invoke(i1 / (double)postCardList.Count);
                    var postCard = postCardList[i1];
                    for (var i = 0; i < postCard.Copy; i++)
                    {
                        postCardResponses.Add(postCard);
                    }
                }

                isWait = false;
            }, message =>
            {
                onError?.Invoke(message);
                isWait = false;
            });
            while (isWait)
            {
                Application.DoEvents();
                Thread.Sleep(100);
            }

            processHandler?.Invoke(1);
            return(postCardResponses);
        }
Пример #2
0
 private static void ErrorHandler(EnvelopeResponse response)
 {
     if (response != null && response.Body.Fault != null)
     {
         throw new Exception(response.Body.Fault.Reason.Text.Value);
     }
 }
        public static void GeneratePdfFile(this EnvelopeResponse envelopeResponse, string fileFullName, bool urgent, string waterMark, Action <double> processHandler = null, Action <string> onError = null)
        {
            var current = new ProgressInternal(0.0, 0.3);
            // 从服务器获取明信片,并安装份数进行划分
            var postCardResponses = PreparePostCardFromServer(envelopeResponse, value => processHandler?.Invoke(current.GetProcessRealValue(value)), onError);

            // 生成PDF
            GeneratePdfFileByPostCardList(envelopeResponse, postCardResponses, fileFullName, urgent, waterMark, value => processHandler?.Invoke(new ProgressInternal(0.3, 1).GetProcessRealValue(value)), onError);
        }
Пример #4
0
        protected IActionResult Error(string message, HttpStatusCode code = HttpStatusCode.BadRequest)
        {
            var result = new ObjectResult(EnvelopeResponse.Error(message, code))
            {
                StatusCode = (int)code
            };

            return(result);
        }
Пример #5
0
        void _ListEnvelopes()
        {
            DocusignResponse response = new DocusignResponse();

            SendRestRequest(response, HttpMethod.Get, "envelopes", null, Query).Wait();
            if (response.IsError)
            {
                response.Throw();
            }
            resObj = response.GetData <EnvelopeResponse>();
        }
Пример #6
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (context.ModelState.IsValid is false)
            {
                var modelState = context.ModelState;
                var erros      = modelState.Values
                                 .SelectMany(v => v.Errors)
                                 .Select(erro => erro.Exception == null ? erro.ErrorMessage : erro.Exception.Message);

                context.Result = new BadRequestObjectResult(EnvelopeResponse.Error(string.Join(", ", erros).Replace(",", Environment.NewLine)));
            }
        }
 public async Task InvokeAsync(HttpContext httpContext)
 {
     try
     {
         await next(httpContext);
     }
     catch (Exception ex)
     {
         httpContext.Response.ContentType = "application/json";
         httpContext.Response.StatusCode  = (int)HttpStatusCode.InternalServerError;
         var response = JsonConvert.SerializeObject(EnvelopeResponse.Error(ex.Message));
         await httpContext.Response.WriteAsync(response);
     }
 }
        public PostCardPageContext(Document document, DirectoryInfo templateDirectoryInfo, EnvelopeResponse envelopeResponse, bool urgent, string waterMark)
        {
            _document = document;
            _document.GetPdfDocument().AddNewPage();
            FrontPageNumber = _document.GetPdfDocument().GetNumberOfPages();
            if (envelopeResponse.DoubleSide)
            {
                _document.GetPdfDocument().AddNewPage();
                BackPageNumber = _document.GetPdfDocument().GetNumberOfPages();
            }

            _templateDirectoryInfo = templateDirectoryInfo;
            _envelopeResponse      = envelopeResponse;
            _paperColumn           = envelopeResponse.PaperColumn;
            _paperRow  = envelopeResponse.PaperRow;
            _urgent    = urgent;
            _waterMark = waterMark;
        }
Пример #9
0
 /// <summary>
 ///     将明信片请求结果转化为明信片对象
 /// </summary>
 /// <param name="envelopeResponse">明信片请求结果</param>
 /// <param name="orderId">订单ID</param>
 /// <returns>明信片对象</returns>
 public static EnvelopeInfo TranslateToEnvelope(this EnvelopeResponse envelopeResponse)
 {
     return(new EnvelopeInfo
     {
         Id = envelopeResponse.EnvelopeId,
         BackStyle = new BackStyleInfo
         {
             Name = envelopeResponse.BackStyle
         },
         DoubleSide = envelopeResponse.DoubleSide,
         FrontStyle = envelopeResponse.FrontStyle,
         PaperName = envelopeResponse.PaperName,
         ProductSize = new PostSize
         {
             Height = envelopeResponse.ProductHeight,
             Width = envelopeResponse.ProductWidth,
             Name = envelopeResponse.ProductHeight + "×" + envelopeResponse.ProductWidth
         },
         ProductFileId = envelopeResponse.ProductFileId,
         PostCards = new List <PostCardInfo>(),
         OrderId = envelopeResponse.OrderId
     });
 }
Пример #10
0
        private void ExportForm_Load(object sender, EventArgs e)
        {
            PostCardCollectionApi.GetEnvelopeInfoById(_postCardCollectionId, envelopeResponse =>
            {
                var waterMarkContext = new WaterMarkContext
                {
                    PaperName  = envelopeResponse.PaperName,     // 纸张名称
                    Width      = envelopeResponse.ProductWidth,  // 纸张宽度
                    Height     = envelopeResponse.ProductHeight, // 纸张高度
                    BackType   = envelopeResponse.BackStyle,     // 反面样式
                    DoubleSide = envelopeResponse.DoubleSide     // 双面还是单面
                };


                textEditPaperName.Text     = envelopeResponse.PaperName;
                textEditProductWidth.Text  = envelopeResponse.ProductWidth.ToString();
                textEditProductHeight.Text = envelopeResponse.ProductHeight.ToString();
                _envelopeResponse          = envelopeResponse;


                PostCardBillApi.GetOrderInfo(_envelopeResponse.OrderId, orderResponse =>
                {
                    // 用户ID
                    waterMarkContext.UserName = orderResponse.TaobaoId;
                    // 订单是否加急
                    waterMarkContext.Urgent   = orderResponse.Urgent;
                    textEditCustomerName.Text = orderResponse.TaobaoId;
                    _orderResponse            = orderResponse;
                    PostCardItemApi.GetPostCardByEnvelopeId(
                        _postCardCollectionId,
                        postCardResponseList =>
                    {
                        _postCardResponses = postCardResponseList;


                        for (var index = 0; index < _postCardResponses.Count; index++)
                        {
                            var postCardResponse = _postCardResponses[index];
                            // 第一张,默认取正面样式
                            if (index == 0)
                            {
                                waterMarkContext.FrontType = postCardResponse.FrontStyle;     // 正面样式
                            }

                            if (waterMarkContext.FrontType != postCardResponse.FrontStyle)
                            {
                                waterMarkContext.FrontType = "";     // 多种正面样式
                            }

                            if (!string.IsNullOrEmpty(postCardResponse.BackStyle))
                            {
                                waterMarkContext.BackType = postCardResponse.BackStyle;     //反面样式
                            }

                            waterMarkContext.Count += postCardResponse.Copy;     // 张数累加
                        }

                        textEditFinalMark.Text     = waterMarkContext.GenerateWaterMarkString();
                        textEditFinalFileName.Text = waterMarkContext.GenerateFileName();
                        simpleButton1.Enabled      = true;
                    },
                        postCardListFailMessage => { XtraMessageBox.Show("获取明信片列表发生错误,请检查网络!"); });
                }, message => { XtraMessageBox.Show("获取明信片订单失败,请检查网络!"); });
            }, failure => { XtraMessageBox.Show("获取明信片集合失败,请检查网络!"); });
        }
        private static void GeneratePdfFileByPostCardList(EnvelopeResponse envelopeResponse, IEnumerable <PostCardResponse> postCardResponses, string fileFullName, bool urgent, string waterMark, Action <double> processHandler, Action <string> onError = null)
        {
            var fileInfo = new FileInfo(fileFullName);

            if (fileInfo.Directory != null && !fileInfo.Directory.Exists)
            {
                fileInfo.Directory.Create();
            }

            if (fileInfo.Exists)
            {
                try
                {
                    fileInfo.Delete();
                }
                catch (Exception e)
                {
                    onError(e.Message);
                    return;
                }
            }

            var tempDirectoryInfo = new DirectoryInfo(fileInfo.DirectoryName + "/" + Guid.NewGuid());

            if (!tempDirectoryInfo.Exists)
            {
                tempDirectoryInfo.Create();
            }

            var pdfDocument = new PdfDocument(new PdfWriter(new FileStream(fileInfo.FullName, FileMode.CreateNew)));

            var document = new Document(pdfDocument);

            try
            {
                pdfDocument.SetDefaultPageSize(new PageSize(envelopeResponse.PaperWidth.MMtoPix(), envelopeResponse.PaperHeight.MMtoPix()));

                var pageContexts        = new List <PostCardPageContext>();
                var postCardPageContext = new PostCardPageContext(document, tempDirectoryInfo, envelopeResponse, urgent, waterMark);
                pageContexts.Add(postCardPageContext);

                foreach (var postCard in postCardResponses)
                {
                    if (postCardPageContext.IsFull())
                    {
                        postCardPageContext = new PostCardPageContext(document, tempDirectoryInfo, envelopeResponse, urgent, waterMark);
                        pageContexts.Add(postCardPageContext);
                    }

                    postCardPageContext.AddPostCardResponse(postCard);
                }


                for (var i = 0; i < pageContexts.Count; i++)
                {
                    processHandler?.Invoke(i / (double)pageContexts.Count);
                    var page = pageContexts[i];
                    page.PreparePdfPage();
                }

                processHandler?.Invoke(1);
            }
            finally
            {
                try
                {
                    tempDirectoryInfo.Delete(true);
                }
                catch
                {
                }

                document.Flush();
                document.Close();
            }
        }
Пример #12
0
 protected IActionResult Success <TResult>(TResult result)
 => Ok(EnvelopeResponse.Success(result));
Пример #13
0
 protected IActionResult Success()
 => Ok(EnvelopeResponse.Success());
Пример #14
0
 protected IActionResult Created <TResult>(TResult value)
 => new ObjectResult(EnvelopeResponse.Success(value))
 {
     StatusCode = (int)HttpStatusCode.Created
 };
Пример #15
0
 protected IActionResult Created()
 => new ObjectResult(EnvelopeResponse.Success())
 {
     StatusCode = (int)HttpStatusCode.Created
 };