private async Task<ActionResult> SaveInternal(string from_name, string from_email, WorkOrder order) { var cookies = new CookieManager(HttpContext); if(cookies.GetUser() == null) { return RedirectToAction("Index", "Index", new { goed = true }); } PerfectView.PerfectViewSoapClient client = new PerfectView.PerfectViewSoapClient(); try { var response = await client.ActivityCreateAsync(Settings.Credentials, new PerfectView.PvActivitySettingsData { WorkflowId = Settings.SupportWorkflowId, WorkflowStepId = Settings.NieuwWorkFlowStepId, ParentRelationshipId = Guid.Parse(order.BedrijfsId), ChildRelationshipId = !string.IsNullOrEmpty(order.ContactpersoonId) ? Guid.Parse(order.ContactpersoonId) : (Guid?)null, }, new PerfectView.PvActivityFollowUpData { Start = ParseDateTime(order.Momenten.FirstOrDefault(), m => m.Datum, m => m.Begintijd), End = ParseDateTime(order.Momenten.FirstOrDefault(), m => m.Datum, m => m.Eindtijd) }, new PerfectView.PvFieldValueData[] { ActivityRequestBuilder.Build(ActivityFields.Onderwerp, GetOnderwerp(from_name, order.Opdracht) ), ActivityRequestBuilder.Build(ActivityFields.Omschrijving, order.Opdracht), ActivityRequestBuilder.Build(ActivityFields.Oplossing, BuildOplossing(order)), }, null); if(response.Body.ActivityCreateResult.Activity == null) { throw new Exception(response.Body.ActivityCreateResult.ErrorInformation); } var activityId = response.Body.ActivityCreateResult.Activity.Id; await client.ActivityFlowAsync(Settings.Credentials, activityId, Guid.Empty, Guid.Empty, Guid.Parse(order.Wachtrij)); var sigToImg = new SignatureToImage() { BackgroundColor = Color.White, PenColor = Color.FromArgb(20, 83, 148), CanvasWidth = 290, CanvasHeight = 330, PenWidth = 2, FontSize = 24, FontName = "Journal", }; using(var signatureImage = sigToImg.SigJsonToImage(order.output)) using(System.IO.MemoryStream stream = new System.IO.MemoryStream()) { signatureImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png); byte[] imageBytes = stream.ToArray(); string imageBase64String = Convert.ToBase64String(imageBytes); await client.ActivityAddAttachmentAsync(Settings.Credentials, activityId, "handtekening.png", imageBase64String); var htmlBytes = System.Text.Encoding.UTF8.GetBytes(ActivityRequestBuilder.BuildHtml(order, imageBase64String)); string htmlBase64String = Convert.ToBase64String(htmlBytes); await client.ActivityAddAttachmentAsync(Settings.Credentials, activityId, "werkbon.html", htmlBase64String); } return RedirectToAction("Index", "Index", new { goed = true }); } catch(Exception exc) { return RedirectToAction("Index", "Index", new { goed = false, error = exc.Message }); } }