From fcbee75b9bb03adb4642083497dd05b66207cfe2 Mon Sep 17 00:00:00 2001 From: Developer01 Date: Fri, 3 Jan 2025 10:25:06 +0100 Subject: [PATCH 1/2] MS Common 2.1 - Enum VerificationType --- EnvelopeGenerator.Common/Constants.vb | 9 +++++++-- .../My Project/AssemblyInfo.vb | 4 ++-- EnvelopeGenerator.Service/App.config | 10 ---------- .../My Project/AssemblyInfo.vb | 4 ++-- .../My Project/Settings.Designer.vb | 19 +++++-------------- .../My Project/Settings.settings | 8 ++------ 6 files changed, 18 insertions(+), 36 deletions(-) diff --git a/EnvelopeGenerator.Common/Constants.vb b/EnvelopeGenerator.Common/Constants.vb index d04f3bfd..969aac71 100644 --- a/EnvelopeGenerator.Common/Constants.vb +++ b/EnvelopeGenerator.Common/Constants.vb @@ -77,7 +77,8 @@ End Enum Public Enum CertificationType - ElectronicSignature = 1 + AdvancedElectronicSignature = 1 + 'ElectronicSignature = 1 'QualifiedSignature = 2 End Enum @@ -108,7 +109,11 @@ DocumentForwarded DocumentShared End Enum - + Public Enum VerificationType + CodeviaMail + Authenticator + SMS + End Enum #End Region #Region "Constants" diff --git a/EnvelopeGenerator.Common/My Project/AssemblyInfo.vb b/EnvelopeGenerator.Common/My Project/AssemblyInfo.vb index 98768762..675e57d2 100644 --- a/EnvelopeGenerator.Common/My Project/AssemblyInfo.vb +++ b/EnvelopeGenerator.Common/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' indem Sie "*" wie unten gezeigt eingeben: ' - - + + diff --git a/EnvelopeGenerator.Service/App.config b/EnvelopeGenerator.Service/App.config index 8949adf6..e773d4eb 100644 --- a/EnvelopeGenerator.Service/App.config +++ b/EnvelopeGenerator.Service/App.config @@ -1,9 +1,6 @@ - -
- @@ -16,11 +13,4 @@ - - - - False - - - diff --git a/EnvelopeGenerator.Service/My Project/AssemblyInfo.vb b/EnvelopeGenerator.Service/My Project/AssemblyInfo.vb index e2ef66b7..67d152ca 100644 --- a/EnvelopeGenerator.Service/My Project/AssemblyInfo.vb +++ b/EnvelopeGenerator.Service/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/EnvelopeGenerator.Service/My Project/Settings.Designer.vb b/EnvelopeGenerator.Service/My Project/Settings.Designer.vb index 2b9420b0..372c6a03 100644 --- a/EnvelopeGenerator.Service/My Project/Settings.Designer.vb +++ b/EnvelopeGenerator.Service/My Project/Settings.Designer.vb @@ -1,10 +1,10 @@ '------------------------------------------------------------------------------ ' -' This code was generated by a tool. -' Runtime Version:4.0.30319.42000 +' Dieser Code wurde von einem Tool generiert. +' Laufzeitversion:4.0.30319.42000 ' -' Changes to this file may cause incorrect behavior and will be lost if -' the code is regenerated. +' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +' der Code erneut generiert wird. ' '------------------------------------------------------------------------------ @@ -22,7 +22,7 @@ Namespace My Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) -#Region "My.Settings Auto-Save Functionality" +#Region "Automatische My.Settings-Speicherfunktion" #If _MyType = "WindowsForms" Then Private Shared addedHandler As Boolean @@ -53,15 +53,6 @@ Namespace My Return defaultInstance End Get End Property - - _ - Public ReadOnly Property RunInDMZ() As Boolean - Get - Return CType(Me("RunInDMZ"),Boolean) - End Get - End Property End Class End Namespace diff --git a/EnvelopeGenerator.Service/My Project/Settings.settings b/EnvelopeGenerator.Service/My Project/Settings.settings index 9000e76c..f7f176ac 100644 --- a/EnvelopeGenerator.Service/My Project/Settings.settings +++ b/EnvelopeGenerator.Service/My Project/Settings.settings @@ -1,9 +1,5 @@  - + - - - False - - + \ No newline at end of file From 5a0e258b354ce3f3b8be7fe59afd02b9b4a0b80b Mon Sep 17 00:00:00 2001 From: Developer01 Date: Fri, 24 Jan 2025 14:34:28 +0100 Subject: [PATCH 2/2] Ms Auswertungen, Dokument anzeigen, Drag and Drop --- EnvelopeGenerator.Common/Constants.vb | 5 - EnvelopeGenerator.Common/Entities/DbConfig.vb | 1 + EnvelopeGenerator.Common/Entities/Envelope.vb | 4 +- .../Entities/EnvelopeReceiver.vb | 1 + .../Entities/EnvelopeType.vb | 3 +- .../EnvelopeGenerator.Common.vbproj | 8 +- .../Models/ConfigModel.vb | 3 +- .../Models/EnvelopeModel.vb | 28 +- .../Models/EnvelopeTypeModel.vb | 4 +- .../Models/ReceiverModel.vb | 109 +++-- .../My Project/AssemblyInfo.vb | 4 +- .../Strings/Envelope.en.resx | 14 +- .../Strings/Envelope.resx | 12 +- .../Strings/Envelope1.Designer.vb | 30 +- .../Strings/Model.Designer.vb | 38 +- .../Strings/Model.en.resx | 6 +- EnvelopeGenerator.Common/Strings/Model.resx | 6 +- EnvelopeGenerator.Common/packages.config | 4 +- .../Controllers/EnvelopeEditorController.vb | 14 +- .../EnvelopeGenerator.Form.vbproj | 15 +- EnvelopeGenerator.Form/ModuleSettings.vb | 9 + .../frmChooseDocVariant.Designer.vb | 75 --- .../frmChooseDocVariant.resx | 179 ------- EnvelopeGenerator.Form/frmChooseDocVariant.vb | 96 ---- .../frmEnvelopeEditor.Designer.vb | 63 ++- EnvelopeGenerator.Form/frmEnvelopeEditor.resx | 130 +++-- EnvelopeGenerator.Form/frmEnvelopeEditor.vb | 214 +++++++- .../frmEnvelopeMainData.Designer.vb | 43 +- .../frmEnvelopeMainData.resx | 79 ++- EnvelopeGenerator.Form/frmEnvelopeMainData.vb | 121 +++-- EnvelopeGenerator.Form/frmMain.Designer.vb | 169 ++++++- EnvelopeGenerator.Form/frmMain.resx | 455 ++++++++++++++---- EnvelopeGenerator.Form/frmMain.vb | 63 ++- EnvelopeGenerator.Form/frmSplashScreen.vb | 21 +- EnvelopeGenerator.sln | 4 +- 35 files changed, 1297 insertions(+), 733 deletions(-) delete mode 100644 EnvelopeGenerator.Form/frmChooseDocVariant.Designer.vb delete mode 100644 EnvelopeGenerator.Form/frmChooseDocVariant.resx delete mode 100644 EnvelopeGenerator.Form/frmChooseDocVariant.vb diff --git a/EnvelopeGenerator.Common/Constants.vb b/EnvelopeGenerator.Common/Constants.vb index 2fd6c739..748b4723 100644 --- a/EnvelopeGenerator.Common/Constants.vb +++ b/EnvelopeGenerator.Common/Constants.vb @@ -110,11 +110,6 @@ DocumentForwarded DocumentShared End Enum - Public Enum VerificationType - CodeviaMail - Authenticator - SMS - End Enum #End Region #Region "Constants" diff --git a/EnvelopeGenerator.Common/Entities/DbConfig.vb b/EnvelopeGenerator.Common/Entities/DbConfig.vb index a59b7fe2..a1326b04 100644 --- a/EnvelopeGenerator.Common/Entities/DbConfig.vb +++ b/EnvelopeGenerator.Common/Entities/DbConfig.vb @@ -5,4 +5,5 @@ Public Property ExportPath As String = "" Public Property SendingProfile As Integer = 0 Public Property SignatureHost As String = "" + Public Property Default_TFA_Enabled As Boolean = False End Class diff --git a/EnvelopeGenerator.Common/Entities/Envelope.vb b/EnvelopeGenerator.Common/Entities/Envelope.vb index 768563cf..1c3ef131 100644 --- a/EnvelopeGenerator.Common/Entities/Envelope.vb +++ b/EnvelopeGenerator.Common/Entities/Envelope.vb @@ -8,8 +8,8 @@ Public Property Uuid As String = Guid.NewGuid.ToString() Public Property UseAccessCode As Boolean = False Public Property Language As String = "de-DE" - Public Property CertificationType As Constants.CertificationType = Constants.CertificationType.ElectronicSignature - + Public Property CertificationType As Constants.CertificationType = Constants.CertificationType.AdvancedElectronicSignature + Public Property TFA_Enabled As Boolean = False Public Property SendReminderEmails As Boolean = False Public Property FirstReminderDays As Integer = 0 Public Property ReminderIntervalDays As Integer = 0 diff --git a/EnvelopeGenerator.Common/Entities/EnvelopeReceiver.vb b/EnvelopeGenerator.Common/Entities/EnvelopeReceiver.vb index 8481994a..69cc8aa7 100644 --- a/EnvelopeGenerator.Common/Entities/EnvelopeReceiver.vb +++ b/EnvelopeGenerator.Common/Entities/EnvelopeReceiver.vb @@ -75,6 +75,7 @@ Public Class EnvelopeReceiver Public Property Sequence As Integer = 0 Public Property PrivateMessage As String = "" Public Property AccessCode As String = "" + Public Property PhoneNumber As String = "" Public Function GetSignature() As String Return StringEx.GetChecksum(Email.ToUpper) diff --git a/EnvelopeGenerator.Common/Entities/EnvelopeType.vb b/EnvelopeGenerator.Common/Entities/EnvelopeType.vb index bd3b5bf0..1c0f2024 100644 --- a/EnvelopeGenerator.Common/Entities/EnvelopeType.vb +++ b/EnvelopeGenerator.Common/Entities/EnvelopeType.vb @@ -6,7 +6,8 @@ Public Property ContractType As Integer ' Unbenutzt Public Property Language As String - Public Property CertificationType As Constants.CertificationType = Constants.CertificationType.ElectronicSignature + Public Property CertificationType As Constants.CertificationType = Constants.CertificationType.AdvancedElectronicSignature + Public Property TFA_Enabled As Boolean = False Public Property SendReminderEmails As Boolean = False Public Property FirstReminderDays As Integer = 0 Public Property ReminderIntervalDays As Integer = 0 diff --git a/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj b/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj index 152c9659..c6e38ce7 100644 --- a/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj +++ b/EnvelopeGenerator.Common/EnvelopeGenerator.Common.vbproj @@ -77,8 +77,8 @@ ..\..\2_DLL Projekte\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll - - ..\packages\GdPicture.14.2.89\lib\net462\GdPicture.NET.14.dll + + ..\packages\GdPicture.14.2.90\lib\net462\GdPicture.NET.14.dll @@ -291,11 +291,11 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + \ No newline at end of file diff --git a/EnvelopeGenerator.Common/Models/ConfigModel.vb b/EnvelopeGenerator.Common/Models/ConfigModel.vb index dffa8036..6fc583ae 100644 --- a/EnvelopeGenerator.Common/Models/ConfigModel.vb +++ b/EnvelopeGenerator.Common/Models/ConfigModel.vb @@ -21,7 +21,8 @@ Public Class ConfigModel .ExportPath = oRow.ItemEx("EXPORT_PATH", ""), .SendingProfile = oRow.ItemEx("SENDING_PROFILE", 0), .SignatureHost = oRow.ItemEx("SIGNATURE_HOST", ""), - .ExternalProgramName = oRow.ItemEx("EXTERNAL_PROGRAM_NAME", "") + .ExternalProgramName = oRow.ItemEx("EXTERNAL_PROGRAM_NAME", ""), + .Default_TFA_Enabled = oRow.ItemEx("DEF_TFA_ENABLED", False) } Catch ex As Exception Logger.Error(ex) diff --git a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb index 96bd1648..1c6da7ed 100644 --- a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb +++ b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb @@ -2,6 +2,7 @@ Imports System.Web.UI.WebControls Imports DigitalData.Modules.Base Imports DigitalData.Modules.Logging +Imports EnvelopeGenerator.Common.Constants Public Class EnvelopeModel Inherits BaseModel @@ -34,7 +35,7 @@ Public Class EnvelopeModel .Language = pRow.ItemEx("LANGUAGE", "de-DE"), .Status = ObjectEx.ToEnum(Of Constants.EnvelopeStatus)(pRow.ItemEx("STATUS", Constants.EnvelopeStatus.EnvelopeCreated.ToString())), .AddedWhen = pRow.Item("ADDED_WHEN"), - .CertificationType = ObjectEx.ToEnum(Of Constants.CertificationType)(pRow.ItemEx("CERTIFICATION_TYPE", Constants.CertificationType.ElectronicSignature.ToString())), + .CertificationType = ObjectEx.ToEnum(Of Constants.CertificationType)(pRow.ItemEx("CERTIFICATION_TYPE", Constants.CertificationType.AdvancedElectronicSignature.ToString())), .User = New User(), .ExpiresWhen = pRow.ItemEx(Of Date)("EXPIRES_WHEN", Nothing), .ExpiresWarningWhen = pRow.ItemEx(Of Date)("EXPIRES_WARNING_WHEN", Nothing), @@ -45,7 +46,8 @@ Public Class EnvelopeModel .ReminderIntervalDays = pRow.ItemEx("REMINDER_INTERVAL_DAYS", 0), .UseAccessCode = pRow.ItemEx("USE_ACCESS_CODE", False), .FinalEmailToCreator = ObjectEx.ToEnum(Of Constants.FinalEmailType)(pRow.ItemEx("FINAL_EMAIL_TO_CREATOR", Constants.FinalEmailType.No.ToString())), - .FinalEmailToReceivers = ObjectEx.ToEnum(Of Constants.FinalEmailType)(pRow.ItemEx("FINAL_EMAIL_TO_RECEIVERS", Constants.FinalEmailType.No.ToString())) + .FinalEmailToReceivers = ObjectEx.ToEnum(Of Constants.FinalEmailType)(pRow.ItemEx("FINAL_EMAIL_TO_RECEIVERS", Constants.FinalEmailType.No.ToString())), + .TFA_Enabled = pRow.ItemEx("TFA_Enabled", False) } Dim oDOC_RESULT = pRow.Item("DOC_RESULT") If Not IsDBNull(oDOC_RESULT) Then @@ -142,13 +144,17 @@ Public Class EnvelopeModel Public Function Insert(pEnvelope As Envelope) As Boolean Try - Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE] (MESSAGE, ENVELOPE_UUID, STATUS, USER_ID) " - oSql += " VALUES (@MESSAGE, @UUID, @STATUS, @USER_ID)" + Dim oSql = $"INSERT INTO [dbo].[TBSIG_ENVELOPE] (MESSAGE, ENVELOPE_UUID, STATUS, USER_ID) + VALUES('', + '{pEnvelope.Uuid}', + '{CInt([Enum].Parse(GetType(EnvelopeStatus), Constants.EnvelopeStatus.EnvelopeCreated))}', + '{pEnvelope.UserId}')" Dim oCommand As New SqlCommand(oSql) - oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = String.Empty - oCommand.Parameters.Add("UUID", SqlDbType.NVarChar).Value = pEnvelope.Uuid - oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = Constants.EnvelopeStatus.EnvelopeCreated - oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId + 'oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = String.Empty + 'oCommand.Parameters.Add("UUID", SqlDbType.NVarChar).Value = pEnvelope.Uuid + 'oCommand.Parameters.Add("STATUS", SqlDbType.Int).Value = Constants.EnvelopeStatus.EnvelopeCreated + 'oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId + If Database.ExecuteNonQuery(oCommand) Then pEnvelope.Id = GetEnvelopeId(pEnvelope) @@ -182,9 +188,11 @@ Public Class EnvelopeModel oSql += " [REMINDER_INTERVAL_DAYS] = @REMINDER_INTERVAL_DAYS, " oSql += " [SEND_REMINDER_EMAILS] = @SEND_REMINDER_EMAILS, " oSql += " [USE_ACCESS_CODE] = @USE_ACCESS_CODE, " - oSql += " [CHANGED_WHEN] = GETDATE() " + oSql += " [CHANGED_WHEN] = GETDATE(), " + oSql += " [TFA_Enabled] = @TFA_Enabled" oSql += " WHERE GUID = @ID AND USER_ID = @USER_ID" + Dim oCommand As New SqlCommand(oSql) oCommand.Parameters.Add("ID", SqlDbType.Int).Value = pEnvelope.Id oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pEnvelope.UserId @@ -206,7 +214,7 @@ Public Class EnvelopeModel oCommand.Parameters.Add("REMINDER_INTERVAL_DAYS", SqlDbType.Int).Value = pEnvelope.ReminderIntervalDays oCommand.Parameters.Add("SEND_REMINDER_EMAILS", SqlDbType.Bit).Value = pEnvelope.SendReminderEmails oCommand.Parameters.Add("USE_ACCESS_CODE", SqlDbType.Bit).Value = pEnvelope.UseAccessCode - + oCommand.Parameters.Add("TFA_ENABLED", SqlDbType.Bit).Value = pEnvelope.TFA_Enabled Return Database.ExecuteNonQuery(oCommand, pTransaction) Catch ex As Exception diff --git a/EnvelopeGenerator.Common/Models/EnvelopeTypeModel.vb b/EnvelopeGenerator.Common/Models/EnvelopeTypeModel.vb index 86bf6ee0..d00784b7 100644 --- a/EnvelopeGenerator.Common/Models/EnvelopeTypeModel.vb +++ b/EnvelopeGenerator.Common/Models/EnvelopeTypeModel.vb @@ -1,4 +1,5 @@ Imports DigitalData.Modules.Base +Imports EnvelopeGenerator.Common.Constants Public Class EnvelopeTypeModel Inherits BaseModel @@ -21,7 +22,8 @@ Public Class EnvelopeTypeModel .FinalEmailToCreator = pRow.ItemEx("FINAL_EMAIL_TO_CREATOR", 0), .FinalEmailToReceivers = pRow.ItemEx("FINAL_EMAIL_TO_RECEIVERS", 0), .ContractType = pRow.ItemEx("CONTRACT_TYPE", 0), - .CertificationType = pRow.ItemEx("CERTIFICATION_TYPE", 0) + .CertificationType = pRow.ItemEx("CERTIFICATION_TYPE", 0), + .TFA_Enabled = pRow.ItemEx("TFA_Enabled", 0) } End Function diff --git a/EnvelopeGenerator.Common/Models/ReceiverModel.vb b/EnvelopeGenerator.Common/Models/ReceiverModel.vb index 02e0c31b..8333d95d 100644 --- a/EnvelopeGenerator.Common/Models/ReceiverModel.vb +++ b/EnvelopeGenerator.Common/Models/ReceiverModel.vb @@ -33,7 +33,8 @@ Public Class ReceiverModel .Status = ReceiverSignedStatus, .ColorType = DirectCast(pColorIndex + 1, ColorType), .AccessCode = pRow.ItemEx("ACCESS_CODE", ""), - .SignedDate = SignedDate + .SignedDate = SignedDate, + .PhoneNumber = pRow.ItemEx("PHONE_NUMBER", "") } End Function @@ -56,25 +57,29 @@ Public Class ReceiverModel Public Function Insert(pReceiver As EnvelopeReceiver, pTransaction As SqlTransaction) As Boolean Try - Dim oSql As String = "INSERT INTO [dbo].[TBSIG_RECEIVER] + Dim oCheck = $"SELECT COUNT(GUID) FROM [dbo].[TBSIG_RECEIVER] WHERE SIGNATURE = '{pReceiver.GetSignature()}'" + Dim oExists = Database.GetScalarValue(oCheck) + + If oExists = 0 Then + Dim oSql As String = $"INSERT INTO [dbo].[TBSIG_RECEIVER] ([EMAIL_ADDRESS] ,[SIGNATURE]) VALUES - (@EMAIL - ,@SIGNATURE)" - - Dim oCommand = New SqlCommand(oSql) - oCommand.Parameters.Add("EMAIL", SqlDbType.NVarChar).Value = pReceiver.Email - oCommand.Parameters.Add("SIGNATURE", SqlDbType.NVarChar).Value = pReceiver.GetSignature() - - Dim oResult = Database.ExecuteNonQuery(oCommand) - If oResult = True Then - pReceiver.Id = GetReceiverIdByEmail(pReceiver.Email, pTransaction) + ('{pReceiver.Email}' + ,'{pReceiver.GetSignature()}')" + + Dim oCommand = New SqlCommand(oSql) + Dim oResult = Database.ExecuteNonQuery(oCommand) + If oResult = True Then + pReceiver.Id = GetReceiverIdByEmail(pReceiver.Email, pTransaction) + Return True + Else + Return False + End If Else - Return False + Logger.Warn($"Receiver [{pReceiver.Email}] already existing! Check collecting not existing Receivers!") + Return True End If - - Return True Catch ex As Exception Logger.Error(ex) Return False @@ -83,18 +88,18 @@ Public Class ReceiverModel Public Function Update(pReceiver As EnvelopeReceiver, pTransaction As SqlTransaction) As Boolean Try - Dim oSql As String = "UPDATE [dbo].[TBSIG_USER_RECEIVER] - SET [NAME] = @NAME - ,[COMPANY_NAME] = @COMPANY - ,[JOB_TITLE] = @JOB - WHERE RECEIVER_ID = @RECEIVER_ID" + Dim oSql As String = $"UPDATE [dbo].[TBSIG_USER_RECEIVER] + SET [NAME] = '{pReceiver.Name}' + ,[COMPANY_NAME] = '{pReceiver.Company}' + ,[JOB_TITLE] = '{pReceiver.JobTitle}' + WHERE RECEIVER_ID = {pReceiver.Id}" Dim oCommand = New SqlCommand(oSql) - oCommand.Parameters.Add("NAME", SqlDbType.NVarChar).Value = pReceiver.Name - oCommand.Parameters.Add("COMPANY", SqlDbType.NVarChar).Value = pReceiver.Company - oCommand.Parameters.Add("JOB", SqlDbType.NVarChar).Value = pReceiver.JobTitle - oCommand.Parameters.Add("RECEIVER_ID", SqlDbType.Int).Value = pReceiver.Id - oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pReceiver.Id + 'oCommand.Parameters.Add("NAME", SqlDbType.NVarChar).Value = pReceiver.Name + 'oCommand.Parameters.Add("COMPANY", SqlDbType.NVarChar).Value = pReceiver.Company + 'oCommand.Parameters.Add("JOB", SqlDbType.NVarChar).Value = pReceiver.JobTitle + 'oCommand.Parameters.Add("RECEIVER_ID", SqlDbType.Int).Value = pReceiver.Id + 'oCommand.Parameters.Add("USER_ID", SqlDbType.Int).Value = pReceiver.Id Return Database.ExecuteNonQuery(oCommand, pTransaction) Catch ex As Exception @@ -113,7 +118,7 @@ Public Class ReceiverModel End Function Public Function Assign(pEnvelope As Envelope, pReceiver As EnvelopeReceiver, pTransaction As SqlTransaction) As Boolean - Dim oSql = "INSERT INTO [dbo].[TBSIG_ENVELOPE_RECEIVER] + Dim oSql = $"INSERT INTO [dbo].[TBSIG_ENVELOPE_RECEIVER] ([ENVELOPE_ID] ,[RECEIVER_ID] ,[PRIVATE_MESSAGE] @@ -121,26 +126,28 @@ Public Class ReceiverModel ,[NAME] ,[JOB_TITLE] ,[COMPANY_NAME] - ,[SEQUENCE]) + ,[SEQUENCE] + ,[PHONE_NUMBER]) VALUES - (@ENVELOPE_ID - ,@RECEIVER_ID - ,@MESSAGE - ,@ACCESS_CODE - ,@NAME - ,@JOB - ,@COMPANY - ,@SEQUENCE)" + ('{pEnvelope.Id}' + ,'{pReceiver.Id}' + ,'{pReceiver.PrivateMessage}' + ,'{pReceiver.AccessCode}' + ,'{pReceiver.Name}' + ,'{pReceiver.JobTitle}' + ,'{pReceiver.Company}' + ,'{pReceiver.Sequence}' + ,'{pReceiver.PhoneNumber}')" Dim oCommand As New SqlCommand(oSql) - oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.NVarChar).Value = pEnvelope.Id - oCommand.Parameters.Add("RECEIVER_ID", SqlDbType.NVarChar).Value = pReceiver.Id - oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = pReceiver.PrivateMessage - oCommand.Parameters.Add("ACCESS_CODE", SqlDbType.NVarChar).Value = pReceiver.AccessCode - oCommand.Parameters.Add("NAME", SqlDbType.NVarChar).Value = pReceiver.Name - oCommand.Parameters.Add("JOB", SqlDbType.NVarChar).Value = pReceiver.JobTitle - oCommand.Parameters.Add("COMPANY", SqlDbType.NVarChar).Value = pReceiver.Company - oCommand.Parameters.Add("SEQUENCE", SqlDbType.NVarChar).Value = pReceiver.Sequence + 'oCommand.Parameters.Add("ENVELOPE_ID", SqlDbType.NVarChar).Value = pEnvelope.Id + 'oCommand.Parameters.Add("RECEIVER_ID", SqlDbType.NVarChar).Value = pReceiver.Id + 'oCommand.Parameters.Add("MESSAGE", SqlDbType.NVarChar).Value = pReceiver.PrivateMessage + 'oCommand.Parameters.Add("ACCESS_CODE", SqlDbType.NVarChar).Value = pReceiver.AccessCode + 'oCommand.Parameters.Add("NAME", SqlDbType.NVarChar).Value = pReceiver.Name + 'oCommand.Parameters.Add("JOB", SqlDbType.NVarChar).Value = pReceiver.JobTitle + 'oCommand.Parameters.Add("COMPANY", SqlDbType.NVarChar).Value = pReceiver.Company + 'oCommand.Parameters.Add("SEQUENCE", SqlDbType.NVarChar).Value = pReceiver.Sequence Return Database.ExecuteNonQuery(oCommand, pTransaction) End Function @@ -266,6 +273,22 @@ Public Class ReceiverModel Return String.Empty End Try End Function + Public Function GetLastUsedReceiverPhone(pEmailAddress As String, pUserId As Integer) As String + Try + Dim oSql As String + oSql = "SELECT TOP 1 [PHONE_NUMBER] FROM dbo.VWSIG_ENVELOPE_RECEIVERS " + oSql += $" WHERE ENV_USERID_CREATED = {pUserId}) " + oSql += $" AND EMAIL_ADDRESS = '{pEmailAddress}' " + oSql += " AND Len([PHONE_NUMBER]) > 0 " + oSql += " ORDER BY [ADDED_WHEN] DESC" + + Return Database.GetScalarValue(oSql) + + Catch ex As Exception + Logger.Error(ex) + Return String.Empty + End Try + End Function Private Function GetReceiverIdByEmail(pEmailAddress As String, pTransaction As SqlTransaction) As Integer Try diff --git a/EnvelopeGenerator.Common/My Project/AssemblyInfo.vb b/EnvelopeGenerator.Common/My Project/AssemblyInfo.vb index 675e57d2..b147204a 100644 --- a/EnvelopeGenerator.Common/My Project/AssemblyInfo.vb +++ b/EnvelopeGenerator.Common/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' indem Sie "*" wie unten gezeigt eingeben: ' - - + + diff --git a/EnvelopeGenerator.Common/Strings/Envelope.en.resx b/EnvelopeGenerator.Common/Strings/Envelope.en.resx index 97de2fe9..9cc5735f 100644 --- a/EnvelopeGenerator.Common/Strings/Envelope.en.resx +++ b/EnvelopeGenerator.Common/Strings/Envelope.en.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Please select the PDF documents you would like to link/concat: + Do you really want to delete this envelope? @@ -141,6 +144,12 @@ Document forwarded to receiver: {0} + + Currently, only one PDF file is permitted via drag and drop. + + + + Edit Envelope @@ -171,6 +180,9 @@ The email [ @Mail ] could not be varified! + + + Error sending the envelope: @@ -193,7 +205,7 @@ Receiver {0} has an invalid Email Address. - Invitation has been send once again! + Invitation to [@Mail] has been send once again! Missing Documents diff --git a/EnvelopeGenerator.Common/Strings/Envelope.resx b/EnvelopeGenerator.Common/Strings/Envelope.resx index f2ec900a..fede34e9 100644 --- a/EnvelopeGenerator.Common/Strings/Envelope.resx +++ b/EnvelopeGenerator.Common/Strings/Envelope.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Bitte wählen Sie die PDF-Dokumente die Sie verketten möchten: + Wollen Sie diesen Umschlag wirklich löschen? @@ -141,6 +144,9 @@ Umschlag an Empfänger {0} weitergeleitet. + + Aktuell ist per Drag and Drop nur eine PDF-Datei erlaubt. + Bearbeite Umschlag @@ -171,6 +177,10 @@ Die Email-Adresse [ @Mail ] konnte nicht validiert werden! + + The mobile phone number [@PhoneNr] could not be validated. +Pattern: +491234567890 + Fehler beim Senden des Umschlags: @@ -193,7 +203,7 @@ Empfänger {0} hat keine gültige Email Addresse. - Die Einladung wurde nochmal versendet! + Die Einladung an [@Mail] wurde nochmal versendet! Fehlendes Dokument diff --git a/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb b/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb index d2679585..368e548a 100644 --- a/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb +++ b/EnvelopeGenerator.Common/Strings/Envelope1.Designer.vb @@ -64,6 +64,15 @@ Namespace My.Resources End Set End Property + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Bitte wählen Sie die PDF-Dokumente die Sie verketten möchten: ähnelt. + ''' + Public Shared ReadOnly Property Dialog_Concat_PDF() As String + Get + Return ResourceManager.GetString("Dialog Concat PDF", resourceCulture) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die Wollen Sie diesen Umschlag wirklich löschen? ähnelt. ''' @@ -136,6 +145,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Aktuell ist per Drag and Drop nur eine PDF-Datei erlaubt. ähnelt. + ''' + Public Shared ReadOnly Property Drop_only_one_file() As String + Get + Return ResourceManager.GetString("Drop only one file", resourceCulture) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die Bearbeite Umschlag ähnelt. ''' @@ -226,6 +244,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die The mobile phone number [@PhoneNr] could not be validated. + '''Pattern: +491234567890 ähnelt. + ''' + Public Shared ReadOnly Property Error_phone_Validation() As String + Get + Return ResourceManager.GetString("Error phone Validation", resourceCulture) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die Fehler beim Senden des Umschlags: ähnelt. ''' @@ -290,7 +318,7 @@ Namespace My.Resources End Property ''' - ''' Sucht eine lokalisierte Zeichenfolge, die Die Einladung wurde nochmal versendet! ähnelt. + ''' Sucht eine lokalisierte Zeichenfolge, die Die Einladung an [@Mail] wurde nochmal versendet! ähnelt. ''' Public Shared ReadOnly Property Invitation_successfully_resend() As String Get diff --git a/EnvelopeGenerator.Common/Strings/Model.Designer.vb b/EnvelopeGenerator.Common/Strings/Model.Designer.vb index 79ce0250..9c5bcf5d 100644 --- a/EnvelopeGenerator.Common/Strings/Model.Designer.vb +++ b/EnvelopeGenerator.Common/Strings/Model.Designer.vb @@ -91,6 +91,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Fortgeschrittene Elektronische Signatur ähnelt. + ''' + Public Shared ReadOnly Property AdvancedElectronicSignature() As String + Get + Return ResourceManager.GetString("AdvancedElectronicSignature", resourceCulture) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die Abgeschlossen ähnelt. ''' @@ -154,15 +163,6 @@ Namespace My.Resources End Get End Property - ''' - ''' Sucht eine lokalisierte Zeichenfolge, die Elektronische Signatur ähnelt. - ''' - Public Shared ReadOnly Property ElectronicSignature() As String - Get - Return ResourceManager.GetString("ElectronicSignature", resourceCulture) - End Get - End Property - ''' ''' Sucht eine lokalisierte Zeichenfolge, die Archiviert ähnelt. ''' @@ -306,16 +306,16 @@ Namespace My.Resources Return ResourceManager.GetString("PartlySigned", resourceCulture) End Get End Property - - '''' - '''' Sucht eine lokalisierte Zeichenfolge, die Qualifizierte Signatur ähnelt. - '''' - 'Public Shared ReadOnly Property QualifiedSignature() As String - ' Get - ' Return ResourceManager.GetString("QualifiedSignature", resourceCulture) - ' End Get - 'End Property - + + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Qualifizierte Signatur ähnelt. + ''' + Public Shared ReadOnly Property QualifiedSignature() As String + Get + Return ResourceManager.GetString("QualifiedSignature", resourceCulture) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die Arbeitsanweisung ähnelt. ''' diff --git a/EnvelopeGenerator.Common/Strings/Model.en.resx b/EnvelopeGenerator.Common/Strings/Model.en.resx index 43dc2ca6..9271780c 100644 --- a/EnvelopeGenerator.Common/Strings/Model.en.resx +++ b/EnvelopeGenerator.Common/Strings/Model.en.resx @@ -126,6 +126,9 @@ Accesscode requested + + Advanced electronic signature + Completed @@ -144,9 +147,6 @@ Draft - - Electronic Signature - Archived diff --git a/EnvelopeGenerator.Common/Strings/Model.resx b/EnvelopeGenerator.Common/Strings/Model.resx index dc09ccb1..f26fb4dd 100644 --- a/EnvelopeGenerator.Common/Strings/Model.resx +++ b/EnvelopeGenerator.Common/Strings/Model.resx @@ -126,6 +126,9 @@ Zugriffscode angefordert + + Fortgeschrittene Elektronische Signatur + Abgeschlossen @@ -147,9 +150,6 @@ Entwurf - - Elektronische Signatur - Archiviert diff --git a/EnvelopeGenerator.Common/packages.config b/EnvelopeGenerator.Common/packages.config index d6fe9920..2f5d4edf 100644 --- a/EnvelopeGenerator.Common/packages.config +++ b/EnvelopeGenerator.Common/packages.config @@ -1,7 +1,7 @@  - - + + diff --git a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb index 8f52ebb5..0053407a 100644 --- a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb +++ b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb @@ -65,7 +65,8 @@ Public Class EnvelopeEditorController Public Function CreateEnvelope() As Envelope Dim oEnvelope As New Envelope() With { .UserId = State.UserId, - .User = UserModel.SelectUser() + .User = UserModel.SelectUser(), + .TFA_Enabled = DEF_TF_ENABLED } If EnvelopeModel.Insert(oEnvelope) Then @@ -87,11 +88,13 @@ Public Class EnvelopeEditorController Public Function SaveReceivers(pEnvelope As Envelope, pReceiversFromGrid As List(Of EnvelopeReceiver)) As Boolean Dim oExistingReceivers As List(Of EnvelopeReceiver) = ReceiverModel.ListReceivers(pReceiversFromGrid).ToList() Dim oExistingAddresses = oExistingReceivers.Select(Function(r) r.Email) + Logger.Debug($"oExistingReceivers.count: {oExistingReceivers.Count}") + Logger.Debug($"oExistingAddresses.count: {oExistingAddresses.Count}") Dim oNewReceivers = pReceiversFromGrid.Where(Function(r) If r.Email Is Nothing Then Return False Return Not oExistingAddresses.Contains(r.Email) End Function).ToList() - + Logger.Debug($"oNewReceivers.count: {oNewReceivers.Count}") If CreateNewReceivers(oNewReceivers) = False Then Return False End If @@ -406,4 +409,11 @@ Public Class EnvelopeEditorController Return String.Empty End If End Function + Public Function GetLastPhoneByEmailAdress(pEmailAdress As String) As String + If (String.IsNullOrEmpty(pEmailAdress) = False) Then + Return ReceiverModel.GetLastUsedReceiverPhone(pEmailAdress, Envelope.UserId) + Else + Return String.Empty + End If + End Function End Class diff --git a/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj b/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj index b9553dbc..52581655 100644 --- a/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj +++ b/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj @@ -76,10 +76,10 @@ ..\..\2_DLL Projekte\DDMonorepo\Controls.DocumentViewer\bin\Debug\DigitalData.Controls.DocumentViewer.dll - ..\..\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll + ..\..\2_DLL Projekte\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll - ..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll + ..\..\2_DLL Projekte\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll False @@ -107,6 +107,7 @@ ..\packages\NLog.5.0.5\lib\net46\NLog.dll + @@ -142,12 +143,6 @@ - - frmChooseDocVariant.vb - - - Form - Form @@ -196,9 +191,6 @@ True - - frmChooseDocVariant.vb - frmEnvelopeEditor.vb Designer @@ -213,6 +205,7 @@ frmEnvelopeMainData.vb + Designer frmFieldEditor.vb diff --git a/EnvelopeGenerator.Form/ModuleSettings.vb b/EnvelopeGenerator.Form/ModuleSettings.vb index 8a3dfe13..aa9c9343 100644 --- a/EnvelopeGenerator.Form/ModuleSettings.vb +++ b/EnvelopeGenerator.Form/ModuleSettings.vb @@ -1,5 +1,6 @@ Imports DigitalData.Modules.Database Imports DigitalData.Modules.Logging +Imports EnvelopeGenerator.Common Module ModuleSettings Public ENVELOPE_TEMP_DOCUMENT As String = "" @@ -7,4 +8,12 @@ Module ModuleSettings Public Directory2Delete As String = "" Public MS_GDPICTUREKEY As String = "" Public DB_DD_ECM As MSSQLServer = Nothing + Public DEF_TF_ENABLED As Boolean = False + Public MYUSER As User + Public MyTempFiles As TempFiles + Public SQL_REP_ENV_USER_LM As String = "" + Public SQL_REP_ENV_USER_TM As String = "" + Public SQL_REP_ENV_USER_Y As String = "" + Public SQL_REP_ENV_USER_ALL As String = "" + Public DT_CHARTS As DataTable End Module diff --git a/EnvelopeGenerator.Form/frmChooseDocVariant.Designer.vb b/EnvelopeGenerator.Form/frmChooseDocVariant.Designer.vb deleted file mode 100644 index 4da4a646..00000000 --- a/EnvelopeGenerator.Form/frmChooseDocVariant.Designer.vb +++ /dev/null @@ -1,75 +0,0 @@ - _ -Partial Class frmChooseDocVariant - Inherits DevExpress.XtraEditors.XtraForm - - 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen. - _ - Protected Overrides Sub Dispose(ByVal disposing As Boolean) - Try - If disposing AndAlso components IsNot Nothing Then - components.Dispose() - End If - Finally - MyBase.Dispose(disposing) - End Try - End Sub - - 'Wird vom Windows Form-Designer benötigt. - Private components As System.ComponentModel.IContainer - - 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich. - 'Das Bearbeiten ist mit dem Windows Form-Designer möglich. - 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. - _ - Private Sub InitializeComponent() - Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmChooseDocVariant)) - Me.LabelControl1 = New DevExpress.XtraEditors.LabelControl() - Me.SimpleButton2 = New DevExpress.XtraEditors.SimpleButton() - Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog() - Me.SuspendLayout() - ' - 'LabelControl1 - ' - Me.LabelControl1.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.LabelControl1.Appearance.Options.UseFont = True - Me.LabelControl1.Location = New System.Drawing.Point(12, 26) - Me.LabelControl1.Name = "LabelControl1" - Me.LabelControl1.Size = New System.Drawing.Size(625, 17) - Me.LabelControl1.TabIndex = 2 - Me.LabelControl1.Text = "In diesem Dialog wählen Sie die Dokumente aus, welche dann zu einem Dokument verk" & - "ettet werden!" - ' - 'SimpleButton2 - ' - Me.SimpleButton2.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.SimpleButton2.Appearance.Options.UseFont = True - Me.SimpleButton2.ImageOptions.SvgImage = CType(resources.GetObject("SimpleButton2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) - Me.SimpleButton2.Location = New System.Drawing.Point(142, 85) - Me.SimpleButton2.Name = "SimpleButton2" - Me.SimpleButton2.Size = New System.Drawing.Size(343, 50) - Me.SimpleButton2.TabIndex = 3 - Me.SimpleButton2.Text = "Mehrere PDF auswählen und automatisch verketten" - ' - 'OpenFileDialog1 - ' - Me.OpenFileDialog1.FileName = "OpenFileDialog1" - Me.OpenFileDialog1.Filter = "PDF Files|*.pdf" - ' - 'frmChooseDocVariant - ' - Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) - Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(644, 189) - Me.Controls.Add(Me.SimpleButton2) - Me.Controls.Add(Me.LabelControl1) - Me.IconOptions.SvgImage = CType(resources.GetObject("frmChooseDocVariant.IconOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) - Me.Name = "frmChooseDocVariant" - Me.Text = "Mehrere Dokumente" - Me.ResumeLayout(False) - Me.PerformLayout() - - End Sub - Friend WithEvents LabelControl1 As DevExpress.XtraEditors.LabelControl - Friend WithEvents SimpleButton2 As DevExpress.XtraEditors.SimpleButton - Friend WithEvents OpenFileDialog1 As OpenFileDialog -End Class diff --git a/EnvelopeGenerator.Form/frmChooseDocVariant.resx b/EnvelopeGenerator.Form/frmChooseDocVariant.resx deleted file mode 100644 index 5944640e..00000000 --- a/EnvelopeGenerator.Form/frmChooseDocVariant.resx +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 - LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl - dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJYEAAAC77u/ - PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi - IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv - MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh - Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg - MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ - LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD - MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh - Y2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkRvY3VtZW50UERGIj4NCiAgICA8cGF0aCBkPSJN - MjIsMjR2NEgyVjJoMTR2NWMwLDAuNiwwLjQsMSwxLDFoNXY0aDJWN2wtNy03SDFDMC40LDAsMCwwLjQs - MCwxdjI4YzAsMC42LDAuNCwxLDEsMWgyMmMwLjYsMCwxLTAuNCwxLTEgICB2LTVIMjJ6IiBjbGFzcz0i - QmxhY2siIC8+DQogICAgPHBhdGggZD0iTTE5LjIsMTZjMC4zLDAuNSwwLjQsMS4xLDAuNCwxLjljMCww - LjktMC4yLDEuNS0wLjUsMmMtMC4zLDAuNS0wLjcsMC43LTEuMywwLjdoLTAuNnYtNS4zaDAuNiAgIEMx - OC40LDE1LjMsMTguOSwxNS42LDE5LjIsMTZ6IE0xMi4xLDE1LjNoLTAuNXYyLjZoMC41YzAuNywwLDEu - MS0wLjQsMS4xLTEuM2MwLTAuNC0wLjEtMC44LTAuMy0xQzEyLjYsMTUuNCwxMi40LDE1LjMsMTIuMSwx - NS4zeiAgICBNMzAsMTJ2MTJINlYxMkgzMHogTTE0LjgsMTYuNWMwLTAuOC0wLjItMS41LTAuNi0xLjlj - LTAuNC0wLjQtMS0wLjctMS44LTAuN0gxMHY4aDEuNnYtMi43aDAuNmMwLjgsMCwxLjQtMC4zLDEuOS0w - LjggICBDMTQuNSwxOCwxNC44LDE3LjMsMTQuOCwxNi41eiBNMjEuMiwxNy45YzAtMi42LTEuMS0zLjkt - My40LTMuOWgtMi4xdjhoMi4yYzEuMSwwLDEuOS0wLjQsMi41LTEuMUMyMC45LDIwLjIsMjEuMiwxOS4y - LDIxLjIsMTcuOXogICAgTTI2LDE0aC0zLjd2OGgxLjZ2LTMuMWgydi0xLjNoLTJ2LTIuMkgyNlYxNHoi - IGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs= - - - - 17, 17 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 - LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl - dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANYEAAAC77u/ - PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi - IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv - MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh - Y2U9InByZXNlcnZlIiBpZD0iTG9naWNhbCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg - MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KPC9z - dHlsZT4NCiAgPHBhdGggZD0iTTUsNGgyM1YzYzAtMC42LTAuNC0xLTEtMUg1QzMuMywyLDIsMy4zLDIs - NXYyMmMwLDEuNywxLjMsMywzLDNoMjJjMC42LDAsMS0wLjQsMS0xVjZINUM0LjQsNiw0LDUuNiw0LDUg - IEM0LDQuNCw0LjQsNCw1LDR6IE0xNiwyNGgtMnYtMmgyVjI0eiBNMTEuNiwxNC40YzAuMi0wLjUsMC40 - LTAuOSwwLjctMS4zYzAuMy0wLjQsMC43LTAuNiwxLjEtMC44YzAuNC0wLjIsMC45LTAuMywxLjUtMC4z - ICBjMC43LDAsMS4zLDAuMSwxLjgsMC4zYzAuNSwwLjIsMC45LDAuNSwxLjIsMC44YzAuMywwLjMsMC41 - LDAuNywwLjYsMWMwLjEsMC40LDAuMiwwLjcsMC4yLDFjMCwwLjQsMCwwLjctMC4xLDEgIGMtMC4xLDAu - My0wLjIsMC41LTAuMywwLjhjLTAuMSwwLjItMC4zLDAuNC0wLjQsMC42Yy0wLjIsMC4yLTAuMywwLjMt - MC41LDAuNGMtMC4yLDAuMS0wLjMsMC4zLTAuNSwwLjRjLTAuMiwwLjEtMC4zLDAuMy0wLjQsMC40ICBj - LTAuMSwwLjEtMC4zLDAuMy0wLjQsMC41Yy0wLjEsMC4yLTAuMiwwLjQtMC4yLDAuNnYwLjZoLTJ2LTAu - N2MwLTAuNCwwLjEtMC43LDAuMS0wLjljMC4xLTAuMywwLjItMC41LDAuMy0wLjcgIGMwLjEtMC4yLDAu - My0wLjQsMC40LTAuNWMwLjEtMC4xLDAuMy0wLjMsMC40LTAuNHMwLjMtMC4zLDAuNC0wLjRjMC4xLTAu - MSwwLjItMC4yLDAuMy0wLjRjMC4xLTAuMSwwLjItMC4zLDAuMi0wLjUgIGMwLjEtMC4yLDAuMS0wLjQs - MC4xLTAuNmMwLTAuNS0wLjEtMC45LTAuMy0xLjFjLTAuMi0wLjItMC41LTAuNC0wLjktMC40Yy0wLjMs - MC0wLjUsMC4xLTAuNywwLjJjLTAuMiwwLjEtMC40LDAuMy0wLjUsMC41ICBjLTAuMSwwLjItMC4yLDAu - NC0wLjMsMC43Yy0wLjEsMC4yLTAuMSwwLjUtMC4xLDAuOGgtMi4yQzExLjQsMTUuNCwxMS40LDE0Ljks - MTEuNiwxNC40eiIgY2xhc3M9IkJsdWUiIC8+DQo8L3N2Zz4L - - - \ No newline at end of file diff --git a/EnvelopeGenerator.Form/frmChooseDocVariant.vb b/EnvelopeGenerator.Form/frmChooseDocVariant.vb deleted file mode 100644 index 6faeb8ab..00000000 --- a/EnvelopeGenerator.Form/frmChooseDocVariant.vb +++ /dev/null @@ -1,96 +0,0 @@ -Imports DevExpress.XtraSplashScreen -Imports EnvelopeGenerator.Common -Imports DigitalData.Modules.Logging -Imports GdPicture14 -Public Class frmChooseDocVariant - Private TempFiles As TempFiles - Public Property State As State - Private Logger As Logger - Private Sub frmChooseDocVariant_Load(sender As Object, e As EventArgs) Handles Me.Load - ENVELOPE_TEMP_DOCUMENT = "" - TempFiles = New TempFiles(State.LogConfig) - TempFiles.Create() - Logger = State.LogConfig.GetLogger() - End Sub - - Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) - OpenFileDialog1.Multiselect = False - Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) - - Try - If OpenFileDialog1.ShowDialog() = DialogResult.OK Then - ENVELOPE_TEMP_DOCUMENT = OpenFileDialog1.FileName - End If - - Catch ex As Exception - Logger.Error(ex) - Finally - SplashScreenManager.CloseOverlayForm(oHandle) - End Try - ' Else - ' SplashScreenManager.CloseOverlayForm(oHandle) - ' End If - End Sub - - Private Sub SimpleButton2_Click(sender As Object, e As EventArgs) Handles SimpleButton2.Click - OpenFileDialog1.Multiselect = True - Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) - Try - Dim oErr As Boolean = False - If OpenFileDialog1.ShowDialog() = DialogResult.OK Then - Dim oIDX As Integer = 0 - For Each oFile As String In OpenFileDialog1.FileNames - oIDX += 1 - Next - - Dim arPDF As GdPicturePDF() = New GdPicturePDF(oIDX) {} - oIDX = 0 - For Each oFile As String In OpenFileDialog1.FileNames - arPDF(oIDX) = New GdPicturePDF() - If arPDF(oIDX).LoadFromFile(oFile) <> GdPictureStatus.OK Then - MsgBox($"PDF Statsu 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 - MsgBox("All documents have been successfully merged.", MsgBoxStyle.Information) - Dim oTempFolder = TempFiles.TempPath - Dim oTempFilename = String.Concat(oTempFolder, "\", $"MergedDoc.pdf") - If System.IO.File.Exists(oTempFilename) Then - System.IO.File.Delete(oTempFilename) - End If - If dstPDF.SaveToFile(oTempFilename) = GdPictureStatus.OK Then - MessageBox.Show("Merged document has been successfully saved.", "Example: MergeDocuments") - ENVELOPE_TEMP_DOCUMENT = oTempFilename - dstPDF.CloseDocument() - End If - Else - MessageBox.Show("The MergeDocuments() method has failed with the status: " + oStatus.ToString(), "Example: MergeDocuments") - End If - dstPDF.Dispose() - oIDX = 0 - For Each oFile As String In OpenFileDialog1.FileNames - arPDF(oIDX).CloseDocument() - oIDX += 1 - Next - End If - - End If - - Catch ex As Exception - Logger.Error(ex) - Finally - SplashScreenManager.CloseOverlayForm(oHandle) - End Try - End Sub - - Private Sub LabelControl1_Click(sender As Object, e As EventArgs) Handles LabelControl1.Click - - End Sub -End Class \ No newline at end of file diff --git a/EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb b/EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb index df22b448..61e80f07 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb +++ b/EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb @@ -56,16 +56,16 @@ Partial Public Class frmEnvelopeEditor Me.txtCreatorEmailLabel = New DevExpress.XtraBars.BarStaticItem() Me.txtEnvelopeIdLabel2 = New DevExpress.XtraBars.BarStaticItem() Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem() - Me.BarStaticItem1 = New DevExpress.XtraBars.BarStaticItem() + Me.bsitm_info = New DevExpress.XtraBars.BarStaticItem() Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem() Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem() + Me.bbtnitm_ConcatFiles = New DevExpress.XtraBars.BarButtonItem() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupDocuments = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupInvitation = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupAddSignature = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroupReceiver = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() - Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() Me.LayoutControlGroup4 = New DevExpress.XtraLayout.LayoutControlGroup() Me.LayoutControlGroup5 = New DevExpress.XtraLayout.LayoutControlGroup() @@ -82,6 +82,7 @@ Partial Public Class frmEnvelopeEditor Me.RepositoryItemComboBox1 = New DevExpress.XtraEditors.Repository.RepositoryItemComboBox() Me.colName = New DevExpress.XtraGrid.Columns.GridColumn() Me.colAccessCode = New DevExpress.XtraGrid.Columns.GridColumn() + Me.colPhoneNumber = New DevExpress.XtraGrid.Columns.GridColumn() Me.RepositoryItemEmailEdit = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit() Me.RepositoryItemPictureEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit() Me.RepositoryItemColorPickEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemColorPickEdit() @@ -100,7 +101,7 @@ Partial Public Class frmEnvelopeEditor Me.EnvelopeDocumentBindingSource = New System.Windows.Forms.BindingSource(Me.components) Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog() Me.txtEnvelopeIdLabel = New DevExpress.XtraBars.BarStaticItem() - Me.BarButtonItem4 = New DevExpress.XtraBars.BarButtonItem() + Me.btnShowFile = New DevExpress.XtraBars.BarButtonItem() CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.SplitContainerControl1.Panel1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainerControl1.Panel1.SuspendLayout() @@ -243,9 +244,9 @@ Partial Public Class frmEnvelopeEditor 'RibbonControl1 ' Me.RibbonControl1.ExpandCollapseItem.Id = 0 - Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.btnSave, Me.btnCancel, Me.btnNewFile, Me.btnDeleteFile, Me.btnSendEnvelope, Me.btnEditFields, Me.btnDeleteReceiver, Me.btnEditData, Me.txtCreatorEmailLabel, Me.txtEnvelopeIdLabel2, Me.BarButtonItem1, Me.BarStaticItem1, Me.BarButtonItem2, Me.BarButtonItem3, Me.BarButtonItem4}) + Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.btnSave, Me.btnCancel, Me.btnNewFile, Me.btnDeleteFile, Me.btnSendEnvelope, Me.btnEditFields, Me.btnDeleteReceiver, Me.btnEditData, Me.txtCreatorEmailLabel, Me.txtEnvelopeIdLabel2, Me.BarButtonItem1, Me.bsitm_info, Me.BarButtonItem2, Me.BarButtonItem3, Me.bbtnitm_ConcatFiles, Me.btnShowFile}) resources.ApplyResources(Me.RibbonControl1, "RibbonControl1") - Me.RibbonControl1.MaxItemId = 17 + Me.RibbonControl1.MaxItemId = 18 Me.RibbonControl1.Name = "RibbonControl1" Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1}) Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] @@ -334,10 +335,10 @@ Partial Public Class frmEnvelopeEditor Me.BarButtonItem1.Id = 12 Me.BarButtonItem1.Name = "BarButtonItem1" ' - 'BarStaticItem1 + 'bsitm_info ' - Me.BarStaticItem1.Id = 13 - Me.BarStaticItem1.Name = "BarStaticItem1" + Me.bsitm_info.Id = 13 + Me.bsitm_info.Name = "bsitm_info" ' 'BarButtonItem2 ' @@ -351,9 +352,16 @@ Partial Public Class frmEnvelopeEditor Me.BarButtonItem3.Id = 15 Me.BarButtonItem3.Name = "BarButtonItem3" ' + 'bbtnitm_ConcatFiles + ' + resources.ApplyResources(Me.bbtnitm_ConcatFiles, "bbtnitm_ConcatFiles") + Me.bbtnitm_ConcatFiles.Id = 16 + Me.bbtnitm_ConcatFiles.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitm_ConcatFiles.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.bbtnitm_ConcatFiles.Name = "bbtnitm_ConcatFiles" + ' 'RibbonPage1 ' - Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroupDocuments, Me.RibbonPageGroupInvitation, Me.RibbonPageGroupAddSignature, Me.RibbonPageGroupReceiver, Me.RibbonPageGroup2}) + Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroupDocuments, Me.RibbonPageGroupInvitation, Me.RibbonPageGroupAddSignature, Me.RibbonPageGroupReceiver}) Me.RibbonPage1.Name = "RibbonPage1" resources.ApplyResources(Me.RibbonPage1, "RibbonPage1") ' @@ -368,8 +376,9 @@ Partial Public Class frmEnvelopeEditor 'RibbonPageGroupDocuments ' Me.RibbonPageGroupDocuments.ItemLinks.Add(Me.btnNewFile) - Me.RibbonPageGroupDocuments.ItemLinks.Add(Me.BarButtonItem4) + Me.RibbonPageGroupDocuments.ItemLinks.Add(Me.bbtnitm_ConcatFiles) Me.RibbonPageGroupDocuments.ItemLinks.Add(Me.btnDeleteFile) + Me.RibbonPageGroupDocuments.ItemLinks.Add(Me.btnShowFile) Me.RibbonPageGroupDocuments.Name = "RibbonPageGroupDocuments" resources.ApplyResources(Me.RibbonPageGroupDocuments, "RibbonPageGroupDocuments") ' @@ -392,17 +401,11 @@ Partial Public Class frmEnvelopeEditor Me.RibbonPageGroupReceiver.Name = "RibbonPageGroupReceiver" resources.ApplyResources(Me.RibbonPageGroupReceiver, "RibbonPageGroupReceiver") ' - 'RibbonPageGroup2 - ' - Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem3) - Me.RibbonPageGroup2.Name = "RibbonPageGroup2" - resources.ApplyResources(Me.RibbonPageGroup2, "RibbonPageGroup2") - ' 'RibbonStatusBar1 ' Me.RibbonStatusBar1.ItemLinks.Add(Me.txtCreatorEmailLabel) Me.RibbonStatusBar1.ItemLinks.Add(Me.txtEnvelopeIdLabel2) - Me.RibbonStatusBar1.ItemLinks.Add(Me.BarStaticItem1) + Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitm_info) resources.ApplyResources(Me.RibbonStatusBar1, "RibbonStatusBar1") Me.RibbonStatusBar1.Name = "RibbonStatusBar1" Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1 @@ -482,7 +485,7 @@ Partial Public Class frmEnvelopeEditor 'ViewReceivers ' Me.ViewReceivers.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Simple - Me.ViewReceivers.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.colColor, Me.colEmail, Me.colName, Me.colAccessCode}) + Me.ViewReceivers.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.colColor, Me.colEmail, Me.colName, Me.colAccessCode, Me.colPhoneNumber}) Me.ViewReceivers.GridControl = Me.GridReceivers Me.ViewReceivers.Name = "ViewReceivers" Me.ViewReceivers.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.[True] @@ -542,6 +545,12 @@ Partial Public Class frmEnvelopeEditor Me.colAccessCode.OptionsColumn.AllowEdit = False Me.colAccessCode.OptionsColumn.ReadOnly = True ' + 'colPhoneNumber + ' + resources.ApplyResources(Me.colPhoneNumber, "colPhoneNumber") + Me.colPhoneNumber.FieldName = "PhoneNumber" + Me.colPhoneNumber.Name = "colPhoneNumber" + ' 'RepositoryItemEmailEdit ' resources.ApplyResources(Me.RepositoryItemEmailEdit, "RepositoryItemEmailEdit") @@ -675,15 +684,16 @@ Partial Public Class frmEnvelopeEditor Me.txtEnvelopeIdLabel.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph Me.txtEnvelopeIdLabel.Tag = "Envelope-ID: {0}" ' - 'BarButtonItem4 + 'btnShowFile ' - resources.ApplyResources(Me.BarButtonItem4, "BarButtonItem4") - Me.BarButtonItem4.Id = 16 - Me.BarButtonItem4.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem4.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) - Me.BarButtonItem4.Name = "BarButtonItem4" + resources.ApplyResources(Me.btnShowFile, "btnShowFile") + Me.btnShowFile.Id = 17 + Me.btnShowFile.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem4.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.btnShowFile.Name = "btnShowFile" ' 'frmEnvelopeEditor ' + Me.AllowDrop = True resources.ApplyResources(Me, "$this") Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.Controls.Add(Me.SplitContainerControl1) @@ -804,11 +814,12 @@ Partial Public Class frmEnvelopeEditor Friend WithEvents txtEnvelopeIdLabel2 As DevExpress.XtraBars.BarStaticItem Friend WithEvents colPageCount As DevExpress.XtraGrid.Columns.TileViewColumn Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem - Friend WithEvents BarStaticItem1 As DevExpress.XtraBars.BarStaticItem + Friend WithEvents bsitm_info As DevExpress.XtraBars.BarStaticItem Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem - Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup - Friend WithEvents BarButtonItem4 As DevExpress.XtraBars.BarButtonItem + Friend WithEvents bbtnitm_ConcatFiles As DevExpress.XtraBars.BarButtonItem + Friend WithEvents colPhoneNumber As DevExpress.XtraGrid.Columns.GridColumn + Friend WithEvents btnShowFile As DevExpress.XtraBars.BarButtonItem #End Region diff --git a/EnvelopeGenerator.Form/frmEnvelopeEditor.resx b/EnvelopeGenerator.Form/frmEnvelopeEditor.resx index 7cf8b4f1..65da7d8a 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeEditor.resx +++ b/EnvelopeGenerator.Form/frmEnvelopeEditor.resx @@ -213,7 +213,7 @@ - Ein Dokument hinzufügen + Ein PDF-Dokument hinzufügen @@ -322,35 +322,30 @@ - Titel und Typ + Eigenschaften AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl - dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABwFAAAC77u/ + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOYDAAAC77u/ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh - Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg - MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ - LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3 - RDc7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7b3Bh - Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tm - aWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8ZyAvPg0KICA8ZyBpZD0iUmVuYW1lXzFfIj4NCiAgICA8 - cGF0aCBkPSJNMi4xLDE2aDIuMmwwLjYtMi4zaDMuMkw4LjgsMTZIMTFMNy44LDZINS40TDIuMSwxNnog - TTYuNCw4LjdjMC4xLTAuMywwLjEtMC42LDAuMS0wLjloMC4xICAgYzAsMC4zLDAuMSwwLjYsMC4xLDAu - OWwxLDMuM0g1LjRMNi40LDguN3ogTTE3LjUsMTAuNmMwLjYtMC4yLDEuMS0wLjUsMS41LTAuOWMwLjQt - MC40LDAuNi0wLjksMC42LTEuNGMwLTAuNy0wLjMtMS4zLTAuOS0xLjcgICBDMTguMSw2LjIsMTcuMSw2 - LDE1LjksNkgxMnY5LjlWMTZoNGMxLjIsMCwyLjItMC4yLDIuOS0wLjhDMTkuNywxNC42LDIwLDE0LDIw - LDEzYzAtMC42LTAuMi0xLjItMC43LTEuNiAgIEMxOC45LDExLDE4LjMsMTAuNywxNy41LDEwLjZ6IE0x - NC40LDcuN2gwLjljMS4xLDAsMS43LDAuNCwxLjcsMS4xYzAsMC40LTAuMSwwLjctMC40LDAuOUMxNi40 - LDkuOSwxNiwxMCwxNS41LDEwaC0xLjFWNy43eiAgICBNMTcsMTMuOGMtMC4zLDAuMi0wLjgsMC40LTEu - MywwLjRoLTEuM3YtMi42aDEuM2MwLjUsMCwwLjksMC4xLDEuMywwLjNjMC4zLDAuMiwwLjUsMC42LDAu - NSwwLjlDMTcuNSwxMy4zLDE3LjQsMTMuNiwxNywxMy44eiIgY2xhc3M9IkJsYWNrIiAvPg0KICAgIDxw - YXRoIGQ9Ik0yNywxOWwtOCw4bC00LTRsOC04TDI3LDE5eiBNMjgsMThsMS43LTEuN2MwLjQtMC40LDAu - NC0xLDAtMS4zTDI3LDEyLjNjLTAuNC0wLjQtMS0wLjQtMS4zLDBMMjQsMTRMMjgsMTh6ICAgIE0xNCwy - NHY0aDRMMTQsMjR6IiBjbGFzcz0iQmx1ZSIgLz4NCiAgPC9nPg0KPC9zdmc+Cw== + Y2U9InByZXNlcnZlIiBpZD0iRG9jdW1lbnRfUHJvcGVydGllcyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3Jv + dW5kOm5ldyAwIDAgMzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6 + IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQo8L3N0eWxlPg0KICA8cGF0aCBkPSJNMzAsMjV2 + LTJsLTIuMi0wLjRjLTAuMi0wLjYtMC40LTEuMy0wLjctMS44bDEuMy0xLjhsLTEuNC0xLjRsLTEuOCwx + LjNjLTAuNS0wLjMtMS4yLTAuNi0xLjgtMC43TDIzLDE2aC0yICBsLTAuNCwyLjJjLTAuNiwwLjItMS4z + LDAuNC0xLjgsMC43bC0xLjgtMS4zbC0xLjQsMS40bDEuMywxLjhjLTAuMywwLjUtMC42LDEuMi0wLjcs + MS44TDE0LDIzdjJsMi4yLDAuNGMwLjIsMC42LDAuNCwxLjMsMC43LDEuOCAgbC0xLjMsMS44bDEuNCwx + LjRsMS44LTEuM2MwLjUsMC4zLDEuMiwwLjYsMS44LDAuN0wyMSwzMmgybDAuNC0yLjJjMC42LTAuMiwx + LjMtMC40LDEuOC0wLjdsMS44LDEuM2wxLjQtMS40bC0xLjMtMS44ICBjMC4zLTAuNSwwLjYtMS4yLDAu + Ny0xLjhMMzAsMjV6IE0yMiwyNmMtMS4xLDAtMi0wLjktMi0yczAuOS0yLDItMnMyLDAuOSwyLDJTMjMu + MSwyNiwyMiwyNnoiIGNsYXNzPSJCbHVlIiAvPg0KICA8cGF0aCBkPSJNMTQuMywyNkg2VjRoNmg2djVj + MCwwLjYsMC40LDEsMSwxaDV2NS45bDAsMC40YzAuNywwLjIsMS40LDAuNSwyLDAuOFY5bC03LTdINUM0 + LjQsMiw0LDIuNCw0LDN2MjQgIGMwLDAuNiwwLjQsMSwxLDFoMTAuMUMxNC43LDI3LjQsMTQuNCwyNi43 + LDE0LjMsMjZ6IiBjbGFzcz0iQmxhY2siIC8+DQo8L3N2Zz4L @@ -417,10 +412,10 @@ BarButtonItem3 - - Mehrere Dokumente hinzufügen + + Mehrere PDF-Dokumente verketten - + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl @@ -436,6 +431,36 @@ LDguNSwzMS41LDgsMzEsOHogTTYsNXYxN0gyVjJoMTZ2Mkg3QzYuNSw0LDYsNC41LDYsNXogTTEyLDl2 MTdIOFY2aDE2djJIMTMgIEMxMi41LDgsMTIsOC41LDEyLDl6IE0zMCwzMEgxNFYxMGgxNlYzMHoiIGNs YXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs= + + + + Dokument anzeigen + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJYEAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ + LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD + MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh + Y2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkRvY3VtZW50UERGIj4NCiAgICA8cGF0aCBkPSJN + MjIsMjR2NEgyVjJoMTR2NWMwLDAuNiwwLjQsMSwxLDFoNXY0aDJWN2wtNy03SDFDMC40LDAsMCwwLjQs + MCwxdjI4YzAsMC42LDAuNCwxLDEsMWgyMmMwLjYsMCwxLTAuNCwxLTEgICB2LTVIMjJ6IiBjbGFzcz0i + QmxhY2siIC8+DQogICAgPHBhdGggZD0iTTE5LjIsMTZjMC4zLDAuNSwwLjQsMS4xLDAuNCwxLjljMCww + LjktMC4yLDEuNS0wLjUsMmMtMC4zLDAuNS0wLjcsMC43LTEuMywwLjdoLTAuNnYtNS4zaDAuNiAgIEMx + OC40LDE1LjMsMTguOSwxNS42LDE5LjIsMTZ6IE0xMi4xLDE1LjNoLTAuNXYyLjZoMC41YzAuNywwLDEu + MS0wLjQsMS4xLTEuM2MwLTAuNC0wLjEtMC44LTAuMy0xQzEyLjYsMTUuNCwxMi40LDE1LjMsMTIuMSwx + NS4zeiAgICBNMzAsMTJ2MTJINlYxMkgzMHogTTE0LjgsMTYuNWMwLTAuOC0wLjItMS41LTAuNi0xLjlj + LTAuNC0wLjQtMS0wLjctMS44LTAuN0gxMHY4aDEuNnYtMi43aDAuNmMwLjgsMCwxLjQtMC4zLDEuOS0w + LjggICBDMTQuNSwxOCwxNC44LDE3LjMsMTQuOCwxNi41eiBNMjEuMiwxNy45YzAtMi42LTEuMS0zLjkt + My40LTMuOWgtMi4xdjhoMi4yYzEuMSwwLDEuOS0wLjQsMi41LTEuMUMyMC45LDIwLjIsMjEuMiwxOS4y + LDIxLjIsMTcuOXogICAgTTI2LDE0aC0zLjd2OGgxLjZ2LTMuMWgydi0xLjNoLTJ2LTIuMkgyNlYxNHoi + IGNsYXNzPSJSZWQiIC8+DQogIDwvZz4NCjwvc3ZnPgs= @@ -445,7 +470,7 @@ Umschlag - Dateien + Dokument-Funktionen Prozess @@ -456,9 +481,6 @@ Empfänger - - RibbonPageGroup2 - Start @@ -605,7 +627,7 @@ 0 - 37 + 32 False @@ -620,7 +642,7 @@ 1 - 341 + 275 Anrede Email @@ -632,7 +654,7 @@ 2 - 344 + 227 Zugriffscode @@ -644,7 +666,19 @@ 3 - 147 + 109 + + + Mobilnummer + + + True + + + 4 + + + 226 False @@ -1073,10 +1107,10 @@ DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - BarStaticItem1 + + bsitm_info - + DevExpress.XtraBars.BarStaticItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -1091,10 +1125,10 @@ DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - BarButtonItem4 + + bbtnitm_ConcatFiles - + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -1133,12 +1167,6 @@ DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - RibbonPageGroup2 - - - DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - LayoutControlGroup4 @@ -1205,6 +1233,12 @@ DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + colPhoneNumber + + + DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + RepositoryItemEmailEdit @@ -1295,6 +1329,12 @@ DevExpress.XtraBars.BarStaticItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + btnShowFile + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + frmEnvelopeEditor diff --git a/EnvelopeGenerator.Form/frmEnvelopeEditor.vb b/EnvelopeGenerator.Form/frmEnvelopeEditor.vb index 7265245e..026fba02 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeEditor.vb +++ b/EnvelopeGenerator.Form/frmEnvelopeEditor.vb @@ -1,6 +1,7 @@ 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 @@ -17,6 +18,7 @@ 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 @@ -31,7 +33,7 @@ Partial Public Class frmEnvelopeEditor 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 @@ -51,14 +53,7 @@ Partial Public Class frmEnvelopeEditor End If If OpenFileDialog1.ShowDialog() = DialogResult.OK Then - Dim oDocument = Await Controller.CreateDocument(OpenFileDialog1.FileName) - - If oDocument IsNot Nothing Then - Documents.Add(oDocument) - ' Update_File_DB(OpenFileDialog1.FileName) - Else - MsgBox(Resources.Envelope.Document_Could_Not_Be_Saved, MsgBoxStyle.Critical, Text) - End If + Await AddDocument(OpenFileDialog1.FileName) End If Catch ex As Exception @@ -73,15 +68,31 @@ Partial Public Class frmEnvelopeEditor ' 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) + ' 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, @@ -116,6 +127,7 @@ Partial Public Class frmEnvelopeEditor 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) @@ -139,7 +151,7 @@ Partial Public Class frmEnvelopeEditor 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) @@ -153,6 +165,13 @@ Partial Public Class frmEnvelopeEditor colAccessCode.Visible = False End If End Sub + Private Sub SetPhoneNumberColumnVisible() + If Envelope.TFA_Enabled = True Then + colPhoneNumber.Visible = True + 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 @@ -166,14 +185,18 @@ Partial Public Class frmEnvelopeEditor 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 - SaveEnvelopeWithOutValidation() + 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 @@ -439,7 +462,7 @@ Partial Public Class frmEnvelopeEditor oForm.ShowDialog() SetAccessCodeColumnVisible() - + SetPhoneNumberColumnVisible() SetFormTitle(Controller.Envelope.Title) End Sub @@ -491,10 +514,14 @@ Partial Public Class frmEnvelopeEditor 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 @@ -555,25 +582,35 @@ Partial Public Class frmEnvelopeEditor If IsValidEmailAddress(oEmailAdress) = True Then Dim oLastName As String = Controller.GetLastNameByEmailAdress(oEmailAdress) Dim oAccessCode As String = 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) ViewReceivers.SetRowCellValue(e.RowHandle, ViewReceivers.Columns.Item(COL_CODE), oAccessCode) - CellValueChanged = False + ViewReceivers.SetRowCellValue(e.RowHandle, ViewReceivers.Columns.Item(COL_PHONE), oPhoneNumber) 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 Sub email_validation() - - End Sub - Private Function IsValidEmailAddress(pEmailAddress As String) As Boolean Try If pEmailAddress.Contains("@") Then @@ -587,21 +624,150 @@ Partial Public Class frmEnvelopeEditor 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 + ENVELOPE_TEMP_DOCUMENT = String.Empty + OpenFileDialog1.Multiselect = True + OpenFileDialog1.Title = Resources.Envelope.Dialog_Concat_PDF + Dim oSuccess As Boolean = False + Dim oHandle = SplashScreenManager.ShowOverlayForm(Me) + Try + Dim oErr As Boolean = False + If OpenFileDialog1.ShowDialog() = DialogResult.OK Then + Dim oIDX As Integer = -1 + For Each oFile As String In OpenFileDialog1.FileNames + oIDX += 1 + Next + + Dim arPDF As GdPicturePDF() = New GdPicturePDF(oIDX) {} + oIDX = 0 + For Each oFile As String In OpenFileDialog1.FileNames + 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 OpenFileDialog1.FileNames + 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 - Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick - frmChooseDocVariant.ShowDialog() - End Sub - Private Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick + 'frmChooseDocVariant.ShowDialog() End Sub - Private Sub ViewReceivers_CellValueChanging(sender As Object, e As CellValueChangedEventArgs) Handles ViewReceivers.CellValueChanging + 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 diff --git a/EnvelopeGenerator.Form/frmEnvelopeMainData.Designer.vb b/EnvelopeGenerator.Form/frmEnvelopeMainData.Designer.vb index 1f00acbd..f7c56e9c 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeMainData.Designer.vb +++ b/EnvelopeGenerator.Form/frmEnvelopeMainData.Designer.vb @@ -25,6 +25,7 @@ Partial Class frmEnvelopeMainData Me.components = New System.ComponentModel.Container() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmEnvelopeMainData)) Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl() + Me.chked_2Faktor = New DevExpress.XtraEditors.CheckEdit() Me.txtTitle = New DevExpress.XtraEditors.TextEdit() Me.cmbEnvelopeType = New DevExpress.XtraEditors.ComboBoxEdit() Me.btOK = New DevExpress.XtraEditors.SimpleButton() @@ -62,9 +63,11 @@ Partial Class frmEnvelopeMainData Me.LayoutControlItem8 = New DevExpress.XtraLayout.LayoutControlItem() Me.LayoutControlItem12 = New DevExpress.XtraLayout.LayoutControlItem() Me.LayoutControlItem13 = New DevExpress.XtraLayout.LayoutControlItem() + Me.LayoutControlItem16 = New DevExpress.XtraLayout.LayoutControlItem() Me.AdornerUIManager1 = New DevExpress.Utils.VisualEffects.AdornerUIManager(Me.components) CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit() Me.LayoutControl1.SuspendLayout() + CType(Me.chked_2Faktor.Properties, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.txtTitle.Properties, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.cmbEnvelopeType.Properties, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.cmbCertificationType.Properties, System.ComponentModel.ISupportInitialize).BeginInit() @@ -100,11 +103,13 @@ Partial Class frmEnvelopeMainData CType(Me.LayoutControlItem8, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControlItem12, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.LayoutControlItem13, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.LayoutControlItem16, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.AdornerUIManager1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'LayoutControl1 ' + Me.LayoutControl1.Controls.Add(Me.chked_2Faktor) Me.LayoutControl1.Controls.Add(Me.txtTitle) Me.LayoutControl1.Controls.Add(Me.cmbEnvelopeType) Me.LayoutControl1.Controls.Add(Me.btOK) @@ -124,6 +129,15 @@ Partial Class frmEnvelopeMainData Me.LayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = New System.Drawing.Rectangle(855, 189, 650, 400) Me.LayoutControl1.Root = Me.Root ' + 'chked_2Faktor + ' + resources.ApplyResources(Me.chked_2Faktor, "chked_2Faktor") + Me.chked_2Faktor.Name = "chked_2Faktor" + Me.chked_2Faktor.Properties.Appearance.Font = CType(resources.GetObject("chked_2Faktor.Properties.Appearance.Font"), System.Drawing.Font) + Me.chked_2Faktor.Properties.Appearance.Options.UseFont = True + Me.chked_2Faktor.Properties.Caption = resources.GetString("chked_2Faktor.Properties.Caption") + Me.chked_2Faktor.StyleController = Me.LayoutControl1 + ' 'txtTitle ' resources.ApplyResources(Me.txtTitle, "txtTitle") @@ -311,16 +325,16 @@ Partial Class frmEnvelopeMainData 'EmptySpaceItem2 ' Me.EmptySpaceItem2.AllowHotTrack = False - Me.EmptySpaceItem2.Location = New System.Drawing.Point(0, 416) + Me.EmptySpaceItem2.Location = New System.Drawing.Point(0, 441) Me.EmptySpaceItem2.Name = "EmptySpaceItem2" - Me.EmptySpaceItem2.Size = New System.Drawing.Size(565, 88) + Me.EmptySpaceItem2.Size = New System.Drawing.Size(565, 63) Me.EmptySpaceItem2.TextSize = New System.Drawing.Size(0, 0) ' 'groupFinalEmail ' Me.groupFinalEmail.GroupStyle = DevExpress.Utils.GroupStyle.Light Me.groupFinalEmail.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem9, Me.LayoutControlItem14}) - Me.groupFinalEmail.Location = New System.Drawing.Point(0, 323) + Me.groupFinalEmail.Location = New System.Drawing.Point(0, 348) Me.groupFinalEmail.Name = "groupFinalEmail" Me.groupFinalEmail.Size = New System.Drawing.Size(565, 93) resources.ApplyResources(Me.groupFinalEmail, "groupFinalEmail") @@ -348,7 +362,7 @@ Partial Class frmEnvelopeMainData Me.groupExpiration.Enabled = False Me.groupExpiration.GroupStyle = DevExpress.Utils.GroupStyle.Light Me.groupExpiration.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem10, Me.LayoutControlItem11}) - Me.groupExpiration.Location = New System.Drawing.Point(0, 230) + Me.groupExpiration.Location = New System.Drawing.Point(0, 255) Me.groupExpiration.Name = "groupExpiration" Me.groupExpiration.Size = New System.Drawing.Size(565, 93) resources.ApplyResources(Me.groupExpiration, "groupExpiration") @@ -376,7 +390,7 @@ Partial Class frmEnvelopeMainData Me.groupReminders.Enabled = False Me.groupReminders.GroupStyle = DevExpress.Utils.GroupStyle.Light Me.groupReminders.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem5, Me.LayoutControlItem6, Me.LayoutControlItem7}) - Me.groupReminders.Location = New System.Drawing.Point(0, 115) + Me.groupReminders.Location = New System.Drawing.Point(0, 140) Me.groupReminders.Name = "groupReminders" Me.groupReminders.Size = New System.Drawing.Size(565, 115) resources.ApplyResources(Me.groupReminders, "groupReminders") @@ -411,10 +425,10 @@ Partial Class frmEnvelopeMainData 'groupOptions ' Me.groupOptions.GroupStyle = DevExpress.Utils.GroupStyle.Light - Me.groupOptions.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem8, Me.LayoutControlItem12, Me.LayoutControlItem13}) + Me.groupOptions.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem8, Me.LayoutControlItem12, Me.LayoutControlItem13, Me.LayoutControlItem16}) Me.groupOptions.Location = New System.Drawing.Point(0, 0) Me.groupOptions.Name = "groupOptions" - Me.groupOptions.Size = New System.Drawing.Size(565, 115) + Me.groupOptions.Size = New System.Drawing.Size(565, 140) resources.ApplyResources(Me.groupOptions, "groupOptions") ' 'LayoutControlItem8 @@ -438,12 +452,21 @@ Partial Class frmEnvelopeMainData 'LayoutControlItem13 ' Me.LayoutControlItem13.Control = Me.chkUseAccessCode - Me.LayoutControlItem13.Location = New System.Drawing.Point(0, 48) + Me.LayoutControlItem13.Location = New System.Drawing.Point(0, 73) Me.LayoutControlItem13.Name = "LayoutControlItem13" Me.LayoutControlItem13.Size = New System.Drawing.Size(541, 22) Me.LayoutControlItem13.TextSize = New System.Drawing.Size(0, 0) Me.LayoutControlItem13.TextVisible = False ' + 'LayoutControlItem16 + ' + Me.LayoutControlItem16.Control = Me.chked_2Faktor + Me.LayoutControlItem16.Location = New System.Drawing.Point(0, 48) + Me.LayoutControlItem16.Name = "LayoutControlItem16" + Me.LayoutControlItem16.Size = New System.Drawing.Size(541, 25) + Me.LayoutControlItem16.TextSize = New System.Drawing.Size(0, 0) + Me.LayoutControlItem16.TextVisible = False + ' 'AdornerUIManager1 ' Me.AdornerUIManager1.Owner = Me @@ -461,6 +484,7 @@ Partial Class frmEnvelopeMainData Me.ShowInTaskbar = False CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit() Me.LayoutControl1.ResumeLayout(False) + CType(Me.chked_2Faktor.Properties, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.txtTitle.Properties, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.cmbEnvelopeType.Properties, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.cmbCertificationType.Properties, System.ComponentModel.ISupportInitialize).EndInit() @@ -496,6 +520,7 @@ Partial Class frmEnvelopeMainData CType(Me.LayoutControlItem8, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.LayoutControlItem12, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.LayoutControlItem13, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.LayoutControlItem16, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.AdornerUIManager1, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) @@ -540,4 +565,6 @@ Partial Class frmEnvelopeMainData Friend WithEvents LayoutControlItem14 As DevExpress.XtraLayout.LayoutControlItem Friend WithEvents EmptySpaceItem2 As DevExpress.XtraLayout.EmptySpaceItem Friend WithEvents groupAllOptions As DevExpress.XtraLayout.LayoutControlGroup + Friend WithEvents chked_2Faktor As DevExpress.XtraEditors.CheckEdit + Friend WithEvents LayoutControlItem16 As DevExpress.XtraLayout.LayoutControlItem End Class diff --git a/EnvelopeGenerator.Form/frmEnvelopeMainData.resx b/EnvelopeGenerator.Form/frmEnvelopeMainData.resx index 223536c7..f54cf116 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeMainData.resx +++ b/EnvelopeGenerator.Form/frmEnvelopeMainData.resx @@ -118,13 +118,40 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 27, 210 + + + Segoe UI, 10pt, style=Bold + + + 2 Faktor -Authentifizierung aktivieren + + + 537, 21 + + + + 21 + + + chked_2Faktor + + + DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + LayoutControl1 + + + 4 + 204, 45 363, 20 - 4 @@ -138,7 +165,7 @@ LayoutControl1 - 4 + 5 204, 69 @@ -163,7 +190,7 @@ LayoutControl1 - 5 + 6 22, 636 @@ -191,7 +218,7 @@ LayoutControl1 - 6 + 7 92, 636 @@ -218,7 +245,7 @@ LayoutControl1 - 7 + 8 False @@ -245,10 +272,10 @@ LayoutControl1 - 8 + 9 - 27, 277 + 27, 302 Erinnerungen senden @@ -269,13 +296,13 @@ LayoutControl1 - 9 + 10 0 - 207, 299 + 207, 324 Combo @@ -296,13 +323,13 @@ LayoutControl1 - 10 + 11 0 - 207, 323 + 207, 348 Combo @@ -323,13 +350,13 @@ LayoutControl1 - 11 + 12 0 - 207, 392 + 207, 417 Combo @@ -350,13 +377,13 @@ LayoutControl1 - 12 + 13 0 - 207, 416 + 207, 441 Combo @@ -377,7 +404,7 @@ LayoutControl1 - 13 + 14 207, 186 @@ -401,10 +428,10 @@ LayoutControl1 - 14 + 15 - 27, 210 + 27, 235 Verwende Zugriffscode @@ -425,10 +452,10 @@ LayoutControl1 - 15 + 16 - 207, 485 + 207, 510 Combo @@ -449,10 +476,10 @@ LayoutControl1 - 16 + 17 - 207, 509 + 207, 534 Combo @@ -473,7 +500,7 @@ LayoutControl1 - 17 + 18 Fill @@ -727,6 +754,12 @@ DevExpress.XtraLayout.LayoutControlItem, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + LayoutControlItem16 + + + DevExpress.XtraLayout.LayoutControlItem, DevExpress.XtraLayout.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + AdornerUIManager1 diff --git a/EnvelopeGenerator.Form/frmEnvelopeMainData.vb b/EnvelopeGenerator.Form/frmEnvelopeMainData.vb index c2b60e1e..0615fec4 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeMainData.vb +++ b/EnvelopeGenerator.Form/frmEnvelopeMainData.vb @@ -4,7 +4,7 @@ Imports EnvelopeGenerator.Common.Constants Imports System.ComponentModel Public Class frmEnvelopeMainData - + Private FormLoaded As Boolean = False Public Property Envelope As Envelope = New Envelope() Public Property NewEnvelopeMode As Boolean = True @@ -20,70 +20,87 @@ Public Class frmEnvelopeMainData End Sub Private Sub frmEnvelopeMainData_Load(sender As Object, e As EventArgs) Handles MyBase.Load - If NewEnvelopeMode = True Then - Me.Text = Resources.Envelope.New_Envelope - Else - Me.Text = Resources.Envelope.Edit_Envelope - cmbEnvelopeType.ReadOnly = True - End If + Try + If NewEnvelopeMode = True Then + Me.Text = Resources.Envelope.New_Envelope + Else + Me.Text = Resources.Envelope.Edit_Envelope + cmbEnvelopeType.ReadOnly = True + End If - EnvelopeTypeModel = New EnvelopeTypeModel(State) - Dim oTypes = EnvelopeTypeModel.List() + EnvelopeTypeModel = New EnvelopeTypeModel(State) + Dim oTypes = EnvelopeTypeModel.List() - If oTypes.Count = 0 Then - MsgBox("No templates in Database!", MsgBoxStyle.Exclamation, Text) - Close() - Exit Sub - End If + If oTypes.Count = 0 Then + MsgBox("No templates in Database!", MsgBoxStyle.Exclamation, Text) + Close() + Exit Sub + End If + + + ' Dim oTranslatedVerificationTypeList = VerificationTypeList.Select(AddressOf TranslateVerificationTypeType).ToList() + + Dim certificationTypeList = [Enum].GetValues(GetType(CertificationType)).Cast(Of CertificationType)() + Dim oTranslatedCertificationTypeList = certificationTypeList.Select(AddressOf TranslateCertificationType).ToList() + + cmbCertificationType.Properties.Items.AddRange(oTranslatedCertificationTypeList) + + + Dim finalEmailTypeList = [Enum].GetValues(GetType(FinalEmailType)).Cast(Of FinalEmailType)() + Dim oTranslatedFinalEmailTypeList = finalEmailTypeList.Select(AddressOf TranslateFinalEmailType).ToList() - Dim certificationTypeList = [Enum].GetValues(GetType(CertificationType)).Cast(Of CertificationType)() - Dim oTranslatedCertificationTypeList = certificationTypeList.Select(AddressOf TranslateCertificationType).ToList() + cmbEmailToCreator.Properties.Items.AddRange(oTranslatedFinalEmailTypeList) + cmbEmailToReceivers.Properties.Items.AddRange(oTranslatedFinalEmailTypeList) - cmbCertificationType.Properties.Items.AddRange(oTranslatedCertificationTypeList) + cmbEnvelopeType.Properties.Items.AddRange(oTypes.ToList) + cmbLanguage.Properties.Items.AddRange(New List(Of String) From {"de", "en"}) - Dim finalEmailTypeList = [Enum].GetValues(GetType(FinalEmailType)).Cast(Of FinalEmailType)() - Dim oTranslatedFinalEmailTypeList = FinalEmailTypeList.Select(AddressOf TranslateFinalEmailType).ToList() + groupAllOptions.Expanded = False - cmbEmailToCreator.Properties.Items.AddRange(oTranslatedFinalEmailTypeList) - cmbEmailToReceivers.Properties.Items.AddRange(oTranslatedFinalEmailTypeList) + If NewEnvelopeMode = True Then + Dim oType = oTypes.FirstOrDefault() - cmbEnvelopeType.Properties.Items.AddRange(oTypes.ToList) - cmbLanguage.Properties.Items.AddRange(New List(Of String) From {"de", "en"}) + ' This will trigger loading values from the type + cmbEnvelopeType.EditValue = oType + chked_2Faktor.EditValue = DEF_TF_ENABLED - groupAllOptions.Expanded = False + Else + ' This will trigger loading values from the type + cmbEnvelopeType.EditValue = Envelope.EnvelopeType + ' cmbEnvelopeType.SelectedIndex = Convert.ToInt32(Envelope.EnvelopeType) - 1 + ' cmbEnvelopeType.SelectedIndex = Envelope.Type.Id - 1 + ' cmbEnvelopeType.SelectedItem = cmbEnvelopeType.Properties.Items.Cast(Of EnvelopeType).Where(Function(i) i.Id = Envelope.EnvelopeType.Id).SingleOrDefault() - If NewEnvelopeMode = True Then - Dim oType = oTypes.FirstOrDefault() + ' Now we can override these values with the values from envelope + txtTitle.EditValue = Envelope.Title + chkUseAccessCode.EditValue = Envelope.UseAccessCode + chked_2Faktor.EditValue = Envelope.TFA_Enabled + cmbCertificationType.SelectedIndex = Convert.ToInt32(Envelope.CertificationType) - 1 + cmbEmailToCreator.SelectedIndex = Convert.ToInt32(Envelope.FinalEmailToCreator) + cmbEmailToReceivers.SelectedIndex = Convert.ToInt32(Envelope.FinalEmailToReceivers) + End If + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, "Unexpected Error loading form:") + End Try - ' This will trigger loading values from the type - cmbEnvelopeType.EditValue = oType + + End Sub + Private Sub CheckAccessCode() + If Envelope.TFA_Enabled = True Then + chkUseAccessCode.Checked = True + chkUseAccessCode.Enabled = False Else - ' This will trigger loading values from the type - cmbEnvelopeType.EditValue = Envelope.EnvelopeType - ' cmbEnvelopeType.SelectedIndex = Convert.ToInt32(Envelope.EnvelopeType) - 1 - ' cmbEnvelopeType.SelectedIndex = Envelope.Type.Id - 1 - ' cmbEnvelopeType.SelectedItem = cmbEnvelopeType.Properties.Items.Cast(Of EnvelopeType).Where(Function(i) i.Id = Envelope.EnvelopeType.Id).SingleOrDefault() - - ' Now we can override these values with the values from envelope - txtTitle.EditValue = Envelope.Title - chkUseAccessCode.EditValue = Envelope.UseAccessCode - cmbCertificationType.SelectedIndex = Convert.ToInt32(Envelope.CertificationType) - 1 - cmbEmailToCreator.SelectedIndex = Convert.ToInt32(Envelope.FinalEmailToCreator) - cmbEmailToReceivers.SelectedIndex = Convert.ToInt32(Envelope.FinalEmailToReceivers) + chkUseAccessCode.Enabled = True End If - End Sub - Private Function TranslateCertificationType(pType As CertificationType) As String Return Resources.Model.ResourceManager.GetString(pType.ToString()) End Function - Private Function TranslateFinalEmailType(pType As FinalEmailType) As String Return Resources.Model.ResourceManager.GetString(pType.ToString()) End Function Private Sub btOK_Click(sender As Object, e As EventArgs) Handles btOK.Click - Dim Validator As Validator = New Validator(State.LogConfig, AdornerUIManager1) Dim oMissingParams = Validator.Validate(txtTitle) @@ -110,13 +127,16 @@ Public Class frmEnvelopeMainData Envelope.ExpiresWarningWhenDays = spnExpiresWarningDays.EditValue Envelope.FinalEmailToCreator = cmbEmailToCreator.SelectedIndex Envelope.FinalEmailToReceivers = cmbEmailToReceivers.SelectedIndex - + Envelope.TFA_Enabled = chked_2Faktor.EditValue ' ContractType kann zzt nicht über die Oberfläche gesetzt werden Envelope.ContractType = ContractType.Contract End Sub Private Sub frmEnvelopeMainData_Shown(sender As Object, e As EventArgs) Handles Me.Shown SetFormHeight() + CheckAccessCode() + FormLoaded = True + End Sub Private Sub SetFormHeight() @@ -152,4 +172,15 @@ Public Class frmEnvelopeMainData cmbEmailToReceivers.SelectedIndex = oSelectedType.FinalEmailToReceivers End Sub + + Private Sub chked_2Faktor_CheckedChanged(sender As Object, e As EventArgs) Handles chked_2Faktor.CheckedChanged + If FormLoaded = True Then + If chked_2Faktor.Checked = True Then + chkUseAccessCode.Checked = True + chkUseAccessCode.Enabled = False + Else + chkUseAccessCode.Enabled = True + End If + End If + End Sub End Class \ No newline at end of file diff --git a/EnvelopeGenerator.Form/frmMain.Designer.vb b/EnvelopeGenerator.Form/frmMain.Designer.vb index 24411220..665fc715 100644 --- a/EnvelopeGenerator.Form/frmMain.Designer.vb +++ b/EnvelopeGenerator.Form/frmMain.Designer.vb @@ -65,7 +65,7 @@ Partial Class frmMain Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageEnvelopeActions = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() - Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() + Me.RibbonPageFunctions = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar() @@ -85,8 +85,20 @@ Partial Class frmMain Me.GridColumn4 = New DevExpress.XtraGrid.Columns.GridColumn() Me.GridColumn5 = New DevExpress.XtraGrid.Columns.GridColumn() Me.GridColumn7 = New DevExpress.XtraGrid.Columns.GridColumn() + Me.XtraTabPageAdmin = New DevExpress.XtraTab.XtraTabPage() + Me.GridControlData = New DevExpress.XtraGrid.GridControl() + Me.GridViewData = New DevExpress.XtraGrid.Views.Grid.GridView() + Me.PanelControl1 = New DevExpress.XtraEditors.PanelControl() + Me.GroupControl1 = New DevExpress.XtraEditors.GroupControl() + Me.btnEnvelopes_All = New DevExpress.XtraEditors.SimpleButton() + Me.btnEnvelopes_thisYear = New DevExpress.XtraEditors.SimpleButton() + Me.btnEnvelopes_lastmonth = New DevExpress.XtraEditors.SimpleButton() + Me.btnEnvelopes_thismonth = New DevExpress.XtraEditors.SimpleButton() Me.RefreshTimer = New System.Windows.Forms.Timer(Me.components) Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog() + Me.GroupControl2 = New DevExpress.XtraEditors.GroupControl() + Me.SplitContainerControl2 = New DevExpress.XtraEditors.SplitContainerControl() + Me.ChartControl1 = New DevExpress.XtraCharts.ChartControl() CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.SplitContainerControl1.Panel1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SplitContainerControl1.Panel1.SuspendLayout() @@ -105,6 +117,21 @@ Partial Class frmMain CType(Me.ViewReceiversCompleted, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.ViewHistoryCompleted, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.ViewCompleted, System.ComponentModel.ISupportInitialize).BeginInit() + Me.XtraTabPageAdmin.SuspendLayout() + CType(Me.GridControlData, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GridViewData, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.PanelControl1.SuspendLayout() + CType(Me.GroupControl1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.GroupControl1.SuspendLayout() + CType(Me.GroupControl2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.SplitContainerControl2.Panel1, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SplitContainerControl2.Panel1.SuspendLayout() + CType(Me.SplitContainerControl2.Panel2, System.ComponentModel.ISupportInitialize).BeginInit() + Me.SplitContainerControl2.Panel2.SuspendLayout() + Me.SplitContainerControl2.SuspendLayout() + CType(Me.ChartControl1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'SplashScreenManager1 @@ -134,7 +161,7 @@ Partial Class frmMain resources.ApplyResources(Me.XtraTabControlMain, "XtraTabControlMain") Me.XtraTabControlMain.Name = "XtraTabControlMain" Me.XtraTabControlMain.SelectedTabPage = Me.XtraTabPage1 - Me.XtraTabControlMain.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.XtraTabPage1, Me.XtraTabPage2}) + Me.XtraTabControlMain.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.XtraTabPage1, Me.XtraTabPage2, Me.XtraTabPageAdmin}) ' 'XtraTabPage1 ' @@ -426,7 +453,7 @@ Partial Class frmMain ' 'RibbonPage1 ' - Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageEnvelopeActions, Me.RibbonPageGroup1, Me.RibbonPageGroup2}) + Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageEnvelopeActions, Me.RibbonPageGroup1, Me.RibbonPageFunctions}) Me.RibbonPage1.Name = "RibbonPage1" resources.ApplyResources(Me.RibbonPage1, "RibbonPage1") ' @@ -445,15 +472,15 @@ Partial Class frmMain Me.RibbonPageGroup1.Name = "RibbonPageGroup1" resources.ApplyResources(Me.RibbonPageGroup1, "RibbonPageGroup1") ' - 'RibbonPageGroup2 + 'RibbonPageFunctions ' - Me.RibbonPageGroup2.ItemLinks.Add(Me.btnShowDocument) - Me.RibbonPageGroup2.ItemLinks.Add(Me.btnContactReceiver) - Me.RibbonPageGroup2.ItemLinks.Add(Me.bbtnitmInfoMail) - Me.RibbonPageGroup2.ItemLinks.Add(Me.bbtnitmEB) - Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem2) - Me.RibbonPageGroup2.Name = "RibbonPageGroup2" - resources.ApplyResources(Me.RibbonPageGroup2, "RibbonPageGroup2") + Me.RibbonPageFunctions.ItemLinks.Add(Me.btnShowDocument) + Me.RibbonPageFunctions.ItemLinks.Add(Me.btnContactReceiver) + Me.RibbonPageFunctions.ItemLinks.Add(Me.bbtnitmInfoMail) + Me.RibbonPageFunctions.ItemLinks.Add(Me.bbtnitmEB) + Me.RibbonPageFunctions.ItemLinks.Add(Me.BarButtonItem2) + Me.RibbonPageFunctions.Name = "RibbonPageFunctions" + resources.ApplyResources(Me.RibbonPageFunctions, "RibbonPageFunctions") ' 'RibbonPage2 ' @@ -606,6 +633,70 @@ Partial Class frmMain Me.GridColumn7.FieldName = "AddedWhen" Me.GridColumn7.Name = "GridColumn7" ' + 'XtraTabPageAdmin + ' + Me.XtraTabPageAdmin.Controls.Add(Me.SplitContainerControl2) + Me.XtraTabPageAdmin.Controls.Add(Me.PanelControl1) + Me.XtraTabPageAdmin.Name = "XtraTabPageAdmin" + resources.ApplyResources(Me.XtraTabPageAdmin, "XtraTabPageAdmin") + ' + 'GridControlData + ' + resources.ApplyResources(Me.GridControlData, "GridControlData") + Me.GridControlData.MainView = Me.GridViewData + Me.GridControlData.MenuManager = Me.RibbonControl + Me.GridControlData.Name = "GridControlData" + Me.GridControlData.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewData}) + ' + 'GridViewData + ' + Me.GridViewData.GridControl = Me.GridControlData + Me.GridViewData.Name = "GridViewData" + ' + 'PanelControl1 + ' + Me.PanelControl1.Controls.Add(Me.GroupControl2) + Me.PanelControl1.Controls.Add(Me.GroupControl1) + resources.ApplyResources(Me.PanelControl1, "PanelControl1") + Me.PanelControl1.Name = "PanelControl1" + ' + 'GroupControl1 + ' + Me.GroupControl1.Controls.Add(Me.btnEnvelopes_All) + Me.GroupControl1.Controls.Add(Me.btnEnvelopes_thisYear) + Me.GroupControl1.Controls.Add(Me.btnEnvelopes_lastmonth) + Me.GroupControl1.Controls.Add(Me.btnEnvelopes_thismonth) + resources.ApplyResources(Me.GroupControl1, "GroupControl1") + Me.GroupControl1.Name = "GroupControl1" + ' + 'btnEnvelopes_All + ' + Me.btnEnvelopes_All.Appearance.BackColor = System.Drawing.Color.MediumTurquoise + Me.btnEnvelopes_All.Appearance.Options.UseBackColor = True + resources.ApplyResources(Me.btnEnvelopes_All, "btnEnvelopes_All") + Me.btnEnvelopes_All.Name = "btnEnvelopes_All" + ' + 'btnEnvelopes_thisYear + ' + Me.btnEnvelopes_thisYear.Appearance.BackColor = System.Drawing.Color.LightSeaGreen + Me.btnEnvelopes_thisYear.Appearance.Options.UseBackColor = True + resources.ApplyResources(Me.btnEnvelopes_thisYear, "btnEnvelopes_thisYear") + Me.btnEnvelopes_thisYear.Name = "btnEnvelopes_thisYear" + ' + 'btnEnvelopes_lastmonth + ' + Me.btnEnvelopes_lastmonth.Appearance.BackColor = System.Drawing.Color.Turquoise + Me.btnEnvelopes_lastmonth.Appearance.Options.UseBackColor = True + resources.ApplyResources(Me.btnEnvelopes_lastmonth, "btnEnvelopes_lastmonth") + Me.btnEnvelopes_lastmonth.Name = "btnEnvelopes_lastmonth" + ' + 'btnEnvelopes_thismonth + ' + Me.btnEnvelopes_thismonth.Appearance.BackColor = System.Drawing.Color.Aquamarine + Me.btnEnvelopes_thismonth.Appearance.Options.UseBackColor = True + resources.ApplyResources(Me.btnEnvelopes_thismonth, "btnEnvelopes_thismonth") + Me.btnEnvelopes_thismonth.Name = "btnEnvelopes_thismonth" + ' 'RefreshTimer ' Me.RefreshTimer.Interval = 120000 @@ -614,6 +705,33 @@ Partial Class frmMain ' resources.ApplyResources(Me.SaveFileDialog1, "SaveFileDialog1") ' + 'GroupControl2 + ' + resources.ApplyResources(Me.GroupControl2, "GroupControl2") + Me.GroupControl2.Name = "GroupControl2" + ' + 'SplitContainerControl2 + ' + resources.ApplyResources(Me.SplitContainerControl2, "SplitContainerControl2") + Me.SplitContainerControl2.Name = "SplitContainerControl2" + ' + 'SplitContainerControl2.Panel1 + ' + Me.SplitContainerControl2.Panel1.Controls.Add(Me.GridControlData) + resources.ApplyResources(Me.SplitContainerControl2.Panel1, "SplitContainerControl2.Panel1") + ' + 'SplitContainerControl2.Panel2 + ' + Me.SplitContainerControl2.Panel2.Controls.Add(Me.ChartControl1) + resources.ApplyResources(Me.SplitContainerControl2.Panel2, "SplitContainerControl2.Panel2") + Me.SplitContainerControl2.SplitterPosition = 501 + ' + 'ChartControl1 + ' + resources.ApplyResources(Me.ChartControl1, "ChartControl1") + Me.ChartControl1.Name = "ChartControl1" + Me.ChartControl1.SeriesSerializable = New DevExpress.XtraCharts.Series(-1) {} + ' 'frmMain ' resources.ApplyResources(Me, "$this") @@ -643,6 +761,21 @@ Partial Class frmMain CType(Me.ViewReceiversCompleted, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.ViewHistoryCompleted, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.ViewCompleted, System.ComponentModel.ISupportInitialize).EndInit() + Me.XtraTabPageAdmin.ResumeLayout(False) + CType(Me.GridControlData, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GridViewData, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).EndInit() + Me.PanelControl1.ResumeLayout(False) + CType(Me.GroupControl1, System.ComponentModel.ISupportInitialize).EndInit() + Me.GroupControl1.ResumeLayout(False) + CType(Me.GroupControl2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.SplitContainerControl2.Panel1, System.ComponentModel.ISupportInitialize).EndInit() + Me.SplitContainerControl2.Panel1.ResumeLayout(False) + CType(Me.SplitContainerControl2.Panel2, System.ComponentModel.ISupportInitialize).EndInit() + Me.SplitContainerControl2.Panel2.ResumeLayout(False) + CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).EndInit() + Me.SplitContainerControl2.ResumeLayout(False) + CType(Me.ChartControl1, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) Me.PerformLayout() @@ -692,7 +825,7 @@ Partial Class frmMain Friend WithEvents txtRefreshLabel As DevExpress.XtraBars.BarStaticItem Friend WithEvents btnShowDocument As DevExpress.XtraBars.BarButtonItem Friend WithEvents btnContactReceiver As DevExpress.XtraBars.BarButtonItem - Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup + Friend WithEvents RibbonPageFunctions As DevExpress.XtraBars.Ribbon.RibbonPageGroup Friend WithEvents colEnvelopeId As DevExpress.XtraGrid.Columns.GridColumn Friend WithEvents ViewHistoryCompleted As DevExpress.XtraGrid.Views.Grid.GridView Friend WithEvents ColHistoryStatusCompleted As DevExpress.XtraGrid.Columns.GridColumn @@ -709,4 +842,16 @@ Partial Class frmMain Friend WithEvents bbtnitmEB As DevExpress.XtraBars.BarButtonItem Friend WithEvents bbtnitmInfoMail As DevExpress.XtraBars.BarButtonItem Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem + Friend WithEvents XtraTabPageAdmin As DevExpress.XtraTab.XtraTabPage + Friend WithEvents PanelControl1 As DevExpress.XtraEditors.PanelControl + Friend WithEvents GroupControl1 As DevExpress.XtraEditors.GroupControl + Friend WithEvents btnEnvelopes_thisYear As DevExpress.XtraEditors.SimpleButton + Friend WithEvents btnEnvelopes_lastmonth As DevExpress.XtraEditors.SimpleButton + Friend WithEvents btnEnvelopes_thismonth As DevExpress.XtraEditors.SimpleButton + Friend WithEvents btnEnvelopes_All As DevExpress.XtraEditors.SimpleButton + Friend WithEvents GridControlData As DevExpress.XtraGrid.GridControl + Friend WithEvents GridViewData As DevExpress.XtraGrid.Views.Grid.GridView + Friend WithEvents GroupControl2 As DevExpress.XtraEditors.GroupControl + Friend WithEvents SplitContainerControl2 As DevExpress.XtraEditors.SplitContainerControl + Friend WithEvents ChartControl1 As DevExpress.XtraCharts.ChartControl End Class diff --git a/EnvelopeGenerator.Form/frmMain.resx b/EnvelopeGenerator.Form/frmMain.resx index c6a77db3..5baff6eb 100644 --- a/EnvelopeGenerator.Form/frmMain.resx +++ b/EnvelopeGenerator.Form/frmMain.resx @@ -764,7 +764,7 @@ Daten - + Funktionen @@ -1025,6 +1025,291 @@ 1 + + Fill + + + 0, 79 + + + Fill + + + 0, 0 + + + 501, 388 + + + 1 + + + GridControlData + + + DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + SplitContainerControl2.Panel1 + + + 0 + + + Panel1 + + + SplitContainerControl2.Panel1 + + + DevExpress.XtraEditors.SplitGroupPanel, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + SplitContainerControl2 + + + 0 + + + 17, 6 + + + 300, 200 + + + 0 + + + ChartControl1 + + + DevExpress.XtraCharts.ChartControl, DevExpress.XtraCharts.v21.2.UI, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + SplitContainerControl2.Panel2 + + + 0 + + + Panel2 + + + SplitContainerControl2.Panel2 + + + DevExpress.XtraEditors.SplitGroupPanel, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + SplitContainerControl2 + + + 1 + + + 1088, 388 + + + 2 + + + SplitContainerControl2 + + + DevExpress.XtraEditors.SplitContainerControl, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + XtraTabPageAdmin + + + 0 + + + 496, 5 + + + 427, 68 + + + 2 + + + Diagramme + + + GroupControl2 + + + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + PanelControl1 + + + 0 + + + 339, 26 + + + 104, 35 + + + 3 + + + Insgesamt + + + btnEnvelopes_All + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + GroupControl1 + + + 0 + + + 229, 26 + + + 104, 35 + + + 2 + + + Dieses Jahr + + + btnEnvelopes_thisYear + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + GroupControl1 + + + 1 + + + 119, 26 + + + 104, 35 + + + 1 + + + Letzten Monat + + + btnEnvelopes_lastmonth + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + GroupControl1 + + + 2 + + + 9, 26 + + + 104, 35 + + + 0 + + + Diesen Monat + + + btnEnvelopes_thismonth + + + DevExpress.XtraEditors.SimpleButton, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + GroupControl1 + + + 3 + + + 11, 5 + + + 453, 68 + + + 1 + + + Umschläge pro User + + + GroupControl1 + + + DevExpress.XtraEditors.GroupControl, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + PanelControl1 + + + 1 + + + Top + + + 0, 0 + + + 1088, 79 + + + 0 + + + PanelControl1 + + + DevExpress.XtraEditors.PanelControl, DevExpress.Utils.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + XtraTabPageAdmin + + + 1 + + + 1088, 467 + + + Auswertungen (Admin) + + + XtraTabPageAdmin + + + DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + XtraTabControlMain + + + 2 + XtraTabControlMain @@ -1098,7 +1383,7 @@ True - 263 + 108 6, 13 @@ -1108,83 +1393,83 @@ - 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 - Bv/c01f/A4y2+8cc2/IPAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL + DQAACw0B7QfALAAAEYBJREFUeF7t3b+uHEkVx/F9BD8ED7DmBfAD8ACEDsjZnMQJuXMSJxsRICJEgGRB + QgJaCQmJCAdEJGxCQnKpnz1t+rbPzPR016k6p+obfKR1773Tf6brdNU5VX2/enp6CunbH7x8Ubwq3hTv + ivfFh+IJCEz3qO5V3bO6d3UPv7Du8QjMjT3oIhWvC104GjpGo3ta97bu8TABwdzYii5E8U3xXWFdNGBU + uue7BwNzo7dy0uoWKRpaFwaYjdrCK6uteDM3eiknqYhH9x6wqW28ttqOF3NjbTqpy8lZJw3guWaBwNxY + SzmJrwtlRK2TBHCb2s7XVtuqxdx4VjloJffeXk4CwDlqSy7JQnPjGeVAleCjuw/UpTZVPVFobjyqHKAm + PlgHD6CON1bbO8rc+KhyUOryM9YH2lBbqzIkMDc+ohyIEn10+YG21OZOJwjNjXvpAIrvLwcEoC21vVNB + wNy4h3Z8OQDrwAC0cSoImBvv0Q4vO7YOCEBbh4OAufEW7eiyQ+tAAPRxKAiYG6/RDi47sg4AQF8PBwFz + o6V8sEp9ZPuB2NRGd5cIzY2W8qHU+YEc3ltt2GJu3CofyAw/IJddMwbNjWvlgzS339oBgNjurh0wNy7K + BzDuB/K6mw8wNy7KL7OkF8jtrdW2F+ZGKb+okp/1gQByuVoaNDdK+SWy/sAYrlYFzI3lF/QOP+uDAORk + vmPwiw1SfpjEHzCWD1Zb/2JD+UGe/sCYvugFPPuHlB/i6Q+M6YtewLN/lB9g0g8wtmeTg7YBgD/XBYzt + 3brNrxu/Zv1ZvwBgLJ9nB64DAMk/YA6fk4HrAMCf6Abm8N2zAFA20P0H5vJxGLAEALr/wFw+DgOWAED2 + H5jLx2rAEgCY/APM5eOkIMb/wLxeKAAw+w+Y0ysFAF74CczpDQlAYF7vFAB48w8wp/cKAFQAgvjNj14+ + /f4nY9M5WueOLj4oAFj/Aw396ocvn/76i5dPT3+bg85V52xdC7RFAOhMT8X//NFuKCPTOevcrWuCdggA + negJ+I9f2o1jJroG9Ab6IQB08Iefvnz675/tBjEjXQtdE+tawRcBoCElwP71a7sR4NO1IUnYFgGgkb/8 + nKf+HrpGulbWNUR9BABnv/3xy6d//86+2XGdrpmunXVNUQ8BwMlspT0vlAx9EQAczFra80LJ0A8BoCJK + e74oGdZHAKiE0l4blAzrIgCcRGmvD0qGdRAATqC01xclw/MIAAdQ2ouFkuFxBIAHUdqLS9+N9Z3hOgLA + TpT2cqBk+BgCwB0qO/39rX2zIS59Z5QM7yMA3EBpLzdKhvcRAAwqL/3zW/umQj76LikZ2ggAG5T2xkTJ + 0EYAuFAZKfKEHh1bJtY5RKBjo2T4fwSAInJpL2uNO/pcCUqGn0wdACKX9kbpskYeUlEynDQARC/tqZs6 + UtIq+nqJmUuG0wWAyKU9HdfIZSuufTzTBIDopb1Z1rrrHCO/M2G2kuEUAYBxaDzkX2IYOgBEL+3N/r47 + nXvkCswMJcNhA0DkG0t0c1nHPaPIQVpGLhkOFwAidy23qEXHD9SLUYdqwwQAdSczrtqbeVaazt26JpGN + VjIcIgBELi/doyfLjHkAnXOWntrWSCXD1AEgemlvL52DdX4jG+V7y14yTBsAIpf2jvjTz+zzHJHO1boG + GWUvGaYLANGnlR6lG2mGCSg6x5EC90L3ZMbvL1UAyJIxPkqr56zzHsnob1POVtlJEQCiLy2taeTS4OgB + fJFpCXeKAKCulXWhRzVivVnnZJ3rqLIMB9IMAUbIGu81Wmkwc8nviExVnTQBQHVX62KPaqTS4EzBWzLN + EUiVBOyZPV6mgracvTZCabBlyU/fTe+p4LpHresQVaoA0Guq73b6Z6tkVvbSYMuS3zp5qu+q572yvgbR + pQoArZOBt7K5reYiZC4NtqrcXFtZ2aN6lC1gpwoA0uIL1VPrXjmu19Mti0i9JB1Li+8qY7BOFwC8x5SP + zOhqmZjMVBpsWfLbm3DTd+rda8uYs0kXADS+84rmRyJ4q/fbZSkNtiz56dpbx3CLVw9S92SG72crXQAQ + z0b36JfY8obPUBpsVfI7EhD189Zn1XAkGEWQMgB4djGPrOyiNPhJ65KfdQy36Lu1PquGTEO0tZQBQLye + uvpca3/3eN5ca+pqHrn5vemYWiTa5Ojy22j3TARpA4BnlvloA5u5NNiiOiPXSn73ePbSMlZpFmkDgLK6 + 1pdRw9HxnMaYrZ6CkSactJp0cybR5pk32ls1iihtABCvhNOZG2220mDEkt+WZ2DOvmYjdQDwTDqdSbZl + eCLWkKXHE/U+iSB1ABCvG/DoWFPUMFqNiXs+gVqV/HQtzwQ6r9yM7j1rf5mkDwCeT9szYzvPpNNWj5dS + tqp6yJmqh2euKFIe5qj0AcCzoZ39gkctDWpfrbr+Z4Ob5wOi5TX3kj4AiFd3u0Z9d8TSYPSS35pX7b/l + 9fY0RADwTPKcfbtLlkTZXp5P1DVds7MJTs+KTPbk32KIAKAbxfqSaqiRZBulNJih5LfmmaQ8G5yiGCIA + SKQFQpZMT06LPjNTT8bzoZB14Y9lmADg+XSqkWXXDdlq7OxRGsxS8lt4JmAjTMCqZZgAINEXe3hWLLZq + BK1Fq2qG1MqsR78XohgqAERcILTVqjGpu17jmPUZrbr+tYKWZ6DNvPDHMlQAiLhAyJKpNJip5Ldg4c9+ + QwUA8Rqr1kyuZUmoZUxcel5bj9xKb8MFgCwLP1qWBvV0PcL6LA81Sn6LLN9/FMMFAPF6AqhRWPs7qtUT + NrIaJb81r8Cle8raX3ZDBgDPhlV7DNhqjB1RjRzFGgt/HjdkAMiUBW6ZZY9E51yjSrGWoQoUzZABQLye + rB514JZ19ihqzlNYeNX+a/dUIhk2AHgmg2omrRatZtpF4JFN90yqjpj8WwwbAFQOsr7MGjzmgrcsDfak + c6xV8luLvhYkqmEDgGS7KVqutuvFYx59tmAfydABwLNb6DGGlZFLg16ZdM8cisdwL5KhA4BkTAyNWBrM + eL1GW/hjGT4AZCwNjVYa9Cj5LfS51j5rGG3hj2X4AJBlgdCaxrRePZcedC5eiTTPPM9oC38swwcAyTY9 + dMSSoNdCGq+eUu1p31FNEQAyLRDxHLL0VrtLnel7jWqKACAZnhSeN3QUNRsWC3/OmyYARB8rjpb4u0bn + WCMhmDG3E9E0ASBytni0pN89NZKCGas7EU0TACRqvXjEuv89Z+cFeAVMz/kKEU0VACLOGPMcmkR3tKud + cYZnVFMFgGhzxmdI+t1zJCnoGTS95itENVUAkCg3zwwLf/Z6ZIFQtCCe3XQBIEL3URnsGTL+e+la7K2k + sPCnrukCgPRMIOkJ1irpp/0oW35Gy2Pd04PyOp6zidyspgwAurGtm6CGeyUkzyHI2t4GdU/LgHWvCx65 + lJvVlAGg1yQSz8CzVmuyzUKf1WrIcqshegbPGpO5MpoyAEjraaSeuYctj7FshOP3CkKzLPyxTBsAPEtw + 29JWyyeoZx3bMwG3ZvVgWn5fM5k2AIhXo1wvfdUY2ivpuNWijNUqh6Frts5heC2RvtZjm8XUAaDFmNJr + qLFVK+l3T8uk4NI175WzmcHUAcA7q9zqaamnWIvGv9C+Wg1pdA17Vm1GN3UAEK+nWasGIj1uYs/gueV1 + LfXdW+c2k+kDQKvElpeeCSzPxFwLngnTLKYPAOrOWjdHBhHGr62GOR5aDpuimj4ASMaXcEaqXbdKdNbk + 9ZLSbAgARctJLjVsS2S96VhalTpr8ZgslREB4CLLDayEWMTMtY6pZeLzDH3X1jnMiABwkeVv8kV+cmXp + SXn9jcKMCAAXnpNNasmwYq3VgqczZl34YyEArEROZmWasRa5MhApeRoBAWAlal271TTfWnSsraYLP2rm + hT8WAsCKbtxoiSwdT8Yuq4454rXMFEhbIABsROu+PvLCzGiivfg00zCqFQLARss57veM0F2NNKyKWD7t + jQBgiDAnYKSnVYReFbV/GwHA0HuB0Iir1HonBVn4YyMAGJQosm6iFvSkGjFRpXPq2bMi+WcjAFzRY4GQ + stQjj1N7TRdm4c91BIArekxrnaFG3SMpyMKf6wgAN7TssmaY5ltLy+nCJP9uIwDc0GqB0Ixd1FZDLBb+ + 3EYAuKHFAqFRk373tEoKsvDnNgLAHS0WCM04Q63F3AAW/txHALijVdIq24Kfo3SOreYEzJBUPYsAcIdu + 2FalK8qA9Wg/Mw6tHkUA2KHlVFbduCM+uXROrRq/zDisOoIAsIOeXNZN5mmk7HWP162N3JOqiQCwU49p + rEpiZe7G6th7vGWJ2v9+BICdei0Q0s2c8WmmY+4RNIWFP/sRAHbS08y62VrQ2DnTdFYda8vx/hbJv/0I + AA/osUBojbcC38fCn8cQAB4Q4b33usEjPuF0TL0DpLDw5zEEgAf17NouNJEmUl5Ax9L7hR+i78Y6PlxH + AHiQbvYIQUDHEOGFoTqGKNcjY7K0NwLAAeruRnjiSc+Md+9Xpy1mmUbtgQBwQoSXXYqOo2UD0L4inbt1 + jNiHAHBSjzfcWPQUbLH0VfuI0vthsc95BIAKIuUFPMfBs5znTAgAlUTKC3g8GSP1dBjv10MAqGzEsTHj + /XERAByM8rQcvVcDAoCb7ONlxvtzIAA4ivIEVSN65Amqn43Q+Bnv+yMANBBlDL3nJSM9Xt5hYbzfBgGg + kSh5gWsvGdG2Hi/vsDDeb4cA0FCUcfX2JSP6714v71hjvN8eAaCxSHkBLZ3t/fKOBeP9PggAnUTJC0TA + eL8fAkBHUfICPTHe74sA0FmUvEBrjPdjIAAEECUv0Arj/TgIAIHMkBdgvB8LASCYkfMCjPfjIQAENFpe + gPF+XASAoEbJCzDej40AEFzmvADj/fgIAAlkzAsw3s+BAJBElrwA4/1cCACJRM8LMN7PhwCQUMS8AOP9 + nAgASUXKCzDez4sAkFjvvADj/fwIAMn1ygsw3h8DAWAQLfMCjPfHQQAYSIu8AOP9sRAABuOVF2C8PyYC + wIBq5wUY74+LADCwGnkBxvtjIwAM7kxegPH++AgAE3g0L8B4fx4EgEnszQsw3p8LAWAyt/ICjPfnQwCY + kJUXYLw/JwLApJa8AOP9uSkAfNhuxBw01me8P7UPCgDvNxsBzOG9AsC7zUYAc3inAPBmsxHAHN4oALza + bAQwh1cKAC82GwHM4cVXT09UAoAJfVDbXwIAiUBgLu/WAeD15n8CGNvrdQAgDwDM5cXnAHAJAt9tfgDA + mL5b2v06AHyz+SEAY/rY/d8GAIYBwBw+dv+fBYBLEKAaAIztY/Z/sQ0AzAoExvZq3eafBQApP8CkIGBM + Hyf/rD37h5QfYk4AMKbPyb/Fs38syg/SCwDG8sXTX77YIOWH6QUAY/ni6S9fbFiUX+BNQcAY3lttXMyN + Un7p682HAMjpa6uNi7lxUX7x7eaDAOTy1mrbC3PjovyyZgeSEARyUtv9POvPYm5cKx/A5CAgp2eTfizm + xq3yQbw4FMjljdWWt8yNlvKBVAWAHK5m/bfMjZbyoeQDgPjujvvXzI3XlA9WafD7y44AxKK2ebXkZzE3 + 3qIdXHZkHQCAPh5u/GJuvEc7uuzQOhAAbR1q/GJu3EM7vOzYOiAAbRxu/GJu3Es7vhyAdWAAfJ1q/GJu + fIQOoKA6ALSlNneq8Yu58VHlQFQiZJ4A0Iba2u5S3y3mxqPKQTFjEPC1a4bfXubGM8oBau0AQwKgLrWp + u3P7H2VuPKscqIYELCUG6lBbqtLl3zI31lIOWglCcgPAMWo7pxN9t5gbaysnoXcMMiwA9lFbMd/hV5u5 + 0YtO6nJy1kkDs2vW8BfmRm/lJJUo5M+QAZ+oLVRP8O1hbmylnLSSheoV8KfJMRvd87r3XZJ7e5kbe9CF + uFwQRUOGCRiN7mnd290b/Zq5MQJdpEJDBU0u0oVTRpTAgOh0j+pe1T2re1f3cJgG/9zTV/8DjLb7xxzb + 8g8AAAAASUVORK5CYII= @@ -1403,10 +1688,10 @@ DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - RibbonPageGroup2 + + RibbonPageFunctions - + DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a @@ -1505,6 +1790,12 @@ DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + GridViewData + + + DevExpress.XtraGrid.Views.Grid.GridView, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + RefreshTimer diff --git a/EnvelopeGenerator.Form/frmMain.vb b/EnvelopeGenerator.Form/frmMain.vb index b04a7e74..b6e8f2ac 100644 --- a/EnvelopeGenerator.Form/frmMain.vb +++ b/EnvelopeGenerator.Form/frmMain.vb @@ -40,17 +40,22 @@ Public Class frmMain TempFiles = New TempFiles(LogConfig) TempFiles.Create() - + MyTempFiles = TempFiles RefreshHelper = New RefreshHelper(ViewEnvelopes, "Id") Controller = New EnvelopeListController(State) + Try Me.LookAndFeel.UseDefaultLookAndFeel = False LookAndFeel.SetSkinStyle(SkinStyle.Office2019White, SkinSvgPalette.DefaultSkin) Catch ex As Exception End Try - + If MYUSER.IsAdmin Then + XtraTabControlMain.TabPages(2).PageVisible = True + Else + XtraTabControlMain.TabPages(2).PageVisible = False + End If LoadEnvelopeData() End Sub @@ -190,6 +195,8 @@ Public Class frmMain End Sub Private Sub XtraTabControl1_SelectedPageChanged(sender As Object, e As DevExpress.XtraTab.TabPageChangedEventArgs) Handles XtraTabControlMain.SelectedPageChanged + RibbonPageFunctions.Enabled = True + RibbonPageEnvelopeActions.Enabled = True Select Case XtraTabControlMain.SelectedTabPageIndex Case 1 btnEditEnvelope.Enabled = False @@ -206,6 +213,10 @@ Public Class frmMain bbtnitmEB.Enabled = False LoadEnvelopeData() txtEnvelopeIdLabel.Caption = "No Envelope selected" + + Case 2 + RibbonPageFunctions.Enabled = False + RibbonPageEnvelopeActions.Enabled = False End Select End Sub @@ -565,7 +576,8 @@ Public Class frmMain For Each oReceiver As EnvelopeReceiver In Receivers If oReceiver.Email = selReceiver.Email Then If oController.ActionService.ResendReceiver(oEnvelope, oReceiver) = True Then - MsgBox(Resources.Envelope.Invitation_successfully_resend, MsgBoxStyle.Information, Text) + Dim oMsg = Resources.Envelope.Invitation_successfully_resend.Replace("@Mail", oReceiver.Email) + MsgBox(oMsg, MsgBoxStyle.Information, Text) End If End If @@ -583,4 +595,49 @@ Public Class frmMain txtEnvelopeIdLabel.Caption = String.Format(txtEnvelopeIdLabel.Tag, oEnvelope.Id) End Sub + + Private Sub btnEnvelopes_thismonth_Click(sender As Object, e As EventArgs) Handles btnEnvelopes_thismonth.Click + If SQL_REP_ENV_USER_TM <> String.Empty Then + Result_Execute(SQL_REP_ENV_USER_TM) + Else + GridControlData.DataSource = Nothing + End If + End Sub + + Private Sub btnEnvelopes_lastmonth_Click(sender As Object, e As EventArgs) Handles btnEnvelopes_lastmonth.Click + If SQL_REP_ENV_USER_LM <> String.Empty Then + Result_Execute(SQL_REP_ENV_USER_LM) + Else + GridControlData.DataSource = Nothing + End If + End Sub + + Private Sub btnEnvelopes_thisYear_Click(sender As Object, e As EventArgs) Handles btnEnvelopes_thisYear.Click + If SQL_REP_ENV_USER_Y <> String.Empty Then + Result_Execute(SQL_REP_ENV_USER_Y) + Else + GridControlData.DataSource = Nothing + End If + End Sub + + Private Sub btnEnvelopes_All_Click(sender As Object, e As EventArgs) Handles btnEnvelopes_All.Click + If SQL_REP_ENV_USER_ALL <> String.Empty Then + Result_Execute(SQL_REP_ENV_USER_ALL) + Else + GridControlData.DataSource = Nothing + End If + End Sub + Private Sub Result_Execute(mySQL As String) + Try + Dim oDT As DataTable = DB_DD_ECM.GetDatatable(mySQL) + If Not IsNothing(oDT) Then + + GridControlData.DataSource = oDT + Else + GridControlData.DataSource = Nothing + End If + Catch ex As Exception + + End Try + End Sub End Class \ No newline at end of file diff --git a/EnvelopeGenerator.Form/frmSplashScreen.vb b/EnvelopeGenerator.Form/frmSplashScreen.vb index 014be8f5..b5a0c9ca 100644 --- a/EnvelopeGenerator.Form/frmSplashScreen.vb +++ b/EnvelopeGenerator.Form/frmSplashScreen.vb @@ -77,12 +77,30 @@ Public Class frmSplashScreen Worker.ReportProgress(40, "Initializing Configuration") Thread.Sleep(300) + Dim oSQl = "SELECT * FROM TBDD_SQL_COMMANDS" + Dim oDT = oState.Database.GetDatatable(oSQl) + For Each oROW As DataRow In oDT.Rows + If oROW.Item("TITLE") = "REPORT ENV USER THIS_MONTH" Then + SQL_REP_ENV_USER_TM = oROW.Item("SQL_COMMAND") + ElseIf oROW.Item("TITLE") = "REPORT ENV USER LAST_MONTH" Then + SQL_REP_ENV_USER_LM = oROW.Item("SQL_COMMAND") + ElseIf oROW.Item("TITLE") = "REPORT ENV USER YEAR" Then + SQL_REP_ENV_USER_Y = oROW.Item("SQL_COMMAND") + ElseIf oROW.Item("TITLE") = "REPORT ENV USER ALL" Then + SQL_REP_ENV_USER_ALL = oROW.Item("SQL_COMMAND") + End If + + Next + oSQl = "SELECT * FROM TBSIG_CHART" + DT_CHARTS = oState.Database.GetDatatable(oSQl) + Dim ConfigModel = New ConfigModel(oState) oState.DbConfig = ConfigModel.LoadConfiguration() + DEF_TF_ENABLED = oState.DbConfig.Default_TFA_Enabled ' DOCUMENT_PATH_MOVE_AFTSEND = oState.DbConfig.DOCUMENT_PATH_MOVE_AFTSEND Worker.ReportProgress(60, "Initializing User") Dim oKey = oState.Database.GetScalarValue("SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE' and ACTIVE = 1") - Thread.Sleep(300) + Thread.Sleep(300) If oKey.ToString <> String.Empty Then MS_GDPICTUREKEY = oKey End If @@ -98,6 +116,7 @@ Public Class frmSplashScreen If oUser IsNot Nothing Then oUserModel.CheckUserLogin(oUser) End If + MYUSER = oUser Worker.ReportProgress(100, "Starting Application") Thread.Sleep(300) diff --git a/EnvelopeGenerator.sln b/EnvelopeGenerator.sln index e5051c8f..93987baf 100644 --- a/EnvelopeGenerator.sln +++ b/EnvelopeGenerator.sln @@ -33,8 +33,8 @@ Global {089D5634-FB6B-42D0-B912-7AA7457044E7}.Debug|Any CPU.Build.0 = Debug|Any CPU {089D5634-FB6B-42D0-B912-7AA7457044E7}.Release|Any CPU.ActiveCfg = Debug|Any CPU {089D5634-FB6B-42D0-B912-7AA7457044E7}.Release|Any CPU.Build.0 = Debug|Any CPU - {6D56C01F-D6CB-4D8A-BD3D-4FD34326998C}.Debug|Any CPU.ActiveCfg = Release|Any CPU - {6D56C01F-D6CB-4D8A-BD3D-4FD34326998C}.Debug|Any CPU.Build.0 = Release|Any CPU + {6D56C01F-D6CB-4D8A-BD3D-4FD34326998C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6D56C01F-D6CB-4D8A-BD3D-4FD34326998C}.Debug|Any CPU.Build.0 = Debug|Any CPU {6D56C01F-D6CB-4D8A-BD3D-4FD34326998C}.Release|Any CPU.ActiveCfg = Debug|Any CPU {6D56C01F-D6CB-4D8A-BD3D-4FD34326998C}.Release|Any CPU.Build.0 = Debug|Any CPU {6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU