예제 #1
0
        private async void btnSave_Click(object sender, EventArgs e)
        {
            ClearErrors();

            if (HasErrors())
            {
                return;
            }

            StartNewProgressInfo(StringResources.SigningDocument);
            this.Cursor = Cursors.WaitCursor;
            bool signed = true;

            try
            {
                _digitalSignature.SignDocument();

                StartNewProgressInfo(StringResources.UploadingSignedFiles);

                _ticket = await Session.GetTikectAsync();

                UploadResult result = null;
                switch (_signatureIndex)
                {
                case 0:

                    result = await _dataService.UploadAsync(_ticket, _community.id, String.Empty,
                                                            _folder.id, String.Empty, String.Empty, _digitalSignature.DocumentId, false, String.Empty,
                                                            String.Empty, "DokuSignPrinterLocalCertificate", false, new System.IO.FileInfo(_digitalSignature.DocumentSigned));

                    break;

                case 1:
                    result = await _dataService.UploadAsync(_ticket, _community.id, String.Empty,
                                                            _folder.id, String.Empty, String.Empty, _digitalSignature.DocumentId, false,
                                                            _digitalSignature.BiometricSignature, sigOnline1.CertificatePass, "DokuSignPrinterSystemCertificate",
                                                            false, new System.IO.FileInfo(_digitalSignature.DocumentSigned));

                    break;

                case 2:
                    result = await _dataService.UploadAsync(_ticket, _community.id, String.Empty,
                                                            _folder.id, String.Empty, String.Empty, _digitalSignature.DocumentId, false,
                                                            String.Empty, String.Empty, "DokuSignPrinterBiometric", false,
                                                            new System.IO.FileInfo(_digitalSignature.DocumentSigned));

                    var sigPositions     = _digitalSignature.GetSignaturePositions();
                    var sigPosition      = (SignaturePosition)null;
                    var sigPositionsArgs = new List <DokuFlex.Windows.Common.Services.Data.SignaturePosition>(sigPositions.Count);

                    foreach (int key in sigPositions.Keys)
                    {
                        if (sigPositions.TryGetValue(key, out sigPosition))
                        {
                            sigPositionsArgs.Add(new DokuFlex.Windows.Common.Services.Data.SignaturePosition()
                            {
                                page = key,
                                x    = sigPosition.SigPosX,
                                y    = sigPosition.SigPosY
                            });
                        }
                    }

                    await _dataService.AddImageSignatureAsync(new FileInfo(_digitalSignature.BiometricSignature),
                                                              new FileInfo(_digitalSignature.SignatureImage), _ticket, result.nodeId, sigPositionsArgs.ToArray());

                    break;

                default:
                    break;
                }

                if (SelectedUsers.Count > 0)
                {
                    await _dataService.RequestDocumentSignature(_ticket, result.nodeId, SelectedUsers.Select(u => u.id).ToList());
                }

                try
                {
                    Directory.Delete(_documentDir, true);
                }
                catch (Exception ex)
                {
                    DokuFlex.Windows.Common.Log.LogFactory.CreateLog().LogError(ex);
                    //Silent exception
                }

                ConfigurationManager.Save(); //Save configuration changes.
            }
            catch (Exception ex)
            {
                DokuFlex.Windows.Common.Log.LogFactory.CreateLog().LogError(ex);
                signed = false;
            }
            finally
            {
                HideProgressInfo();
                this.Cursor = Cursors.Default;
            }
            if (signed)
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
        }