767 lines
30 KiB
VB.net
767 lines
30 KiB
VB.net
Imports System.ComponentModel
|
|
Imports System.Data.SqlClient
|
|
Imports System.IO
|
|
Imports System.Text.RegularExpressions
|
|
Imports DevExpress.Export.Xl
|
|
Imports DevExpress.Utils.CommonDialogs
|
|
Imports DevExpress.Utils.Drawing
|
|
Imports DevExpress.Utils.Svg.CommonSvgImages
|
|
Imports DevExpress.XtraEditors
|
|
Imports DevExpress.XtraExport.Helpers
|
|
Imports DevExpress.XtraGrid
|
|
Imports DevExpress.XtraGrid.Columns
|
|
Imports DevExpress.XtraGrid.Views.Base
|
|
Imports DevExpress.XtraGrid.Views.Grid
|
|
Imports DevExpress.XtraSplashScreen
|
|
Imports DigitalData.Modules.Base
|
|
Imports DigitalData.Modules.Logging
|
|
Imports EnvelopeGenerator.Common
|
|
Imports EnvelopeGenerator.Common.Constants
|
|
Imports EnvelopeGenerator.Common.My
|
|
Imports GdPicture14
|
|
|
|
Partial Public Class frmEnvelopeEditor
|
|
Public Property Envelope As Envelope
|
|
Public Property Documents As New BindingList(Of EnvelopeDocument)
|
|
Public Property Receivers As New BindingList(Of EnvelopeReceiver)
|
|
|
|
Private AllReceiverEmails As New List(Of String)
|
|
|
|
Private Controller As EnvelopeEditorController
|
|
Private Logger As Logger
|
|
|
|
Private Const COL_NAME = "Name"
|
|
Private Const COL_EMAIL = "Email"
|
|
Private Const COL_CODE = "AccessCode"
|
|
Private Const COL_PHONE = "PhoneNumber"
|
|
Public Property State As State
|
|
Private TempFiles As TempFiles
|
|
|
|
Public Sub New()
|
|
InitializeComponent()
|
|
End Sub
|
|
|
|
Private Async Sub btnNewFile_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnNewFile.ItemClick
|
|
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
|
|
'SaveEnvelopeWithValidation()
|
|
' If Not IsNothing(Envelope) Then
|
|
Try
|
|
' prüfen ob es schon eine Datei gibt
|
|
If Documents.Count > 0 Then
|
|
MsgBox(Resources.Envelope.Only_one_file_is_allowed, MsgBoxStyle.Information, Text)
|
|
Return
|
|
End If
|
|
|
|
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
|
|
Await AddDocument(OpenFileDialog1.FileName)
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
Finally
|
|
SplashScreenManager.CloseOverlayForm(oHandle)
|
|
|
|
RibbonPageGroupAddSignature_Enabled()
|
|
End Try
|
|
' Else
|
|
' SplashScreenManager.CloseOverlayForm(oHandle)
|
|
' End If
|
|
|
|
End Sub
|
|
Private Async Function AddDocument(pfilePath As String) As Threading.Tasks.Task(Of Boolean)
|
|
Dim oDocument = Await Controller.CreateDocument(pfilePath)
|
|
|
|
If oDocument IsNot Nothing Then
|
|
Documents.Add(oDocument)
|
|
GridDocuments.DataSource = Documents
|
|
' Update_File_DB(OpenFileDialog1.FileName)
|
|
ClearBsiItem()
|
|
Return True
|
|
Else
|
|
MsgBox(Resources.Envelope.Document_Could_Not_Be_Saved, MsgBoxStyle.Critical, Text)
|
|
Return False
|
|
End If
|
|
|
|
End Function
|
|
Private Sub frmEditor_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
Logger = State.LogConfig.GetLogger()
|
|
Logger.Debug("Loading Configuration..")
|
|
TempFiles = New TempFiles(State.LogConfig)
|
|
TempFiles.Create()
|
|
If Envelope Is Nothing Then
|
|
Logger.Debug("Loading Controller..")
|
|
Controller = New EnvelopeEditorController(State)
|
|
|
|
' Get additional data
|
|
Logger.Debug("Loading oDataForm..")
|
|
Dim oDataForm As New frmEnvelopeMainData() With {
|
|
.State = State,
|
|
.Envelope = Controller.Envelope,
|
|
.NewEnvelopeMode = True
|
|
}
|
|
|
|
Dim oResult As DialogResult = oDataForm.ShowDialog()
|
|
If oResult = DialogResult.Cancel Then
|
|
Controller.DeleteEnvelopeFromDisk(Controller.Envelope)
|
|
Me.Close()
|
|
Else
|
|
Envelope = Controller.Envelope
|
|
End If
|
|
Else
|
|
Controller = New EnvelopeEditorController(State, Envelope)
|
|
Documents = New BindingList(Of EnvelopeDocument)(Controller.Envelope.Documents)
|
|
Receivers = New BindingList(Of EnvelopeReceiver)(Controller.Envelope.Receivers)
|
|
|
|
For Each docItem As EnvelopeDocument In Documents
|
|
If Not File.Exists(docItem.Filepath) Then
|
|
Dim oTempFolder = TempFiles._TempPath
|
|
Dim oTempFilename = String.Concat(oTempFolder, "\", $"ViewEnvDoc_{Envelope.Id}.pdf")
|
|
If File.Exists(oTempFilename) Then
|
|
Try
|
|
File.OpenWrite(oTempFilename)
|
|
Catch ex As Exception
|
|
MsgBox("File might already be open?", MsgBoxStyle.Exclamation)
|
|
Me.Cursor = Cursors.Default
|
|
Exit For
|
|
End Try
|
|
|
|
|
|
File.Delete(oTempFilename)
|
|
End If
|
|
WriteBytetoPath(oTempFilename, docItem.Byte_Data)
|
|
docItem.Filepath = oTempFilename
|
|
GridDocuments.Tag = docItem.Filepath
|
|
End If
|
|
If docItem.Thumbnail Is Nothing Then
|
|
docItem.Thumbnail = Controller.CreateThumbnail(docItem.Filepath)
|
|
docItem.PageCount = Controller.GetPageCount(docItem.Filepath)
|
|
End If
|
|
Next
|
|
|
|
If Envelope.Status = Constants.EnvelopeStatus.EnvelopeSent Then
|
|
' TODO - Nach Testen
|
|
' SetFormReadonly()
|
|
End If
|
|
End If
|
|
|
|
txtMessage.EditValue = Controller.Envelope.Message
|
|
|
|
GridDocuments.DataSource = Documents
|
|
GridReceivers.DataSource = Receivers
|
|
|
|
AllReceiverEmails = Controller.GetEnvelopeReceiverAddresses(State.UserId)
|
|
RepositoryItemComboBox1.Items.Clear()
|
|
RepositoryItemComboBox1.Items.AddRange(AllReceiverEmails)
|
|
|
|
SetAccessCodeColumnVisible()
|
|
SetPhoneNumberColumnVisible()
|
|
txtEnvelopeIdLabel2.Caption = String.Format(txtEnvelopeIdLabel2.Tag.ToString, Controller.Envelope.Id)
|
|
txtCreatorEmailLabel.Caption = String.Format(txtCreatorEmailLabel.Tag.ToString, Controller.Envelope.User.Email)
|
|
|
|
SetFormTitle(Controller.Envelope.Title)
|
|
End Sub
|
|
|
|
Private Sub SetAccessCodeColumnVisible()
|
|
If Controller.Envelope.UseAccessCode Then
|
|
colAccessCode.Visible = True
|
|
Else
|
|
colAccessCode.Visible = False
|
|
End If
|
|
End Sub
|
|
Private Sub SetPhoneNumberColumnVisible()
|
|
If IsNothing(Envelope) Then
|
|
colPhoneNumber.Visible = False
|
|
Exit Sub
|
|
End If
|
|
If Envelope.TFA_Enabled = True Then
|
|
colPhoneNumber.Visible = DEF_TF_ENABLED_WITH_PHONE
|
|
Else
|
|
colPhoneNumber.Visible = False
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnDeleteFile_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnDeleteFile.ItemClick
|
|
If ViewDocuments.GetSelectedRows().Count > 0 Then
|
|
|
|
Dim oMessage = Resources.Envelope.Do_you_really_want_to_remove_this_document
|
|
If MsgBox(oMessage, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) = MsgBoxResult.No Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oDocument As EnvelopeDocument = DirectCast(ViewDocuments.GetFocusedRow(), EnvelopeDocument)
|
|
If Controller.DeleteDocument(oDocument) Then
|
|
Documents.Remove(oDocument)
|
|
GridDocuments.DataSource = Nothing
|
|
ClearBsiItem()
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnSave.ItemClick
|
|
Try
|
|
If SaveEnvelopeWithOutValidation() = True Then
|
|
bsitm_info.Caption = "Data saved succeddfully " + Now.ToString
|
|
Else
|
|
bsitm_info.Caption = "Exceprion - Error saving Data. Check LOG"
|
|
End If
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnEditFields_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnEditFields.ItemClick
|
|
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
|
|
|
|
Try
|
|
If SaveEnvelopeWithReceiverDocumentValidation() = False Then
|
|
Return
|
|
End If
|
|
|
|
If ViewDocuments.GetSelectedRows().Count > 0 Then
|
|
Dim oDocument As EnvelopeDocument = DirectCast(ViewDocuments.GetFocusedRow(), EnvelopeDocument)
|
|
Dim oEnvelope = Controller.Envelope
|
|
If Not IsNothing(oDocument.Byte_Data) Then
|
|
Dim oTempFolder = TempFiles._TempPath
|
|
Dim oTempFilename = String.Concat(oTempFolder, "\", $"ViewEnvDoc_{oEnvelope.Id}.pdf")
|
|
If Not File.Exists(oTempFilename) Then
|
|
WriteBytetoPath(oTempFilename, oDocument.Byte_Data)
|
|
oDocument.Filepath = oTempFilename
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
|
|
Dim oGDPictureKey As String = MS_GDPICTUREKEY
|
|
|
|
Dim oForm As New frmFieldEditor(State) With {
|
|
.Document = Controller.Envelope.Documents.
|
|
Where(Function(d) d.Filename = oDocument.Filename).
|
|
SingleOrDefault(),
|
|
.Receivers = Controller.Envelope.Receivers.ToList
|
|
}
|
|
oForm.ShowDialog()
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
Finally
|
|
SplashScreenManager.CloseOverlayForm(oHandle)
|
|
End Try
|
|
End Sub
|
|
Private Sub WriteBytetoPath(ByVal sFileName As String, pByte As Byte())
|
|
|
|
'For Document
|
|
Try
|
|
If Not pByte Is Nothing Then
|
|
'Read image data into a file stream
|
|
Using fs As New FileStream(sFileName, FileMode.OpenOrCreate, FileAccess.Write)
|
|
fs.Write(pByte, 0, pByte.Length)
|
|
'Set image variable value using memory stream.
|
|
fs.Flush()
|
|
fs.Close()
|
|
End Using
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in downloadFile")
|
|
End Try
|
|
End Sub
|
|
Private Function SaveEnvelopeWithValidation() As Boolean
|
|
Return SaveEnvelope(True)
|
|
End Function
|
|
|
|
Private Function SaveEnvelopeWithOutValidation() As Boolean
|
|
Return SaveEnvelope(False)
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Speichert den Envelope und prüft
|
|
''' ob Receiver und Dokument vorhanden ist.
|
|
''' </summary>
|
|
Private Function SaveEnvelopeWithReceiverDocumentValidation() As Boolean
|
|
|
|
If SaveEnvelope(False) = True Then
|
|
Dim oEnvelope = Controller.Envelope
|
|
Dim oErrors = oEnvelope.ValidateReceiverDocumentData()
|
|
If oErrors.Any Then
|
|
ShowValidationErrors(Resources.Envelope.Errors_when_saving_the_envelope, oErrors)
|
|
Return False
|
|
End If
|
|
Else
|
|
Return False
|
|
End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Function ValidateEnvelope() As List(Of String)
|
|
Dim oMessage = GetEditValueFromTextControl(txtMessage)
|
|
|
|
Dim oErrors As New List(Of String)
|
|
|
|
If String.IsNullOrWhiteSpace(oMessage) Then
|
|
oErrors.Add(Resources.Envelope.Missing_Message)
|
|
End If
|
|
|
|
If Documents.Count = 0 Then
|
|
oErrors.Add(Resources.Envelope.Missing_Documents)
|
|
End If
|
|
|
|
If Receivers.Count = 0 Then
|
|
oErrors.Add(Resources.Envelope.Missing_Receivers)
|
|
End If
|
|
|
|
For Each Receiver In Receivers
|
|
If Helpers.IsValidEmailAddress(Receiver.Email) = False Then
|
|
oErrors.Add(String.Format(Resources.Envelope.Invalid_Email_Address, Receiver.Name))
|
|
End If
|
|
Next
|
|
|
|
Return oErrors
|
|
End Function
|
|
|
|
Private Function SaveEnvelope(pWithValidation As Boolean) As Boolean
|
|
Dim oMessage = GetEditValueFromTextControl(txtMessage)
|
|
|
|
' Ensure all receivers are saved
|
|
ViewReceivers.CloseEditor()
|
|
|
|
If pWithValidation = True Then
|
|
Dim oErrors = ValidateEnvelope()
|
|
If oErrors.Any Then
|
|
ShowValidationErrors(Resources.Envelope.Errors_when_saving_the_envelope, oErrors)
|
|
Return False
|
|
End If
|
|
End If
|
|
|
|
Dim oEnvelope = Controller.Envelope
|
|
oEnvelope.Message = oMessage
|
|
oEnvelope.Documents = Documents.ToList
|
|
|
|
|
|
|
|
If Controller.SaveReceivers(oEnvelope, Receivers.ToList) = False Then
|
|
MsgBox(Resources.Envelope.Error_when_saving_the_recipients, MsgBoxStyle.Critical, Text)
|
|
Return False
|
|
End If
|
|
|
|
If Controller.SaveEnvelope() = False Then
|
|
MsgBox(Resources.Envelope.Error_when_saving_the_envelope, MsgBoxStyle.Critical, Text)
|
|
Return False
|
|
Else
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
Private Function GetEditValueFromTextControl(pControl As TextEdit) As String
|
|
If pControl.EditValue Is Nothing Then
|
|
Return String.Empty
|
|
Else
|
|
Return pControl.EditValue.ToString
|
|
End If
|
|
End Function
|
|
|
|
Private Sub ShowValidationErrors(pErrorTitle As String, pErrors As List(Of String))
|
|
Dim oError = pErrorTitle & vbNewLine & vbNewLine & String.Join(vbNewLine, pErrors)
|
|
MsgBox(oError, MsgBoxStyle.Exclamation, Text)
|
|
End Sub
|
|
|
|
Private Sub btnDeleteReceiver_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnDeleteReceiver.ItemClick
|
|
If ViewReceivers.SelectedRowsCount = 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oReceiver As EnvelopeReceiver = ViewReceivers.GetFocusedRow()
|
|
|
|
If oReceiver Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oMessage = Resources.Envelope.Do_you_want_to_delete_the_selected_recipient
|
|
If Controller.ElementsExist(oReceiver.Id) Then
|
|
oMessage = Resources.Envelope.There_are_already_elements_for_this_recipient
|
|
End If
|
|
|
|
If MsgBox(oMessage, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) = MsgBoxResult.No Then
|
|
Exit Sub
|
|
End If
|
|
|
|
If Controller.DeleteReceiver(oReceiver) Then
|
|
Receivers.Remove(oReceiver)
|
|
Else
|
|
MsgBox(Resources.Envelope.Recipient_could_not_be_deleted, MsgBoxStyle.Critical, Text)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub btnSendEnvelope_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnSendEnvelope.ItemClick
|
|
If Controller.Envelope.Status = Constants.EnvelopeStatus.EnvelopeSent Then
|
|
MsgBox(Resources.Envelope.Envelope_already_sent, MsgBoxStyle.Information, Text)
|
|
Exit Sub
|
|
End If
|
|
|
|
If SaveEnvelopeWithValidation() = False Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oErrors = ValidateEnvelope()
|
|
oErrors = Controller.ValidateEnvelopeForSending(oErrors)
|
|
|
|
If oErrors.Any() Then
|
|
ShowValidationErrors(Resources.Envelope.Error_when_validating_the_envelope, oErrors)
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oMessage = Resources.Envelope.Do_you_want_to_start_the_signature_process_now
|
|
If MsgBox(oMessage, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) = MsgBoxResult.No Then
|
|
Exit Sub
|
|
End If
|
|
|
|
If Controller.SendEnvelope() = False Then
|
|
MsgBox(Resources.Envelope.Envelope_could_not_be_sent, MsgBoxStyle.Critical, Text)
|
|
Else
|
|
If MsgBox(Resources.Envelope.Envelope_Invitations_Sent, MsgBoxStyle.Information Or MsgBoxStyle.OkOnly, Text) = MsgBoxResult.Ok Then
|
|
|
|
Me.Close()
|
|
End If
|
|
End If
|
|
End Sub
|
|
Private Sub btnCancel_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnCancel.ItemClick
|
|
' Speichern?
|
|
Dim oMessage = Resources.Envelope.Should_The_Envelope_Be_Saved
|
|
If MsgBox(oMessage, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) = MsgBoxResult.Yes Then
|
|
SaveEnvelope(False)
|
|
End If
|
|
|
|
' Schließen
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub btnEditData_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnEditData.ItemClick
|
|
Dim oForm As New frmEnvelopeMainData() With
|
|
{
|
|
.State = State,
|
|
.Envelope = Controller.Envelope,
|
|
.NewEnvelopeMode = False
|
|
}
|
|
oForm.ShowDialog()
|
|
|
|
SetAccessCodeColumnVisible()
|
|
SetPhoneNumberColumnVisible()
|
|
SetFormTitle(Controller.Envelope.Title)
|
|
End Sub
|
|
|
|
Private Sub GridReceivers_PaintEx(sender As Object, e As DevExpress.XtraGrid.PaintExEventArgs) Handles GridReceivers.PaintEx
|
|
Dim grid As GridControl = sender, view As GridView = Nothing
|
|
|
|
If TypeOf sender Is GridControl AndAlso TypeOf grid.MainView Is GridView Then
|
|
view = grid.MainView
|
|
Dim pen = New Pen(Color.Gainsboro, 2)
|
|
Dim info = view.GetViewInfo()
|
|
e.Cache.DrawRectangle(pen, info.Bounds)
|
|
pen.Dispose()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ViewReceivers_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles ViewReceivers.InitNewRow
|
|
Dim oReceiver As EnvelopeReceiver = ViewReceivers.GetRow(e.RowHandle)
|
|
|
|
Dim oUsedColors = Receivers.Select(Of Integer)(Function(r) r.ColorType).ToList()
|
|
Dim oAllColors = [Enum].GetValues(GetType(ColorType)).Cast(Of Integer).ToList()
|
|
Dim oUnusedColors = oAllColors.Except(oUsedColors)
|
|
If oUnusedColors.Any() Then
|
|
oReceiver.ColorType = oUnusedColors.Min()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub frmEnvelopeEditor_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
RibbonPageGroupAddSignature_Enabled()
|
|
RibbonPageGroupReceiver_Enable()
|
|
SendEnvelopeButton_Enable()
|
|
End Sub
|
|
Private Sub RibbonPageGroupAddSignature_Enabled()
|
|
If ViewDocuments.RowCount > 0 And
|
|
ViewReceivers.SelectedRowsCount > 0 Then
|
|
RibbonPageGroupAddSignature.Enabled = True
|
|
Else
|
|
RibbonPageGroupAddSignature.Enabled = False
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub RibbonPageGroupReceiver_Enable()
|
|
If ViewReceivers.SelectedRowsCount = 0 Then
|
|
RibbonPageGroupReceiver.Enabled = False
|
|
Else
|
|
RibbonPageGroupReceiver.Enabled = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub DocumentButtons_Enable()
|
|
If ViewDocuments.RowCount = 0 Then
|
|
btnNewFile.Enabled = True
|
|
bbtnitm_ConcatFiles.Enabled = True
|
|
btnDeleteFile.Enabled = False
|
|
btnShowFile.Enabled = False
|
|
Else
|
|
btnNewFile.Enabled = False
|
|
bbtnitm_ConcatFiles.Enabled = False
|
|
btnDeleteFile.Enabled = True
|
|
btnShowFile.Enabled = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SendEnvelopeButton_Enable()
|
|
If ViewDocuments.RowCount > 0 And
|
|
ViewReceivers.SelectedRowsCount > 0 Then
|
|
btnSendEnvelope.Enabled = True
|
|
Else
|
|
btnSendEnvelope.Enabled = False
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SetFormTitle(pTitle As String)
|
|
Dim oFormTitle As String = State.DbConfig.ExternalProgramName + " - " + Resources.Envelope.Envelope_Editor
|
|
If String.IsNullOrEmpty(pTitle) = False Then
|
|
oFormTitle += " - " + Controller.Envelope.Title.Truncate(30)
|
|
End If
|
|
|
|
Me.Text = oFormTitle
|
|
End Sub
|
|
|
|
Private Sub frmEnvelopeEditor_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
|
|
If Controller.Envelope?.Status = EnvelopeStatus.EnvelopeCreated Then
|
|
Controller.DeleteEnvelopeFromDisk(Controller.Envelope)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ViewReceivers_RowCountChanged(sender As Object, e As EventArgs) Handles ViewReceivers.RowCountChanged
|
|
RibbonPageGroupReceiver_Enable()
|
|
SendEnvelopeButton_Enable()
|
|
RibbonPageGroupAddSignature_Enabled()
|
|
End Sub
|
|
|
|
Private Sub ViewDocuments_RowCountChanged(sender As Object, e As EventArgs) Handles ViewDocuments.RowCountChanged
|
|
DocumentButtons_Enable()
|
|
SendEnvelopeButton_Enable()
|
|
RibbonPageGroupAddSignature_Enabled()
|
|
End Sub
|
|
Dim CellValueChanged As Boolean = False
|
|
Private Sub ViewReceivers_CellValueChanged(sender As Object, e As Views.Base.CellValueChangedEventArgs) Handles ViewReceivers.CellValueChanged
|
|
|
|
If e.Column.FieldName = COL_EMAIL And CellValueChanged = False Then
|
|
If e.Value Is Nothing Then
|
|
' Keine E-Mail-Adresse, also weg damit
|
|
ViewReceivers.DeleteRow(ViewReceivers.FocusedRowHandle)
|
|
Else
|
|
' Doppelte E-Mail-Adresse? TODO
|
|
'Dim oReceivers = Controller.Envelope.Receivers
|
|
CellValueChanged = True
|
|
Dim oNameCellValue = ViewReceivers.GetRowCellValue(e.RowHandle, COL_NAME)
|
|
If oNameCellValue Is Nothing Then
|
|
Dim oEmailAdress As String = DirectCast(e.Value.ToString.ToLower, String)
|
|
oEmailAdress = Trim(oEmailAdress)
|
|
If IsValidEmailAddress(oEmailAdress) = True Then
|
|
Dim oAccessCode As String = ""
|
|
Dim oLastName As String = Controller.GetLastNameByEmailAdress(oEmailAdress)
|
|
'oAccessCode = Helpers.GetAccessCode()
|
|
Dim oPhoneNumber As String = Controller.GetLastPhoneByEmailAdress(oEmailAdress)
|
|
ViewReceivers.SetRowCellValue(e.RowHandle, ViewReceivers.Columns.Item(COL_EMAIL), oEmailAdress)
|
|
ViewReceivers.SetRowCellValue(e.RowHandle, ViewReceivers.Columns.Item(COL_NAME), oLastName)
|
|
CheckAccesscode(e.RowHandle, oAccessCode)
|
|
' ViewReceivers.SetRowCellValue(e.RowHandle, ViewReceivers.Columns.Item(COL_CODE), oAccessCode)
|
|
If Envelope.TFA_Enabled AndAlso DEF_TF_ENABLED_WITH_PHONE Then
|
|
ViewReceivers.SetRowCellValue(e.RowHandle, ViewReceivers.Columns.Item(COL_PHONE), oPhoneNumber)
|
|
End If
|
|
If ViewReceivers.GetRowCellValue(e.RowHandle, ViewReceivers.Columns.Item(COL_CODE)) = String.Empty Then
|
|
CheckAccesscode(e.RowHandle, oAccessCode)
|
|
End If
|
|
Else
|
|
Dim oMsg = Resources.Envelope.Error_email_Validation
|
|
oMsg = oMsg.Replace("@Mail", oEmailAdress)
|
|
MsgBox(oMsg, MsgBoxStyle.Exclamation, Text)
|
|
ViewReceivers.DeleteRow(ViewReceivers.FocusedRowHandle)
|
|
End If
|
|
CellValueChanged = False
|
|
End If
|
|
End If
|
|
ElseIf e.Column.FieldName = COL_PHONE And CellValueChanged = False Then
|
|
CellValueChanged = True
|
|
Dim oPhoneNumber As String = DirectCast(e.Value.ToString.ToLower, String)
|
|
oPhoneNumber = Trim(oPhoneNumber)
|
|
If IsValidMobilePhoneNumber(oPhoneNumber) = True Then
|
|
ViewReceivers.SetRowCellValue(e.RowHandle, ViewReceivers.Columns.Item(COL_PHONE), oPhoneNumber)
|
|
Else
|
|
Dim oMsg = Resources.Envelope.Error_phone_Validation
|
|
oMsg = oMsg.Replace("@PhoneNr", oPhoneNumber)
|
|
MsgBox(oMsg, MsgBoxStyle.Exclamation, Text)
|
|
ViewReceivers.DeleteRow(ViewReceivers.FocusedRowHandle)
|
|
End If
|
|
CellValueChanged = False
|
|
End If
|
|
End Sub
|
|
Private Function CheckAccesscode(pRowHandle As Integer, pAccessCode As String) As Boolean
|
|
If pAccessCode = "" Then
|
|
pAccessCode = Helpers.GetAccessCode()
|
|
ViewReceivers.SetRowCellValue(pRowHandle, ViewReceivers.Columns.Item(COL_CODE), pAccessCode)
|
|
End If
|
|
End Function
|
|
Private Function IsValidEmailAddress(pEmailAddress As String) As Boolean
|
|
Try
|
|
If pEmailAddress.Contains("@") Then
|
|
Dim oAddress = New System.Net.Mail.MailAddress(pEmailAddress)
|
|
Return oAddress.Address = pEmailAddress
|
|
Else
|
|
Return False
|
|
End If
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
Private Function IsValidMobilePhoneNumber(pPhoneNumber As String) As Boolean
|
|
Try
|
|
Dim pattern As String = "^\+49\d{10,14}$"
|
|
Dim regex As New Regex(pattern)
|
|
Return regex.IsMatch(pPhoneNumber)
|
|
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
Private Sub RibbonControl1_Click(sender As Object, e As EventArgs) Handles RibbonControl1.Click
|
|
|
|
End Sub
|
|
Private Async Sub bbtnitm_ConcatFiles_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitm_ConcatFiles.ItemClick
|
|
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
|
|
Try
|
|
|
|
ENVELOPE_TEMP_DOCUMENT = String.Empty
|
|
Dim openform As New frmOrderFiles
|
|
openform.oTitle = Resources.Envelope.Dialog_Concat_PDF
|
|
openform.ShowDialog()
|
|
If Not IsNothing(openform.fileResults) Then
|
|
Dim oIDX As Integer = -1
|
|
For Each oFile As String In openform.fileResults
|
|
oIDX += 1
|
|
Next
|
|
Dim oSuccess As Boolean = False
|
|
Dim oErr As Boolean = False
|
|
Dim arPDF As GdPicturePDF() = New GdPicturePDF(oIDX) {}
|
|
oIDX = 0
|
|
For Each oFile As String In openform.fileResults
|
|
arPDF(oIDX) = New GdPicturePDF()
|
|
If arPDF(oIDX).LoadFromFile(oFile) <> GdPictureStatus.OK Then
|
|
MsgBox($"PDF Status of file {oFile} is not OK. Please check PDF-conformity!", MsgBoxStyle.Critical)
|
|
oErr = True
|
|
Exit For
|
|
End If
|
|
oIDX += 1
|
|
Next
|
|
If oErr = False Then
|
|
|
|
Dim dstPDF As GdPicturePDF = arPDF(0).MergeDocuments(arPDF)
|
|
Dim oStatus As GdPictureStatus = arPDF(0).GetStat()
|
|
If oStatus = GdPictureStatus.OK Then
|
|
Dim oTempFolder = MyTempFiles._TempPath
|
|
If Not Directory.Exists(oTempFolder) Then
|
|
Directory.CreateDirectory(oTempFolder)
|
|
End If
|
|
Dim oTempFilename = String.Concat(oTempFolder, "\", $"MergedDoc.pdf")
|
|
'wenn es das MergedDocument schon gibt dann löschen
|
|
If System.IO.File.Exists(oTempFilename) Then
|
|
System.IO.File.Delete(oTempFilename)
|
|
End If
|
|
If dstPDF.SaveToFile(oTempFilename) = GdPictureStatus.OK Then
|
|
ENVELOPE_TEMP_DOCUMENT = oTempFilename
|
|
dstPDF.CloseDocument()
|
|
oSuccess = True
|
|
Else
|
|
MsgBox("Unexpected format-error within the final document!", MsgBoxStyle.Critical)
|
|
oSuccess = False
|
|
End If
|
|
Else
|
|
MessageBox.Show("The MergeDocuments() method has failed with the status: " + oStatus.ToString(), "Example: MergeDocuments")
|
|
oSuccess = False
|
|
End If
|
|
dstPDF.Dispose()
|
|
oIDX = 0
|
|
For Each oFile As String In openform.fileResults
|
|
arPDF(oIDX).CloseDocument()
|
|
oIDX += 1
|
|
Next
|
|
If oSuccess = True And ENVELOPE_TEMP_DOCUMENT <> String.Empty Then
|
|
Await AddDocument(ENVELOPE_TEMP_DOCUMENT)
|
|
|
|
End If
|
|
End If
|
|
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
Finally
|
|
SplashScreenManager.CloseOverlayForm(oHandle)
|
|
End Try
|
|
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub frmEnvelopeEditor_DragEnter(sender As Object, e As DragEventArgs) Handles Me.DragEnter
|
|
ClearBsiItem()
|
|
' Prüfen, ob die Daten vom Typ Datei sind
|
|
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
|
|
' prüfen ob es schon eine Datei gibt
|
|
If Documents.Count > 0 Then
|
|
e.Effect = DragDropEffects.None
|
|
bsitm_info.Caption = Resources.Envelope.Only_one_file_is_allowed
|
|
bsitm_info.ItemAppearance.Normal.BackColor = Color.Red
|
|
bsitm_info.ItemAppearance.Normal.ForeColor = Color.Yellow
|
|
Else
|
|
' Effekt auf "Kopieren" setzen, um Drag-and-Drop zu ermöglichen
|
|
e.Effect = DragDropEffects.Copy
|
|
End If
|
|
|
|
Else
|
|
e.Effect = DragDropEffects.None
|
|
End If
|
|
End Sub
|
|
Sub ClearBsiItem()
|
|
bsitm_info.Caption = ""
|
|
bsitm_info.ItemAppearance.Normal.BackColor = Color.Transparent
|
|
bsitm_info.ItemAppearance.Normal.ForeColor = Color.Black
|
|
End Sub
|
|
Private Async Sub frmEnvelopeEditor_DragDrop(sender As Object, e As DragEventArgs) Handles Me.DragDrop
|
|
' Den Pfad der Datei(en) erhalten
|
|
Dim ofiles() As String = CType(e.Data.GetData(DataFormats.FileDrop), String())
|
|
' Beispiel: Ersten Dateipfad anzeigen
|
|
If ofiles IsNot Nothing AndAlso ofiles.Length > 0 Then
|
|
If Not ofiles(0).ToString.EndsWith("pdf") Then
|
|
bsitm_info.Caption = Resources.Envelope.Drop_only_one_file
|
|
bsitm_info.ItemAppearance.Normal.BackColor = Color.Red
|
|
bsitm_info.ItemAppearance.Normal.ForeColor = Color.Yellow
|
|
Else
|
|
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
|
|
Await AddDocument(ofiles(0))
|
|
SplashScreenManager.CloseOverlayForm(oHandle)
|
|
' MessageBox.Show("Dateipfad: " & ofiles(0), "Datei abgelegt", MessageBoxButtons.OK, MessageBoxIcon.Information)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub GridDocuments_DoubleClick(sender As Object, e As EventArgs) Handles GridDocuments.DoubleClick
|
|
showdocument()
|
|
End Sub
|
|
|
|
Private Sub btnShowFile_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnShowFile.ItemClick
|
|
showDocument
|
|
End Sub
|
|
Sub showdocument()
|
|
If Not IsNothing(Documents) Then
|
|
Process.Start(Documents.Item(0).Filepath)
|
|
End If
|
|
End Sub
|
|
End Class
|