From 5a8f2d298fbd1ba271b4c94482ffdce7c6b93bba Mon Sep 17 00:00:00 2001 From: Developer01 Date: Thu, 8 May 2025 14:37:34 +0200 Subject: [PATCH] MS Service Invitations API,Form 2Faktor Properties --- .../APIBackendJobs/SendInvitationMailJob.vb | 8 +- .../FinalizeDocument/FinalizeDocumentJob.vb | 7 +- .../Models/EnvelopeModel.vb | 2 +- .../Strings/Model.Designer.vb | 27 ++-- .../Strings/Model.en.resx | 6 + EnvelopeGenerator.Common/Strings/Model.resx | 6 + .../EnvelopeGenerator.Form.vbproj | 9 ++ .../frm2Factor_Properties.Designer.vb | 121 +++++++++++++++ .../frm2Factor_Properties.resx | 141 ++++++++++++++++++ .../frm2Factor_Properties.vb | 43 ++++++ EnvelopeGenerator.Form/frmEnvelopeEditor.resx | 2 +- EnvelopeGenerator.Form/frmEnvelopeEditor.vb | 2 + EnvelopeGenerator.Form/frmMain.Designer.vb | 51 ++++++- EnvelopeGenerator.Form/frmMain.resx | 133 +++++++++++++++++ EnvelopeGenerator.Form/frmMain.vb | 61 ++++++++ EnvelopeGenerator.Form/frmSplashScreen.resx | 2 +- .../My Project/AssemblyInfo.vb | 4 +- EnvelopeGenerator.Service/Service.vb | 3 + 18 files changed, 605 insertions(+), 23 deletions(-) create mode 100644 EnvelopeGenerator.Form/frm2Factor_Properties.Designer.vb create mode 100644 EnvelopeGenerator.Form/frm2Factor_Properties.resx create mode 100644 EnvelopeGenerator.Form/frm2Factor_Properties.vb diff --git a/EnvelopeGenerator.Common/Jobs/APIBackendJobs/SendInvitationMailJob.vb b/EnvelopeGenerator.Common/Jobs/APIBackendJobs/SendInvitationMailJob.vb index f61c54c0..8ce881a9 100644 --- a/EnvelopeGenerator.Common/Jobs/APIBackendJobs/SendInvitationMailJob.vb +++ b/EnvelopeGenerator.Common/Jobs/APIBackendJobs/SendInvitationMailJob.vb @@ -44,7 +44,7 @@ Namespace Jobs myTempFiles = New TempFiles(LogConfig) myTempFiles.Create() Dim JobId = pContext.JobDetail.Key - Logger.Info("SendInvMail - Starting job {0}", JobId) + Logger.Debug("SendInvMail - Starting job {0}", JobId) Try Logger.Debug("SendInvMail - Loading Database..") @@ -81,7 +81,6 @@ Namespace Jobs For Each oId In oEnvelopeIds Logger.Info("SendInvMail - Gathering Info for Envelope [{0}] ({1}/{2})", oId, oCurrent, oTotal) - Logger.Debug("SendInvMail - Loading Envelope..") Try Dim oEnvelope = EnvelopeModel.GetById(oId) If oEnvelope Is Nothing Then @@ -98,10 +97,11 @@ Namespace Jobs End If Logger.Info("SendInvMail - Sending InvitationMails for Envelope [{0}]", oId) If ActionService.SendEnvelope(oEnvelope) = False Then + Logger.Warn("SendInvMail - Could not send the InvitationMails for Envelope [{0}]", oId) Throw New ArgumentNullException("EnvelopeData") End If Catch ex As Exception - Logger.Warn(ex, $"Unhandled exception while working envelope [{oId}]") + Logger.Warn(ex, $"SendInvMail - Unhandled exception while working envelope [{oId}]") End Try oCurrent += 1 @@ -114,7 +114,7 @@ Namespace Jobs Logger.Warn("SendInvMail job failed!") Logger.Error(ex) Finally - Logger.Info("SendInvMail execution for [{0}] ended", JobId) + Logger.Debug("SendInvMail execution for [{0}] ended", JobId) End Try Return Task.FromResult(True) diff --git a/EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentJob.vb b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentJob.vb index 94ac0d34..a0e02d60 100644 --- a/EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentJob.vb +++ b/EnvelopeGenerator.Common/Jobs/FinalizeDocument/FinalizeDocumentJob.vb @@ -53,7 +53,7 @@ Namespace Jobs myTempFiles = New TempFiles(LogConfig) myTempFiles.Create() Dim JobId = pContext.JobDetail.Key - Logger.Info("Starting job {0}", JobId) + Logger.Debug("Starting job {0}", JobId) Try Logger.Debug("Loading GdViewer..") @@ -108,7 +108,6 @@ Namespace Jobs For Each oId In oEnvelopeIds Logger.Info("Finalizing Envelope [{0}] ({1}/{2})", oId, oCurrent, oTotal) - Logger.Debug("Loading Envelope..") Try Dim oEnvelope = EnvelopeModel.GetById(oId) If oEnvelope Is Nothing Then @@ -290,11 +289,15 @@ Namespace Jobs If oMailToCreator <> FinalEmailType.No Then Logger.Debug("Sending email to creator ...") SendFinalEmailToCreator(pEnvelope) ', pAttachment + Else + Logger.Warn($"No SendFinalEmailToCreator - oMailToCreator [{oMailToCreator}] <> [{FinalEmailType.No}] ") End If If oMailToReceivers <> FinalEmailType.No Then Logger.Debug("Sending emails to receivers..") SendFinalEmailToReceivers(pEnvelope) ', pAttachment + Else + Logger.Warn($"No SendFinalEmailToReceivers - oMailToCreator [{oMailToReceivers}] <> [{FinalEmailType.No}] ") End If Return True diff --git a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb index fad25b9a..31b37247 100644 --- a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb +++ b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb @@ -35,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"), - .ChangedWhen = pRow.Item("CHANGED_WHEN"), + .ChangedWhen = pRow.ItemEx(Of Date)("CHANGED_WHEN", Nothing), .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), diff --git a/EnvelopeGenerator.Common/Strings/Model.Designer.vb b/EnvelopeGenerator.Common/Strings/Model.Designer.vb index d991e936..1e008899 100644 --- a/EnvelopeGenerator.Common/Strings/Model.Designer.vb +++ b/EnvelopeGenerator.Common/Strings/Model.Designer.vb @@ -325,15 +325,6 @@ Namespace My.Resources End Get End Property - ''' - ''' Sucht eine lokalisierte Zeichenfolge, die ähnelt. - ''' - Public Shared ReadOnly Property ModificationOriginFile_FormFields() As String - Get - Return ResourceManager.GetString("ModificationOriginFile_FormFields", resourceCulture) - End Get - End Property - ''' ''' Sucht eine lokalisierte Zeichenfolge, die Nein ähnelt. ''' @@ -370,6 +361,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Wollen Sie die 2-Faktor Definition für diesen Empfänger zurücksetzen. Der Empfänger muss sich dann neu identifizieren! ähnelt. + ''' + Public Shared ReadOnly Property ResetTOTPUser() As String + Get + Return ResourceManager.GetString("ResetTOTPUser", resourceCulture) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die Gespeichert ähnelt. ''' @@ -415,6 +415,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Zeichenfolge, die Erfolgreich! Dialog wird geschlossen. ähnelt. + ''' + Public Shared ReadOnly Property Success_FormClose() As String + Get + Return ResourceManager.GetString("Success_FormClose", resourceCulture) + End Get + End Property + ''' ''' Sucht eine lokalisierte Zeichenfolge, die Unsigniert ähnelt. ''' diff --git a/EnvelopeGenerator.Common/Strings/Model.en.resx b/EnvelopeGenerator.Common/Strings/Model.en.resx index 38ac1ffc..eaa87da2 100644 --- a/EnvelopeGenerator.Common/Strings/Model.en.resx +++ b/EnvelopeGenerator.Common/Strings/Model.en.resx @@ -210,6 +210,9 @@ Read and Sign + + Do you want to reset the 2-factor definition for this receiver? The receiver must then identify itself again! + Saved @@ -225,6 +228,9 @@ Signed + + Successful! Dialog is closed.successful! Dialog is closed. + Unsigned diff --git a/EnvelopeGenerator.Common/Strings/Model.resx b/EnvelopeGenerator.Common/Strings/Model.resx index eafebbed..5e60d70b 100644 --- a/EnvelopeGenerator.Common/Strings/Model.resx +++ b/EnvelopeGenerator.Common/Strings/Model.resx @@ -216,6 +216,9 @@ Arbeitsanweisung + + Wollen Sie die 2-Faktor Definition für diesen Empfänger zurücksetzen. Der Empfänger muss sich dann neu identifizieren! + Gespeichert @@ -231,6 +234,9 @@ Signiert + + Erfolgreich! Dialog wird geschlossen. + Unsigniert diff --git a/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj b/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj index 6ff1c714..a4a95e32 100644 --- a/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj +++ b/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj @@ -319,6 +319,12 @@ + + frm2Factor_Properties.vb + + + Form + Form @@ -381,6 +387,9 @@ True + + frm2Factor_Properties.vb + frmEnvelopeEditor.vb Designer diff --git a/EnvelopeGenerator.Form/frm2Factor_Properties.Designer.vb b/EnvelopeGenerator.Form/frm2Factor_Properties.Designer.vb new file mode 100644 index 00000000..d9e79a74 --- /dev/null +++ b/EnvelopeGenerator.Form/frm2Factor_Properties.Designer.vb @@ -0,0 +1,121 @@ + _ +Partial Class frm2Factor_Properties + Inherits System.Windows.Forms.Form + + '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(frm2Factor_Properties)) + Me.txtMail = New System.Windows.Forms.TextBox() + Me.txtValid = New System.Windows.Forms.TextBox() + Me.chkTOTP = New System.Windows.Forms.CheckBox() + Me.Label1 = New System.Windows.Forms.Label() + Me.Label3 = New System.Windows.Forms.Label() + Me.SimpleButton1 = New DevExpress.XtraEditors.SimpleButton() + Me.SuspendLayout() + ' + 'txtMail + ' + Me.txtMail.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtMail.Location = New System.Drawing.Point(85, 24) + Me.txtMail.Name = "txtMail" + Me.txtMail.ReadOnly = True + Me.txtMail.Size = New System.Drawing.Size(342, 23) + Me.txtMail.TabIndex = 0 + ' + 'txtValid + ' + Me.txtValid.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.txtValid.Location = New System.Drawing.Point(85, 79) + Me.txtValid.Name = "txtValid" + Me.txtValid.ReadOnly = True + Me.txtValid.Size = New System.Drawing.Size(202, 23) + Me.txtValid.TabIndex = 1 + ' + 'chkTOTP + ' + Me.chkTOTP.AutoSize = True + Me.chkTOTP.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.chkTOTP.Location = New System.Drawing.Point(85, 53) + Me.chkTOTP.Name = "chkTOTP" + Me.chkTOTP.Size = New System.Drawing.Size(151, 20) + Me.chkTOTP.TabIndex = 2 + Me.chkTOTP.Text = "Secret Key vorhanden" + Me.chkTOTP.UseVisualStyleBackColor = True + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label1.Location = New System.Drawing.Point(12, 27) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(47, 16) + Me.Label1.TabIndex = 3 + Me.Label1.Text = "E-Mail:" + ' + 'Label3 + ' + Me.Label3.AutoSize = True + Me.Label3.Font = New System.Drawing.Font("Tahoma", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.Label3.Location = New System.Drawing.Point(15, 82) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(64, 16) + Me.Label3.TabIndex = 5 + Me.Label3.Text = "Gültig bis:" + ' + 'SimpleButton1 + ' + Me.SimpleButton1.Appearance.Font = New System.Drawing.Font("Tahoma", 9.75!) + Me.SimpleButton1.Appearance.Options.UseFont = True + Me.SimpleButton1.ImageOptions.SvgImage = CType(resources.GetObject("SimpleButton1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.SimpleButton1.Location = New System.Drawing.Point(18, 121) + Me.SimpleButton1.Name = "SimpleButton1" + Me.SimpleButton1.Size = New System.Drawing.Size(116, 40) + Me.SimpleButton1.TabIndex = 6 + Me.SimpleButton1.Text = "Zurücksetzen" + ' + 'frm2Factor_Properties + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(443, 170) + Me.Controls.Add(Me.SimpleButton1) + Me.Controls.Add(Me.Label3) + Me.Controls.Add(Me.Label1) + Me.Controls.Add(Me.chkTOTP) + Me.Controls.Add(Me.txtValid) + Me.Controls.Add(Me.txtMail) + Me.MaximizeBox = False + Me.MinimizeBox = False + Me.Name = "frm2Factor_Properties" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen + Me.Text = "Zwei-Faktor Eigenschaften Empfänger:" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents txtMail As TextBox + Friend WithEvents txtValid As TextBox + Friend WithEvents chkTOTP As CheckBox + Friend WithEvents Label1 As Label + Friend WithEvents Label3 As Label + Friend WithEvents SimpleButton1 As DevExpress.XtraEditors.SimpleButton +End Class diff --git a/EnvelopeGenerator.Form/frm2Factor_Properties.resx b/EnvelopeGenerator.Form/frm2Factor_Properties.resx new file mode 100644 index 00000000..0ec58b39 --- /dev/null +++ b/EnvelopeGenerator.Form/frm2Factor_Properties.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANcCAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgku + QmxhY2t7ZmlsbDojNzI3MjcyO30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5ZZWxsb3d7ZmlsbDojRkZC + MTE1O30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh + Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iUmVzZXRMYXlv + dXRPcHRpb25zIj4NCiAgICA8cGF0aCBkPSJNMTYsNGMtMy4zLDAtNi4zLDEuMy04LjUsMy41TDQsNHYx + MGgwLjJoNC4xSDE0bC0zLjYtMy42QzExLjgsOC45LDEzLjgsOCwxNiw4YzQuNCwwLDgsMy42LDgsOHMt + My42LDgtOCw4ICAgYy0zLjcsMC02LjgtMi42LTcuNy02SDQuMmMxLDUuNyw1LjksMTAsMTEuOCwxMGM2 + LjYsMCwxMi01LjQsMTItMTJTMjIuNiw0LDE2LDR6IiBjbGFzcz0iR3JlZW4iIC8+DQogIDwvZz4NCjwv + c3ZnPgs= + + + \ No newline at end of file diff --git a/EnvelopeGenerator.Form/frm2Factor_Properties.vb b/EnvelopeGenerator.Form/frm2Factor_Properties.vb new file mode 100644 index 00000000..3ece4500 --- /dev/null +++ b/EnvelopeGenerator.Form/frm2Factor_Properties.vb @@ -0,0 +1,43 @@ +Imports DigitalData.Modules.Database +Imports EnvelopeGenerator.Common.My +Public Class frm2Factor_Properties + Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click + If MsgBox(Resources.Model.ResetTOTPUser, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text) = MsgBoxResult.Yes Then + Dim oupdSQL = $"UPDATE TBSIG_RECEIVER SET TOTP_SECRET_KEY = NULL, TFA_REG_DEADLINE = NULL WHERE EMAIL_ADDRESS = '{txtMail.Text}'" + If DD_ECM.ExecuteNonQuery(oupdSQL) = True Then + MsgBox(Resources.Model.Success_FormClose, MsgBoxStyle.Information) + Me.Close() + Else + MsgBox("Something went wrong. Check the log", MsgBoxStyle.Exclamation) + End If + + End If + End Sub + + Dim TOTP As String + Dim mail As String + Dim Deadline As DateTime + Dim DD_ECM As MSSQLServer + Public Sub New(pmail As String, pTOTP As String, pDeadline As DateTime, pDD_ECM As MSSQLServer) + + ' Dieser Aufruf ist für den Designer erforderlich. + InitializeComponent() + + ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. + mail = pmail + TOTP = pTOTP + Deadline = pDeadline + DD_ECM = pDD_ECM + End Sub + + Private Sub frm2Faktor_Load(sender As Object, e As EventArgs) Handles Me.Load + chkTOTP.Checked = False + If Not IsNothing(TOTP) Then + If TOTP.Length > 1 Then + chkTOTP.Checked = True + End If + End If + txtMail.Text = mail + txtValid.Text = Deadline.ToLongDateString + End Sub +End Class \ No newline at end of file diff --git a/EnvelopeGenerator.Form/frmEnvelopeEditor.resx b/EnvelopeGenerator.Form/frmEnvelopeEditor.resx index 15a9a956..27ecec05 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeEditor.resx +++ b/EnvelopeGenerator.Form/frmEnvelopeEditor.resx @@ -939,7 +939,7 @@ 0 - 17, 54 + 792, 17 557, 17 diff --git a/EnvelopeGenerator.Form/frmEnvelopeEditor.vb b/EnvelopeGenerator.Form/frmEnvelopeEditor.vb index faba9d10..0d44382d 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeEditor.vb +++ b/EnvelopeGenerator.Form/frmEnvelopeEditor.vb @@ -763,4 +763,6 @@ Partial Public Class frmEnvelopeEditor Process.Start(Documents.Item(0).Filepath) End If End Sub + + End Class diff --git a/EnvelopeGenerator.Form/frmMain.Designer.vb b/EnvelopeGenerator.Form/frmMain.Designer.vb index 3a415889..2c66ef2c 100644 --- a/EnvelopeGenerator.Form/frmMain.Designer.vb +++ b/EnvelopeGenerator.Form/frmMain.Designer.vb @@ -66,6 +66,7 @@ Partial Class frmMain Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem() Me.BarButtonItem4 = New DevExpress.XtraBars.BarButtonItem() Me.BarStaticItemGhost = New DevExpress.XtraBars.BarStaticItem() + Me.bbtnitm2Faktor = New DevExpress.XtraBars.BarButtonItem() Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage() Me.RibbonPageEnvelopeActions = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup() @@ -103,6 +104,10 @@ Partial Class frmMain Me.btnEnvelopes_thisYear = New DevExpress.XtraEditors.SimpleButton() Me.btnEnvelopes_lastmonth = New DevExpress.XtraEditors.SimpleButton() Me.btnEnvelopes_thismonth = New DevExpress.XtraEditors.SimpleButton() + Me.XtraTabPage3 = New DevExpress.XtraTab.XtraTabPage() + Me.Label1 = New System.Windows.Forms.Label() + Me.Button1 = New System.Windows.Forms.Button() + Me.txtEnvID = New System.Windows.Forms.TextBox() Me.RefreshTimer = New System.Windows.Forms.Timer(Me.components) Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog() Me.XtraSaveFileDialog1 = New DevExpress.XtraEditors.XtraSaveFileDialog(Me.components) @@ -138,6 +143,7 @@ Partial Class frmMain Me.GroupControl2.SuspendLayout() CType(Me.GroupControl1, System.ComponentModel.ISupportInitialize).BeginInit() Me.GroupControl1.SuspendLayout() + Me.XtraTabPage3.SuspendLayout() Me.SuspendLayout() ' 'SplashScreenManager1 @@ -167,7 +173,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.XtraTabPageAdmin}) + Me.XtraTabControlMain.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.XtraTabPage1, Me.XtraTabPage2, Me.XtraTabPageAdmin, Me.XtraTabPage3}) ' 'XtraTabPage1 ' @@ -334,9 +340,9 @@ Partial Class frmMain Me.RibbonControl.ExpandCollapseItem.Id = 0 Me.RibbonControl.ExpandCollapseItem.ImageOptions.ImageIndex = CType(resources.GetObject("RibbonControl.ExpandCollapseItem.ImageOptions.ImageIndex"), Integer) Me.RibbonControl.ExpandCollapseItem.ImageOptions.LargeImageIndex = CType(resources.GetObject("RibbonControl.ExpandCollapseItem.ImageOptions.LargeImageIndex"), Integer) - Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.btnCreateEnvelope, Me.btnEditEnvelope, Me.btnDeleteEnvelope, Me.BarButtonItem1, Me.txtRefreshLabel, Me.btnShowDocument, Me.btnContactReceiver, Me.txtEnvelopeIdLabel, Me.btnOpenLogDirectory, Me.BarCheckItem1, Me.bsitmInfo, Me.bbtnitmEB, Me.bbtnitmInfoMail, Me.bbtnitm_ResendInvitation, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarStaticItemGhost}) + Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.btnCreateEnvelope, Me.btnEditEnvelope, Me.btnDeleteEnvelope, Me.BarButtonItem1, Me.txtRefreshLabel, Me.btnShowDocument, Me.btnContactReceiver, Me.txtEnvelopeIdLabel, Me.btnOpenLogDirectory, Me.BarCheckItem1, Me.bsitmInfo, Me.bbtnitmEB, Me.bbtnitmInfoMail, Me.bbtnitm_ResendInvitation, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarStaticItemGhost, Me.bbtnitm2Faktor}) resources.ApplyResources(Me.RibbonControl, "RibbonControl") - Me.RibbonControl.MaxItemId = 20 + Me.RibbonControl.MaxItemId = 21 Me.RibbonControl.Name = "RibbonControl" Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1, Me.RibbonPage2}) Me.RibbonControl.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False] @@ -494,6 +500,13 @@ Partial Class frmMain Me.BarStaticItemGhost.Name = "BarStaticItemGhost" Me.BarStaticItemGhost.Visibility = DevExpress.XtraBars.BarItemVisibility.Never ' + 'bbtnitm2Faktor + ' + resources.ApplyResources(Me.bbtnitm2Faktor, "bbtnitm2Faktor") + Me.bbtnitm2Faktor.Id = 20 + Me.bbtnitm2Faktor.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitm2Faktor.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage) + Me.bbtnitm2Faktor.Name = "bbtnitm2Faktor" + ' 'RibbonPage1 ' Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageEnvelopeActions, Me.RibbonPageGroup1, Me.RibbonPageGroupFunctions}) @@ -521,6 +534,7 @@ Partial Class frmMain Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.btnShowDocument) Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.bbtnitm_ResendInvitation) Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.btnContactReceiver) + Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.bbtnitm2Faktor) Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.bbtnitmEB) Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.bbtnitmInfoMail) Me.RibbonPageGroupFunctions.Name = "RibbonPageGroupFunctions" @@ -791,6 +805,30 @@ Partial Class frmMain resources.ApplyResources(Me.btnEnvelopes_thismonth, "btnEnvelopes_thismonth") Me.btnEnvelopes_thismonth.Name = "btnEnvelopes_thismonth" ' + 'XtraTabPage3 + ' + Me.XtraTabPage3.Controls.Add(Me.Label1) + Me.XtraTabPage3.Controls.Add(Me.Button1) + Me.XtraTabPage3.Controls.Add(Me.txtEnvID) + Me.XtraTabPage3.Name = "XtraTabPage3" + resources.ApplyResources(Me.XtraTabPage3, "XtraTabPage3") + ' + 'Label1 + ' + resources.ApplyResources(Me.Label1, "Label1") + Me.Label1.Name = "Label1" + ' + 'Button1 + ' + resources.ApplyResources(Me.Button1, "Button1") + Me.Button1.Name = "Button1" + Me.Button1.UseVisualStyleBackColor = True + ' + 'txtEnvID + ' + resources.ApplyResources(Me.txtEnvID, "txtEnvID") + Me.txtEnvID.Name = "txtEnvID" + ' 'RefreshTimer ' Me.RefreshTimer.Interval = 120000 @@ -846,6 +884,8 @@ Partial Class frmMain Me.GroupControl2.ResumeLayout(False) CType(Me.GroupControl1, System.ComponentModel.ISupportInitialize).EndInit() Me.GroupControl1.ResumeLayout(False) + Me.XtraTabPage3.ResumeLayout(False) + Me.XtraTabPage3.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() @@ -931,4 +971,9 @@ Partial Class frmMain Friend WithEvents btnEvvallUs_lastmonth As DevExpress.XtraEditors.SimpleButton Friend WithEvents GridColumn1 As DevExpress.XtraGrid.Columns.GridColumn Friend WithEvents GridColumn2 As DevExpress.XtraGrid.Columns.GridColumn + Friend WithEvents bbtnitm2Faktor As DevExpress.XtraBars.BarButtonItem + Friend WithEvents XtraTabPage3 As DevExpress.XtraTab.XtraTabPage + Friend WithEvents Label1 As Label + Friend WithEvents Button1 As Button + Friend WithEvents txtEnvID As TextBox End Class diff --git a/EnvelopeGenerator.Form/frmMain.resx b/EnvelopeGenerator.Form/frmMain.resx index ca4e37cd..29833266 100644 --- a/EnvelopeGenerator.Form/frmMain.resx +++ b/EnvelopeGenerator.Form/frmMain.resx @@ -868,6 +868,43 @@ Tahoma, 8.25pt, style=Bold + + 2Faktor Eigenschaften + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAC4GAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg + MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku + UmVke2ZpbGw6I0QxMUMxQzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuR3JlZW57ZmlsbDojMDM5 + QzIzO30KPC9zdHlsZT4NCiAgPGcgaWQ9IkZpbmdlcnByaW50Ij4NCiAgICA8cGF0aCBkPSJNMjMsNmMt + MC4yLDAtMC40LTAuMS0wLjUtMC4yYy0wLjMtMC4yLTYuNi00LjEtMTUsMEM3LDYuMSw2LjQsNS45LDYu + MSw1LjRjLTAuMi0wLjUsMC0xLjEsMC41LTEuMyAgIEMxNi0wLjYsMjMuMiw0LDIzLjUsNC4yYzAuNSww + LjMsMC42LDAuOSwwLjMsMS40QzIzLjYsNS44LDIzLjMsNiwyMyw2eiBNMy43LDEzLjdjMTAuOS0xMS40 + LDIyLjItMi4zLDIyLjYtMS45ICAgYzAuNCwwLjQsMS4xLDAuMywxLjQtMC4xYzAuNC0wLjQsMC4zLTEu + MS0wLjEtMS40Yy0wLjEtMC4xLTEzLjEtMTAuNy0yNS40LDIuMWMtMC40LDAuNC0wLjQsMSwwLDEuNEMy + LjUsMTMuOSwyLjgsMTQsMywxNCAgIEMzLjMsMTQsMy41LDEzLjksMy43LDEzLjd6IE0yNCwyN2MwLTAu + Ni0wLjQtMS0xLTFjLTUuMywwLTctMy4zLTcuMS0zLjRjLTAuMi0wLjUtMC44LTAuNy0xLjMtMC40Yy0w + LjUsMC4yLTAuNywwLjgtMC40LDEuMyAgIGMwLjEsMC4yLDIuNCw0LjYsOC45LDQuNkMyMy42LDI4LDI0 + LDI3LjYsMjQsMjd6IE0xNS45LDI5LjRjMC4yLTAuNSwwLTEuMS0wLjQtMS4zYzAsMC0zLjUtMS44LTMu + NS01LjFjMC0xLjcsMS4zLTMsMy0zICAgYzEuNiwwLDIuMywwLjgsMy4zLDEuN2MxLDEsMi4zLDIuMyw0 + LjcsMi4zYzIuOCwwLDUtMi4yLDUtNWMwLTMuMi00LTktMTItOUM3LjYsMTAsMiwxNiwyLDI1YzAsMC42 + LDAuNCwxLDEsMXMxLTAuNCwxLTEgICBjMC03LjksNC43LTEzLDEyLTEzYzYuNiwwLDEwLDQuNiwxMCw3 + YzAsMS43LTEuMywzLTMsM2MtMS42LDAtMi4zLTAuOC0zLjMtMS43Yy0xLTEtMi4zLTIuMy00LjctMi4z + Yy0yLjgsMC01LDIuMi01LDUgICBjMCw0LjYsNC40LDYuOCw0LjYsNi45QzE0LjcsMzAsMTQuOCwzMCwx + NSwzMEMxNS40LDMwLDE1LjcsMjkuOCwxNS45LDI5LjR6IE05LjcsMjkuOGMwLjQtMC40LDAuNS0xLDAu + MS0xLjRjMCwwLTEuOC0yLjEtMS44LTUuMyAgIGMwLTIuNCwyLjMtNyw4LTdjNC4zLDAsNiwzLjMsNi4x + LDMuNWMwLjIsMC41LDAuOCwwLjcsMS4zLDAuNGMwLjUtMC4yLDAuNy0wLjgsMC40LTEuM0MyMy44LDE4 + LjQsMjEuNiwxNCwxNiwxNCAgIGMtNi41LDAtMTAsNS4yLTEwLDljMCw0LDIuMSw2LjUsMi4yLDYuN0M4 + LjQsMjkuOSw4LjcsMzAsOSwzMEM5LjIsMzAsOS41LDI5LjksOS43LDI5Ljh6IiBjbGFzcz0iQmxhY2si + IC8+DQogIDwvZz4NCjwvc3ZnPgs= + + 0, 0 @@ -1462,6 +1499,96 @@ 2 + + True + + + 21, 18 + + + 66, 13 + + + 2 + + + EnvelopeID: + + + Label1 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + XtraTabPage3 + + + 0 + + + 24, 85 + + + 199, 23 + + + 1 + + + Finalisierung emails prüfen + + + Button1 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + XtraTabPage3 + + + 1 + + + 24, 34 + + + 100, 20 + + + 0 + + + txtEnvID + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + XtraTabPage3 + + + 2 + + + 1088, 469 + + + Admin Test + + + XtraTabPage3 + + + DevExpress.XtraTab.XtraTabPage, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + XtraTabControlMain + + + 3 + XtraTabControlMain @@ -1849,6 +1976,12 @@ DevExpress.XtraBars.BarStaticItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + bbtnitm2Faktor + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + RibbonPage1 diff --git a/EnvelopeGenerator.Form/frmMain.vb b/EnvelopeGenerator.Form/frmMain.vb index 081e5497..fcf3a851 100644 --- a/EnvelopeGenerator.Form/frmMain.vb +++ b/EnvelopeGenerator.Form/frmMain.vb @@ -14,6 +14,8 @@ Imports System.Diagnostics Imports System.ComponentModel Imports DevExpress.XtraPrinting Imports System.Web +Imports EnvelopeGenerator.Common.Constants +Imports System.Security.Cryptography Public Class frmMain Private ReadOnly LogConfig As LogConfig @@ -767,4 +769,63 @@ Public Class frmMain GridControlData.DataSource = Nothing End If End Sub + + Private Sub bbtnitm2Faktor_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitm2Faktor.ItemClick + If ViewEnvelopes.FocusedRowHandle < 0 Then + Exit Sub + End If + + Dim oEnvelope As Envelope = ViewEnvelopes.GetRow(ViewEnvelopes.FocusedRowHandle) + Dim oView As GridView = GridEnvelopes.FocusedView + If oView.Name = ViewReceivers.Name Then + Dim oReceiver As EnvelopeReceiver = oView.GetRow(oView.FocusedRowHandle) + Dim oEnvelopeTitle As String = Net.WebUtility.UrlEncode(oEnvelope.Title) + Dim oDT As DataTable = DB_DD_ECM.GetDatatable($"SELECT * FROM TBSIG_RECEIVER WHERE EMAIL_ADDRESS = '{oReceiver.Email}'") + If Not IsNothing(oDT) Then + If oDT.Rows.Count = 1 Then + Dim oTFA_REG_DL = oDT.Rows(0).Item("TFA_REG_DEADLINE") + Dim oTOTP = oDT.Rows(0).Item("TOTP_SECRET_KEY") + Dim oForm As New frm2Factor_Properties(oReceiver.Email, oTOTP, oTFA_REG_DL, DB_DD_ECM) + oForm.ShowDialog() + End If + End If + + Else + MsgBox(Resources.Envelope.Please_select_a_recipient_from_the_Recipients_tab, MsgBoxStyle.Information, Text) + End If + End Sub + + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + If txtEnvID.Text = String.Empty Then + Exit Sub + End If + Dim EnvelopeModel As EnvelopeModel + Dim oState = GetState() + EnvelopeModel = New EnvelopeModel(oState) + + Dim oEnvelope = EnvelopeModel.GetById(txtEnvID.Text) + Dim oMailToCreator = oEnvelope.FinalEmailToCreator + Dim oMailToReceivers = oEnvelope.FinalEmailToReceivers + + If oMailToCreator <> FinalEmailType.No Then + MsgBox("Finale email an Creator könnten/würden gesendet werden!") + Else + MsgBox("Finale email an Creator könnte/würde nicht erzeugt werden!" & vbNewLine & $"No SendFinalEmailToCreator - oMailToCreator [{oMailToCreator}] <> [{FinalEmailType.No}]") + End If + + If oMailToReceivers <> FinalEmailType.No Then + MsgBox("Finale email an Unterzeichner könnten/würden gesendet werden!") + Else + MsgBox("Finale email an Unterzeichner könnte/würde nicht erzeugt werden!" & vbNewLine & $"No SendFinalEmailToReceivers - oMailToReceivers [{oMailToReceivers}] <> [{FinalEmailType.No}]") + End If + End Sub + Private Function GetState() As State + Return New State With { + .LogConfig = LogConfig, + .UserId = 0, + .Database = DB_DD_ECM, + .Config = Nothing, + .DbConfig = Nothing + } + End Function End Class \ No newline at end of file diff --git a/EnvelopeGenerator.Form/frmSplashScreen.resx b/EnvelopeGenerator.Form/frmSplashScreen.resx index 3b8d22e1..166571bd 100644 --- a/EnvelopeGenerator.Form/frmSplashScreen.resx +++ b/EnvelopeGenerator.Form/frmSplashScreen.resx @@ -121,7 +121,7 @@ iVBORw0KGgoAAAANSUhEUgAAAyAAAADICAYAAAAQj4UaAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL - DQAACw0B7QfALAAASudJREFUeF7tvWusZNd5nukfcpSOmmre3Wp2s3lrdpNUk01RPxIk6iBBIjFxMBPZ + DAAACwwBP0AiyAAASudJREFUeF7tvWusZNd5nukfcpSOmmre3Wp2s3lrdpNUk01RPxIk6iBBIjFxMBPZ DGxLEyB2M8ggkegAsSRElikHEsnBJFZrRjZtxZIpZaIZRy2AloGxrAHIRKIQRIqVGJ6AsJEAAwgDOzNJ HCBSLsqfynmq+HV9tepd+1KnLnufen88OKf2rfa67HPed3/rW+t7PnffoxNjjDHGGLNb/n4L/9t9l6b8 vXsX+ewBn1ngkSkvCH79hy9NXr5yafKbz1yavHr10uRfv/jo5Pe//Ohk8uoMfmcb+ziGYznnc4/q663C diff --git a/EnvelopeGenerator.Service/My Project/AssemblyInfo.vb b/EnvelopeGenerator.Service/My Project/AssemblyInfo.vb index 67d152ca..f529650d 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/Service.vb b/EnvelopeGenerator.Service/Service.vb index 4431b09b..4d910e7e 100644 --- a/EnvelopeGenerator.Service/Service.vb +++ b/EnvelopeGenerator.Service/Service.vb @@ -2,6 +2,7 @@ Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Database Imports DigitalData.Modules.Config +Imports System.Threading Public Class Service Private Logger As Logger @@ -59,6 +60,8 @@ Public Class Service Scheduler1 = New Scheduler_FinishEnvelope(LogConfig, Config.ConnectionString, oKey, Config.PDFBurnerParams) Await Scheduler1.Start(Config.IntervalInMin) + Thread.Sleep(2500) + Scheduler2 = New Scheduler_API_SendEnvelopeMails(LogConfig, Config.ConnectionString) Await Scheduler2.Start(Config.IntervalInMin)