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); }
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); }
protected IActionResult Error(string message, HttpStatusCode code = HttpStatusCode.BadRequest) { var result = new ObjectResult(EnvelopeResponse.Error(message, code)) { StatusCode = (int)code }; return(result); }
void _ListEnvelopes() { DocusignResponse response = new DocusignResponse(); SendRestRequest(response, HttpMethod.Get, "envelopes", null, Query).Wait(); if (response.IsError) { response.Throw(); } resObj = response.GetData <EnvelopeResponse>(); }
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; }
/// <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 }); }
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(); } }
protected IActionResult Success <TResult>(TResult result) => Ok(EnvelopeResponse.Success(result));
protected IActionResult Success() => Ok(EnvelopeResponse.Success());
protected IActionResult Created <TResult>(TResult value) => new ObjectResult(EnvelopeResponse.Success(value)) { StatusCode = (int)HttpStatusCode.Created };
protected IActionResult Created() => new ObjectResult(EnvelopeResponse.Success()) { StatusCode = (int)HttpStatusCode.Created };