Updated ReceiverModel and EnvelopeEditorController to utilize ReceiverVM instead of Receiver in multiple function signatures. This change enhances the structure and flexibility of receiver data handling. Adjusted related methods in frmEnvelopeEditor to align with the new view model approach.
764 lines
30 KiB
VB.net
764 lines
30 KiB
VB.net
Imports System.ComponentModel
|
|
Imports System.IO
|
|
Imports System.Text.RegularExpressions
|
|
Imports DevExpress.Utils.Drawing
|
|
Imports DevExpress.XtraEditors
|
|
Imports DevExpress.XtraGrid
|
|
Imports DevExpress.XtraGrid.Views.Grid
|
|
Imports DevExpress.XtraSplashScreen
|
|
Imports DigitalData.Modules.Base
|
|
Imports DigitalData.Modules.Logging
|
|
Imports EnvelopeGenerator.CommonServices
|
|
Imports EnvelopeGenerator.Domain
|
|
Imports EnvelopeGenerator.CommonServices.My
|
|
Imports GdPicture14
|
|
Imports EnvelopeGenerator.Domain.Constants
|
|
Imports EnvelopeGenerator.Domain.Entities
|
|
|
|
Partial Public Class frmEnvelopeEditor
|
|
Public Property Envelope As Envelope
|
|
Public Property Documents As New BindingList(Of EnvelopeDocument)
|
|
Public Property Receivers As New BindingList(Of ReceiverVM)
|
|
|
|
Private AllReceiverEmails As New List(Of String)
|
|
|
|
Private Controller As EnvelopeEditorController
|
|
Private Logger As Logger
|
|
|
|
Private Const COL_NAME = "Name"
|
|
Private Const COL_EMAIL = "EmailAddress"
|
|
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 ReceiverVM)(Controller.Envelope.Receivers.Select(Function(r) ReceiverVM.From(r)).ToList())
|
|
|
|
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.ByteData)
|
|
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.TfaEnabled = 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 successfully " + 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.ByteData) Then
|
|
Dim oTempFolder = TempFiles._TempPath
|
|
Dim oTempFilename = String.Concat(oTempFolder, "\", $"ViewEnvDoc_{oEnvelope.Id}.pdf")
|
|
If Not File.Exists(oTempFilename) Then
|
|
WriteBytetoPath(oTempFilename, oDocument.ByteData)
|
|
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.Select(Function(r) ReceiverVM.From(r)).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 CommonServices.Helpers.IsValidEmailAddress(Receiver.EmailAddress) = 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 ReceiverVM = 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.Receiver) 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 ReceiverVM = ViewReceivers.GetRow(e.RowHandle)
|
|
|
|
Dim oUsedColors = Receivers.Select(Of Integer)(Function(r) r.ColorType).ToList()
|
|
Dim oAllColors = [Enum].GetValues(GetType(Domain.Constants.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.TfaEnabled 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 = CommonServices.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
|