This commit is contained in:
Digital Data - Marlon Schreiber
2019-03-22 15:48:41 +01:00
parent fb92a0fd1c
commit 676e9d40b8
17 changed files with 547 additions and 184 deletions

View File

@@ -2,4 +2,6 @@
Public CURRENToWMSession_Created As Date = Now
Public CURRENToWMConnect As Object
Public CURRENToWMSession As Object
Public CURRENT_WMDriveLetter As String = "W"
End Module

View File

@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyVersion("2.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -8,6 +8,6 @@
Public Shared DT_TBDD_EMAIL As DataTable = Nothing
Public Shared CONCATTED_FILE As String = ""
Public Shared _PROFIL_ID, _profGUID As Integer
Public Shared TEMP_FILES As List(Of String) = New List(Of String)
Public Shared _proflastRun As Date
End Class

View File

@@ -54,6 +54,7 @@ Public Class clsDatabase
Oracle_Command.AddToStatementCache = True
Catch ex As Exception
Logger.Warn($"PLSQL-Command: [{plsqlcommand}]")
Logger.Error(ex)
'clsLogger.Add(ex.Message, True, "clsDatatabase.plsqlcommandDefine")
Oracle_Conn.Close()
@@ -71,6 +72,7 @@ Public Class clsDatabase
Return True
Catch ex As Exception
Logger.Warn($"PLSQL-Command: [{plsqlcommand}]")
Logger.Error(ex)
'clsLogger.Add(ex.Message & vbNewLine & "Execute Command => (" & plsqlcommand & ")", True, "clsDatatabase.ExecuteonOracleDb")
Oracle_Conn.Close()
@@ -88,6 +90,7 @@ Public Class clsDatabase
Catch ex As Exception
Logger.Warn($"PLSQL-Command: [{plsqlcommand}]")
Logger.Error(ex)
'clsLogger.Add("Unexpected Error in ExecuteonOracleDb: " & ex.Message & vbNewLine & "SQL: " & plsqlcommand, True, "clsDatatabase.ExecuteonOracleDb")
' an dieser Stelle sollte jeder unvorhergesehene Fehler der Funktion abgefangen werden

View File

@@ -4,6 +4,7 @@ Imports System.Net
Imports Newtonsoft.Json
Imports System.Text
Imports DigitalData.Modules.Logging
Imports System.Text.RegularExpressions
Public Class clsDateiverarbeitung
Dim Logger As Logger
@@ -122,64 +123,134 @@ Public Class clsDateiverarbeitung
Return False
End Try
End Function
'Kopiert die übergebene Datei in den Zielpfad
Public Function Export_File(WDDatei As WMObject, Zielpfad As String)
Private Function CleanInput(strIn As String) As String
' Replace invalid characters with empty strings.
Try
If Not Zielpfad.EndsWith("\") Then
Zielpfad = Zielpfad & "\"
End If
Logger.Info("Verarbeitung von Datei: " & WDDatei.aName)
'Die Quelle zusammensetzen
Logger.Debug("PFAD: " & clsCURRENT.WDLAUFWERK & ":" & WDDatei.aPath & "\" & WDDatei.aName)
'Dim Quelle As String = IO.Path.GetDirectoryName(WDLaufwerk & ":" & WDDatei.aPath & "\" & WDDatei.aName)
Dim ExportFileIO = New WMOTOOLLib.WMFileIO ' CreateObject("WMOTOOLLib.WMFileIO") ' New WMOTOOLLib.WMFileIO
Logger.Debug("ExportFileIO erzeugt.....")
' Stream Interface bereitstellen
WDDatei.LockFor(WMObjectEditModeFileSystem)
Try
If Not WDDatei.aLocked Then
WDDatei.lock()
End If
Return Regex.Replace(strIn, "[^\w\.@-]", "")
' If we timeout when replacing invalid characters,
' we should return String.Empty.
Catch ex As Exception
Logger.Error(ex) 'clsLogger.AddError("Unvorhergesehener Fehler beim Lock-Vorgang: " & ex.Message, "clsDV.Export_File")
Logger.Error(ex)
Return String.Empty
End Try
End Function
Public Function Export_WMFile2HDD(oWMFile As WMObject, MyExportpath As String)
Try
If Not MyExportpath.EndsWith("\") Then
MyExportpath &= "\"
End If
Try
Logger.Info("Working on WMFile: " & oWMFile.aName)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
Dim ExportFileIO = New WMOTOOLLib.WMFileIO ' CreateObject("WMOTOOLLib.WMFileIO") ' New WMOTOOLLib.WMFileIO
Logger.Debug("ExportFileIO created...")
Dim oWMStream = WDDatei.OpenStream("BinaryObject", WMObjectStreamOpenModeReadWrite)
Dim oWMStream = oWMFile.OpenStream("BinaryObject", 1)
'### VERSIONIERUNG ###
Dim version As Integer = 2
'Dim Stammname As String = System.IO.Path.GetFileNameWithoutExtension(Quelle)
Dim Filename = WDDatei.aName.Substring(0, WDDatei.aName.LastIndexOf("."))
Dim Extension = WDDatei.aName.Substring(WDDatei.aName.LastIndexOf("."))
Dim tempFilename As String = Zielpfad & Filename & Extension
Dim oFilename = oWMFile.aName.Substring(0, oWMFile.aName.LastIndexOf("."))
Dim oExtension = oWMFile.aName.Substring(oWMFile.aName.LastIndexOf("."))
Dim oTempFilename As String = MyExportpath & oFilename & oExtension
'Überprüfen ob File existiert
Do While IO.File.Exists(tempFilename) = True
tempFilename = Zielpfad & Filename & "_" & version & Extension
Do While IO.File.Exists(oTempFilename) = True
oTempFilename = MyExportpath & oFilename & "_" & version & oExtension
version = version + 1
Loop
Logger.Debug("Zieldateiname: " & tempFilename)
Logger.Debug("Exportfilename is: " & oTempFilename)
' den Dateiinhalt der neuen Datei zuweisen
ExportFileIO.bstrOriginalFileName = oTempFilename
ExportFileIO.aWMStream = oWMStream
ExportFileIO.bstrOriginalFileName = tempFilename
'Das eigentliche kopieren
ExportFileIO.ExportOriginal(True)
' close the windream file stream
oWMStream.Close()
WDDatei.Save()
WDDatei.unlock()
clsCURRENT.EXPORTED_FILENAME = tempFilename
Logger.Info("Datei erfolgreich nach '" & tempFilename & "' verschoben.")
aktfile_Exportresult = tempFilename
If File.Exists(oTempFilename) Then
clsCURRENT.EXPORTED_FILENAME = oTempFilename
Logger.Info($"File Export to HDD [{clsCURRENT.EXPORTED_FILENAME}]was successfull (File.Exists = True)!")
aktfile_Exportresult = clsCURRENT.EXPORTED_FILENAME
clsCURRENT.TEMP_FILES.Add(clsCURRENT.EXPORTED_FILENAME)
Logger.Debug("FileInfo Added to variables...")
Return True
Catch ex As Exception
'bei einem Fehler einen Eintrag in der Logdatei machen
Logger.Error(ex)
Else
Logger.Warn($"Export not successfull or File.Exists = false Export: [{oTempFilename}]")
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Logger.Info("Unexpected error in Export_WMFile: " & ex.Message)
Return False
End Try
End Function
'Kopiert die übergebene Datei in den Zielpfad
'Public Function Export_File(oWMFile As WMObject, oZielpfad As String)
' Try
' If Not oZielpfad.EndsWith("\") Then
' oZielpfad = oZielpfad & "\"
' End If
' Dim oNewFilename As String
' Logger.Info("Verarbeitung von Datei: " & oWMFile.aName)
' oNewFilename = CleanInput(oWMFile.aName)
' 'Die Quelle zusammensetzen
' Logger.Debug("PFAD: " & clsCURRENT.WDLAUFWERK & ":" & oWMFile.aPath & "\" & oWMFile.aName)
' 'Dim Quelle As String = IO.Path.GetDirectoryName(WDLaufwerk & ":" & WDDatei.aPath & "\" & WDDatei.aName)
' Dim ExportFileIO = New WMOTOOLLib.WMFileIO ' CreateObject("WMOTOOLLib.WMFileIO") ' New WMOTOOLLib.WMFileIO
' Logger.Debug("ExportFileIO erzeugt.....")
' ' Stream Interface bereitstellen
' oWMFile.LockFor(WMObjectEditModeFileSystem)
' Try
' If Not oWMFile.aLocked Then
' oWMFile.lock()
' End If
' Catch ex As Exception
' Logger.Error(ex) 'clsLogger.AddError("Unvorhergesehener Fehler beim Lock-Vorgang: " & ex.Message, "clsDV.Export_File")
' Return False
' End Try
' Dim oWMStream = oWMFile.OpenStream("BinaryObject", WMObjectStreamOpenModeReadWrite)
' '### VERSIONIERUNG ###
' Dim version As Integer = 2
' 'Dim Stammname As String = System.IO.Path.GetFileNameWithoutExtension(Quelle)
' Dim oFilename = oWMFile.aName.Substring(0, oWMFile.aName.LastIndexOf("."))
' Dim oExtension = oWMFile.aName.Substring(oWMFile.aName.LastIndexOf("."))
' Dim oTempFilename As String = oZielpfad & oFilename & oExtension
' 'Überprüfen ob File existiert
' Do While IO.File.Exists(oTempFilename) = True
' oTempFilename = oZielpfad & oFilename & "_" & version & oExtension
' version = version + 1
' Loop
' Logger.Debug("Zieldateiname: " & oTempFilename)
' ' den Dateiinhalt der neuen Datei zuweisen
' ExportFileIO.aWMStream = oWMStream
' ExportFileIO.bstrOriginalFileName = oTempFilename
' 'Das eigentliche kopieren
' ExportFileIO.ExportOriginal(True)
' ' close the windream file stream
' oWMStream.Close()
' oWMFile.Save()
' oWMFile.unlock()
' clsCURRENT.EXPORTED_FILENAME = oTempFilename
' Logger.Info("Datei erfolgreich nach '" & oTempFilename & "' kopiert.")
' aktfile_Exportresult = oTempFilename
' clsCURRENT.TEMP_FILES.Add(oTempFilename)
' Return True
' Catch ex As Exception
' 'bei einem Fehler einen Eintrag in der Logdatei machen
' Logger.Warn($"Unexpected in Export-File: [{oWMFile.aName}]...")
' Logger.Error(ex)
' Return False
' End Try
'End Function
Public Function Rename_File(WMFile As WMObject, konvention As String)
Try
Logger.Debug("Konvention: '" & konvention & "'")
@@ -416,6 +487,9 @@ Public Class clsDateiverarbeitung
Dim result = REGEX_REPLACE(WMFile, OracleCommandRAW)
If result = Nothing Then
Return False
ElseIf result.ToString.Contains("[%") Then
Logger.Warn($"Replace Function OracleCommandRAW did not match all patterns: {result.ToString}")
Return False
End If
@@ -436,6 +510,9 @@ Public Class clsDateiverarbeitung
Dim result = REGEX_REPLACE(WMFile, SQLCommandRAW)
If result = Nothing Then
Return False
ElseIf result.ToString.Contains("[%") Then
Logger.Warn($"Replace Function SQLCommandRAW did not match all patterns: {result.ToString}")
Return False
End If
@@ -611,7 +688,7 @@ Public Class clsDateiverarbeitung
Logger.Debug("REGEX_String after vector-for-each (" & i & ") " & _STRING)
End If
Else
Logger.Warn("Attention: Indexvalue is NOTHING, standardvalue '0' will be used", False, "clsDateiverarbeitung.REGEX_REPLACE")
Logger.Info($"Attention: Indexvalue for Index [{reg_element_Ohne_SZ}]is NOTHING, standardvalue '0' will be used - clsDateiverarbeitung.REGEX_REPLACE")
_STRING = _STRING.Replace(reg_element.Value, "0")
End If
End If

View File

@@ -4,6 +4,9 @@ Imports Independentsoft.Email
Imports Independentsoft.Email.Smtp
Imports Independentsoft.Email.Mime
Imports DigitalData.Modules.Logging
Imports System.Net.Mail
Imports System.Net
Imports System.Net.Mime
Public Class clsEmail
Dim Logger As DigitalData.Modules.Logging.Logger
@@ -15,30 +18,135 @@ Public Class clsEmail
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
AUTH_TYPE As String, Optional attment As String = "")
Try
Dim message As New Message()
message.From = New Mailbox(mailUser, mailUser)
message.To.Add(New Mailbox(mailto))
message.Subject = mailSubject
message.Body = mailBody
message.ContentType = New ContentType("text", "plain", "iso-8859-1")
message.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable
Dim oReceipiants As String()
If mailto.Contains(";") Then
oReceipiants = mailto.Split(";")
Else
ReDim Preserve oReceipiants(0)
oReceipiants(0) = mailto
End If
For Each oMailReceipiant As String In oReceipiants
Dim sClient = New Mail.SmtpClient(mailsmtp)
Dim mymesssage As New MailMessage
sClient.Port = mailport
If AUTH_TYPE = "SSL" Then
sClient.EnableSsl = True
Else
sClient.EnableSsl = False
End If
Dim client As New SmtpClient(mailsmtp, mailport)
client.EnableSsl = True
client.ValidateRemoteCertificate = False
sClient.Credentials = New NetworkCredential(mailUser, mailPW)
sClient.UseDefaultCredentials = False
mymesssage.Body = $"This is the body (text will be replaced within profile)! <br> mailsmtp: {mailsmtp} <br> mailport: {mailport} <br> mailUser: {mailUser} <br> mailPW: XXXX <br> AUTH_TYPE: {AUTH_TYPE}"
Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(mymesssage.Body)
htmlView.ContentType = New System.Net.Mime.ContentType("text/html")
mymesssage.AlternateViews.Add(htmlView)
mymesssage.From = New MailAddress(mailfrom)
mymesssage.Subject = mailSubject
mymesssage.To.Add(New MailAddress(oMailReceipiant))
If attment <> String.Empty Then
Dim oAttment As String = attment.Replace("W:\", "\\windream\objects\")
If System.IO.File.Exists(oAttment) Then
Logger.Info($"working on attachment {oAttment}...")
Dim oAttachment As New System.Net.Mail.Attachment(oAttment)
mymesssage.Attachments.Add(oAttachment)
Else
MsgBox($"Attachment {oAttment.ToString} is not existing - Mail won't be send!")
Return False
End If
End If
sClient.Send(mymesssage)
Logger.Info($"Email has been send to {oMailReceipiant}!!")
Next
client.Connect()
client.Login(mailUser, mailPW)
client.Send(message)
client.Disconnect()
Return True
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Public Function Email_Send(ByVal mailSubject As String, ByVal mailBody As String, mailto As String,
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
AUTH_TYPE As String, Optional attment As String = "", Optional Test As Boolean = False)
Try
Dim oError As Boolean = False
Dim oReceipiants As String()
If mailto.Contains(";") Then
oReceipiants = mailto.Split(";")
Else
ReDim Preserve oReceipiants(0)
oReceipiants(0) = mailto
End If
For Each oMailReceipiant As String In oReceipiants
Dim sClient = New Net.Mail.SmtpClient(mailsmtp)
Dim mymesssage As New MailMessage
sClient.Port = mailport
If AUTH_TYPE = "SSL" Then
sClient.EnableSsl = True
Else
sClient.EnableSsl = False
End If
sClient.Credentials = New NetworkCredential(mailUser, mailPW)
sClient.UseDefaultCredentials = False
If Test = True Then
mymesssage.Body = $"This is the body (text will be replaced within profile)! <br> mailsmtp: {mailsmtp} <br> mailport: {mailport} <br> mailUser: {mailUser} <br> mailPW: XXXX <br> AUTH_TYPE: {AUTH_TYPE}"
Else
mymesssage.Body = mailBody
End If
'mymesssage.IsBodyHtml = True
Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(mymesssage.Body)
htmlView.ContentType = New System.Net.Mime.ContentType("text/html")
mymesssage.AlternateViews.Add(htmlView)
attment = attment.Replace("W:\", "\\windream\objects\")
If attment <> String.Empty Then
If System.IO.File.Exists(attment) Then
Logger.Info($"working on attachment {attment.ToString}...")
Dim oAttachment As New System.Net.Mail.Attachment(attment)
'If attment.ToLower.EndsWith("pdf") Then
' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "pdf")
'ElseIf attment.ToLower.EndsWith("jpg") Then
' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "jpg")
'ElseIf attment.ToLower.EndsWith("docx") Then
' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "MS-word")
'End If
mymesssage.Attachments.Add(oAttachment)
Else
Logger.Warn($"Attachment {attment.ToString} is not existing - Mail won't be send!")
oError = True
End If
End If
mymesssage.From = New MailAddress(mailfrom)
mymesssage.Subject = mailSubject
mymesssage.To.Add(New MailAddress(oMailReceipiant))
sClient.Send(mymesssage)
Next
If oError = False Then
Return True
Else
Return False
End If
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function Email_Send_Independentsoft(ByVal mailSubject As String, ByVal mailBody As String, mailto As String,
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
AUTH_TYPE As String, Optional attment As String = "")
@@ -64,28 +172,31 @@ Public Class clsEmail
message.Subject = mailSubject
Logger.Debug($"Message created..")
Dim textBodyPart As New BodyPart()
textBodyPart.ContentType = New ContentType("text", "html", "utf-8")
textBodyPart.ContentType = New Independentsoft.Email.Mime.ContentType("text", "html", "utf-8")
textBodyPart.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable
textBodyPart.Body = mailBody
message.BodyParts.Add(textBodyPart)
attment = attment.Replace("W:\", "\\windream\objects\")
If attment <> String.Empty Then
If System.IO.File.Exists(attment) Then
Dim attachment1 As New Attachment(attment)
Logger.Info($"working on attachment {attment.ToString}...")
Dim attachment1 As New Independentsoft.Email.Mime.Attachment(attment)
If attment.ToLower.EndsWith("pdf") Then
attachment1.ContentType = New ContentType("application", "pdf")
attachment1.ContentType = New Independentsoft.Email.Mime.ContentType("application", "pdf")
ElseIf attment.ToLower.EndsWith("jpg") Then
attachment1.ContentType = New ContentType("application", "jpg")
attachment1.ContentType = New Independentsoft.Email.Mime.ContentType("application", "jpg")
ElseIf attment.ToLower.EndsWith("docx") Then
attachment1.ContentType = New ContentType("application", "MS-word")
attachment1.ContentType = New Independentsoft.Email.Mime.ContentType("application", "MS-word")
End If
message.BodyParts.Add(attachment1)
Else
Logger.Warn($"Attachment {attment.ToString} is not existing!")
Logger.Warn($"Attachment {attment.ToString} is not existing - Mail won't be send!")
Return False
End If
End If
Dim client As SmtpClient
Dim client As Smtp.SmtpClient
Try
client = New SmtpClient(mailsmtp, mailport)
client = New Smtp.SmtpClient(mailsmtp, mailport)
Catch ex As Exception
Logger.Warn("clsEmail.Create Client: " & ex.Message)
_error = True

View File

@@ -44,7 +44,7 @@ Public Class clsJob_Work
Logger.Warn("PWPlain is Nothing - Could not decrypt passwort 44")
Return False
End If
If _mail.Email_Send_Independentsoft(Email_subject, Email_Body, Email_receipiants, oMAILFROM, oMAILSMTP, oMAIL_PORT, oMAIL_USER, oMAIL_USER_PW, oMAIL_AUTH_TYPE, Attachment_Filename) = True Then
If _mail.Email_Send(Email_subject, Email_Body, Email_receipiants, oMAILFROM, oMAILSMTP, oMAIL_PORT, oMAIL_USER, oMAIL_USER_PW, oMAIL_AUTH_TYPE, Attachment_Filename) = True Then
Return True
Else
Logger.Warn("Email_Send_Independentsoft was not successfull!")

View File

@@ -128,6 +128,7 @@ Public Class clsProfil
Logger.Info($"Working on profile '{_Profilname}'")
clsCURRENT.DT_TBDD_EMAIL = _database.Return_Datatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
clsCURRENT.PROFILE_HandledFiles = Nothing
clsCURRENT.EXPORTED_FILENAME = ""
Logger.Debug("Start RUN of profile '" & _Profilname & "'")
'den Durchlaufszeitpunkt speichern
If File.Exists(_profwdSuche) = False Then
@@ -160,7 +161,11 @@ Public Class clsProfil
Dim FileJobSuccessful As Boolean = False
Dim CountExportedDoc As Integer = 0
clsCURRENT.PROFILE_HandledFiles = Nothing
Dim oFileRunNo As String
Dim oCountDocs As Integer = 0
For Each WMdok As WMObject In windreamSucheErgebnisse
oCountDocs += 1
oFileRunNo = "#DocRun" & oCountDocs.ToString
For Each DR_PR_JB As DataRow In DT_PROFIL_JOB.Rows
Select Case DR_PR_JB.Item("JOB_TYP").ToString.ToUpper
Case "Create Mail Attachment".ToUpper
@@ -178,6 +183,15 @@ Public Class clsProfil
If Not IsNothing(clsCURRENT.DT_TBDD_EMAIL) And clsCURRENT.DT_TBDD_EMAIL.Rows.Count >= 1 Then
Dim oAttachment = clsCURRENT.WDLAUFWERK & ":" & WMdok.aPath
If _dateiverarbeitung.Export_WMFile2HDD(WMdok, Path.GetTempPath()) = True Then
oAttachment = clsCURRENT.EXPORTED_FILENAME
Else
Logger.Warn($"Could not create a tempfile...")
FileJobSuccessful = False
Return False
End If
Dim MAILFROM As String = ""
Dim MAILSMTP As String = ""
@@ -201,16 +215,10 @@ Public Class clsProfil
Dim PWPlain = wrapper.DecryptData(MAIL_USER_PW)
If Not IsNothing(PWPlain) Then
If PWPlain <> "" Then
MAIL_USER_PW = PWPlain
Else
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort181")
Return False
End If
Else
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort188")
Logger.Warn("PWPlain is Nothing - Could not decrypt passwort188")
Return False
End If
@@ -222,32 +230,34 @@ Public Class clsProfil
Email_Betreff = _dateiverarbeitung.REGEX_REPLACE(WMdok, Email_Betreff)
Email_Body = _dateiverarbeitung.REGEX_REPLACE(WMdok, Email_Body)
If _email.Email_Send_Independentsoft(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTH_TYPE, oAttachment) = True Then
If _email.Email_Send(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTH_TYPE, oAttachment) = True Then
FileJobSuccessful = True
Else
Logger.Warn("Email_Send_Independentsoft was not successfull!")
Logger.Warn($"{oFileRunNo} Email_Send_Independentsoft 1 was not successfull!")
FileJobSuccessful = False
End If
Else
Logger.Warn("DT_TBDD_EMAIL is nothing or contains no rows")
Logger.Warn($"{oFileRunNo} DT_TBDD_EMAIL is nothing or contains no rows")
Return False
End If
Case "Export HDD".ToUpper
Logger.Info("JobType: Case Export HDD")
Logger.Info($"{oFileRunNo} JobType: Case Export HDD")
'Für jedes Dokument in der Windream-Ergebnisliste
'For Each dok As WMObject In windreamSucheErgebnisse
' aktuelles Dokument zum Export bereitstellen
clsCURRENT.EXPORTED_FILENAME = ""
If _dateiverarbeitung.Export_File(WMdok, DR_PR_JB.Item("STRING1")) = True Then
If _dateiverarbeitung.Export_WMFile2HDD(WMdok, DR_PR_JB.Item("STRING1")) = True Then
ReDim Preserve clsCURRENT.PROFILE_HandledFiles(CountExportedDoc)
clsCURRENT.PROFILE_HandledFiles(CountExportedDoc) = clsCURRENT.EXPORTED_FILENAME
CountExportedDoc += 1
FileJobSuccessful = True
Logger.Info($"{oFileRunNo} Export HDD completed!")
End If
'Next
Case "BNS json Download".ToUpper
Logger.Info("JobType: BNS json Download")
Logger.Info($"{oFileRunNo} JobType: BNS json Download")
FileJobSuccessful = _dateiverarbeitung.BNSjsonDownload(WMdok, DR_PR_JB.Item("STRING1"), DR_PR_JB.Item("STRING2"))
'Case "Send to printer".ToUpper
' Logger.Info("JobType: Send to printer")
@@ -305,9 +315,26 @@ Public Class clsProfil
'Für jeden File-Job
For Each DR_PR_FILE_JOB As DataRow In DT_PROFIL_FILE_JOB.Rows
If FileJobSuccessful = False Then
Logger.Info("AUSSTIEG FOR SCHLEIFE cause FileJobSuccessful = False...")
Logger.Info($"{oFileRunNo} AUSSTIEG FOR SCHLEIFE cause FileJobSuccessful = False...")
Exit For
End If
If DR_PR_FILE_JOB.Item("STRING2").ToString.Contains("EXPORTED_FILENAME") Then
If clsCURRENT.EXPORTED_FILENAME = "" Then
Logger.Warn($"{oFileRunNo} clsCURRENT.EXPORTED_FILENAME Is empty! So FileJobSuccessful will be set to FALSE")
FileJobSuccessful = False
Continue For
Else
If File.Exists(clsCURRENT.EXPORTED_FILENAME) = False Then
Logger.Warn($"{oFileRunNo} clsCURRENT.EXPORTED_FILENAME [{clsCURRENT.EXPORTED_FILENAME}] not existing! So FileJobSuccessful will be set to FALSE")
FileJobSuccessful = False
Continue For
Else
Logger.Debug($"{oFileRunNo} clsCURRENT.EXPORTED_FILENAME [{clsCURRENT.EXPORTED_FILENAME}] exists!")
End If
End If
End If
Select Case DR_PR_FILE_JOB.Item("TYP").ToString.ToLower
Case "Set Index".ToLower
Try
@@ -319,17 +346,17 @@ Public Class clsProfil
idxvalue = idxvalue.Replace("[%DATETIME]", Now.ToString)
End If
idxvalue = _dateiverarbeitung.REGEX_REPLACE(WMdok, idxvalue)
Logger.Debug($"Index '{idxName}' shall be set with value '{idxvalue}'")
Logger.Debug($"{oFileRunNo} Index '{idxName}' shall be set with value '{idxvalue}'")
Dim arrIndex() As String
ReDim Preserve arrIndex(0)
arrIndex(0) = idxName
Logger.Debug("...nach arrIndex")
Logger.Debug($"{oFileRunNo} ...nach arrIndex")
Dim arrValue() As String
Dim aktvalue As Object
aktvalue = WMdok.GetVariableValue(idxName)
Logger.Debug("...nach aktValue zuweisen..")
Logger.Debug($"{oFileRunNo} ...nach aktValue zuweisen..")
Dim wmtype = clsWindream_allgemein.GetTypeOfIndexAsIntByName(idxName)
Dim is_vektor As Boolean = False
Select Case wmtype
@@ -372,9 +399,10 @@ Public Class clsProfil
' 07.01.2019: Weitere Jobs bei Fehler in RunIndexing überspringen
If oErrorOccurred = True Then
FileJobSuccessful = False
End If
Else
Logger.Warn("arrValue is nothing - keine Indexierung")
Logger.Warn($"{oFileRunNo} arrValue is nothing - keine Indexierung")
End If
Catch ex As Exception
@@ -382,14 +410,14 @@ Public Class clsProfil
'clsLogger.AddError("Unvorhergesehener Fehler: " & ex.Message, "clsProfil.Profil_Durchlauf(SetIndex)")
End Try
Case "Rename File with windream Index".ToLower
Logger.Debug("Exportierte Datei soll nach Indexvorgaben umbenannt werden...")
Logger.Debug($"{oFileRunNo} Exportierte Datei soll nach Indexvorgaben umbenannt werden...")
_dateiverarbeitung.Rename_File(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
Case "Rename File with WMVector (only one)".ToLower
Logger.Debug("Exportierte Datei soll nach VektorIndexvorgaben umbenannt werden...")
Logger.Debug($"{oFileRunNo} Exportierte Datei soll nach VektorIndexvorgaben umbenannt werden...")
_dateiverarbeitung.Rename_File_Vektor(WMdok, DR_PR_FILE_JOB.Item("STRING1").ToString)
Case "Execute Oracle Command".ToLower
Try
Logger.Debug("Execute Oracle Command.......")
Logger.Debug($"{oFileRunNo} Execute Oracle Command.......")
Dim oracleconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim oracleCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
FileJobSuccessful = _dateiverarbeitung.RUN_ORACLE_COMMAND(WMdok, oracleconnectionstring, oracleCommandRAW)
@@ -401,7 +429,7 @@ Public Class clsProfil
Try
Dim MSSQLconnectionstring = DR_PR_FILE_JOB.Item("STRING1").ToString
Dim MSSQLCommandRAW = DR_PR_FILE_JOB.Item("STRING2").ToString
Logger.Debug("Execute MSSQL Command.......")
Logger.Debug($"{oFileRunNo} Execute MSSQL Command.......")
FileJobSuccessful = _dateiverarbeitung.RUN_MSSQL_COMMAND(WMdok, MSSQLconnectionstring, MSSQLCommandRAW)
Catch ex As Exception
Logger.Error(ex)
@@ -426,8 +454,8 @@ Public Class clsProfil
Logger.Debug("pdftk location: " & pdftk)
clsCURRENT.CONCATTED_FILE = DR_PR_JB.Item("STRING1")
Logger.Debug("CONCATTED_FILE location: " & clsCURRENT.CONCATTED_FILE)
Dim deleteJaNein = DR_PR_JB.Item("STRING2").ToString.ToUpper
Logger.Debug("deleteJaNein: " & deleteJaNein.ToString)
Dim oDeleteResultFile = DR_PR_JB.Item("STRING2").ToString.ToUpper
Logger.Debug("deleteJaNein: " & oDeleteResultFile.ToString)
If File.Exists(pdftk) Then
If File.Exists(clsCURRENT.CONCATTED_FILE) Then
Try
@@ -496,10 +524,11 @@ Public Class clsProfil
Loop
sw.Stop()
If deleteJaNein = "JA" Then
If oDeleteResultFile = "JA" Then
For Each str As String In clsCURRENT.PROFILE_HandledFiles
Try
File.Delete(str)
Logger.Debug($"Deleted file [{str}]!")
Catch ex As Exception
Logger.Error(ex)
End Try
@@ -562,10 +591,11 @@ Public Class clsProfil
Return False
End If
If _email.Email_Send_Independentsoft(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTH_TYPE, clsCURRENT.CONCATTED_FILE) = True Then
If _email.Email_Send(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTH_TYPE, clsCURRENT.CONCATTED_FILE) = True Then
FileJobSuccessful = True
Else
Logger.Warn("Email_Send_Independentsoft was not successfull!")
Logger.Warn("Email_Send_Independentsoft 2 was not successfull!")
FileJobSuccessful = False
End If
@@ -581,10 +611,10 @@ Public Class clsProfil
Case "Send to printer".ToUpper
Logger.Info("Working on CASE Send to printer.... ")
Dim printername = DR_PR_JB.Item("STRING1")
For Each str As String In clsCURRENT.PROFILE_HandledFiles
For Each oFileString As String In clsCURRENT.PROFILE_HandledFiles
Try
Dim myproc As Process = New Process()
myproc.StartInfo.FileName = """" & str & """"
myproc.StartInfo.FileName = """" & oFileString & """"
myproc.StartInfo.Verb = "printto"
myproc.StartInfo.Arguments = printername
myproc.StartInfo.UseShellExecute = True
@@ -605,9 +635,10 @@ Public Class clsProfil
FileJobSuccessful = True
sw.Stop()
' myproc.Kill()
File.Delete(str)
File.Delete(oFileString)
Logger.Debug($"Deleted oFileString [{oFileString}]!")
Catch ex As Exception
Logger.Warn("Could not print (printto) file: " & str)
Logger.Warn("Could not print (printto) file: " & oFileString)
Logger.Error(ex)
End Try
Next

View File

@@ -43,7 +43,7 @@ Public Class clsWindream_allgemein
' wenn ein Fehler bei der Initialisierung auftrat
If Not Init() Then
' Nachricht ausgeben
Logger.Warn("Es trat ein Fehler bei der Initialisierung der Klasse windream auf. Bitte prüfen Sie ob der windream-Server aktiv ist und alle Dienste gestartet sind")
Logger.Warn("Error while initializing WM-Class!!")
' das Programm "abschießen"
Process.GetCurrentProcess.Kill()
End If
@@ -464,7 +464,7 @@ Public Class clsWindream_allgemein
Return oSearch.execute
Catch ex As Exception
Logger.Error(ex)
Logger.Warn($"WM-SEARCH ({wdfLocation})")
Logger.Warn($"WM-SEARCH in Exception ({wdfLocation})")
Return Nothing
End Try
@@ -552,10 +552,17 @@ Public Class clsWindream_allgemein
If WMObjects.Count > 0 Then
For Each dok As WMObject In WMObjects
Dim oPath As String = dok.aPath
Dim oDOC_ID = dok.GetVariableValue(NameIndexDocID)
Dim oCreated = dok.GetVariableValue(NameIndexCreated)
Logger.Debug($"Adding DocInfo {oDOC_ID.ToString}|{oPath}|{oCreated}")
Logger.Debug($"Adding DocInfo {oDOC_ID.ToString}|{dok.aPath}|{oCreated}")
Dim oPath As String
If dok.aPath.StartsWith("\") Then
oPath = dok.aPath.Substring(1, dok.aPath.Length - 1)
Else
oPath = dok.aPath
End If
dtresult.Rows.Add(oDOC_ID, oPath, oCreated)
Next
dtresult.AcceptChanges()
@@ -563,11 +570,33 @@ Public Class clsWindream_allgemein
Return dtresult
Catch ex As Exception
Logger.Error(ex)
Logger.Warn($"WM-SEARCH ({wdfLocation})")
Logger.Warn($"WM-SEARCH from GetSearchDocumentsDT ({wdfLocation})")
Return dtresult
End Try
End Function
Public Function TestFileExists(Path As String) As Boolean
Return TestObjectExists(GetNormalizedPath(Path), WMEntityDocument)
End Function
Private Function TestObjectExists(ObjectName As String, ObjectType As WMEntity) As Boolean
Try
Dim oObjectId = 0
Dim oObjectDbId = 0
Return CURRENToWMSession.WMObjectExists(ObjectType, ObjectName, oObjectId, oObjectDbId)
Catch ex As Exception
Logger.Error(ex, "Error while checking existence of WMObject {0} of type {1}", ObjectName, ObjectType.ToString)
Return False
End Try
End Function
Private Function GetNormalizedPath(Path As String) As String
Dim oNormalizedPath = Path
If Not Path.StartsWith("\") And Path.ToUpper().StartsWith(CURRENT_WMDriveLetter.ToUpper) Then
oNormalizedPath = Path.Substring(2)
End If
Return oNormalizedPath
End Function
#End Region
End Class

View File

@@ -6,6 +6,9 @@
</sectionGroup>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="DDWDResultHandler.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<connectionStrings />
<startup>
@@ -13,11 +16,11 @@
</startup>
<applicationSettings>
<DDWDResultHandler.My.MySettings>
<setting name="SQLSERVER_CS" serializeAs="String">
<setting name="SQLSERVER_CS_RH" serializeAs="String">
<value>Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_RENOLIT;Persist Security Info=True;User ID=sa;Password=dd</value>
</setting>
<setting name="SQLSERVER_CS_PMRefresh" serializeAs="String">
<value>Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</value>
<value />
</setting>
</DDWDResultHandler.My.MySettings>
</applicationSettings>
@@ -40,4 +43,11 @@
</dependentAssembly>
</assemblyBinding>
</runtime>
<userSettings>
<DDWDResultHandler.My.MySettings>
<setting name="PMREFRESH_INTERVALL" serializeAs="String">
<value />
</setting>
</DDWDResultHandler.My.MySettings>
</userSettings>
</configuration>

View File

@@ -9,7 +9,7 @@ Public Class DDWDResultHandler
Private _database As DD_WMResulthandler.clsDatabase
Private _profil As clsProfil
Public Shared threadRunner As BackgroundWorker
Public Shared threadResultHandler As BackgroundWorker
Public Shared threadPMRefresh As BackgroundWorker
Private Logger As Logger
@@ -33,14 +33,6 @@ Public Class DDWDResultHandler
' Code zum Starten des Dienstes hier einfügen. Diese Methode sollte Vorgänge
' ausführen, damit der Dienst gestartet werden kann.
'EventLog1.WriteEntry("Dienst 'DD windream Result Handler' gestartet")
Try
If Not System.Diagnostics.EventLog.SourceExists("DDWMResultHandler") Then
System.Diagnostics.EventLog.CreateEventSource("DDWMResultHandler", "DigitalData Log")
End If
Catch ex As Exception
EventLog.WriteEntry("DDWMResultHandler", "ERROR in Creating source:" & ex.ToString(), EventLogEntryType.Error)
End Try
Try
Try
MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
@@ -52,12 +44,9 @@ Public Class DDWDResultHandler
End Try
If My.Settings.SQLSERVER_CS = String.Empty Then
Logger.Warn("Achtung: Es wurde noch kein Datenbank-ConnectionString hinterlegt.")
Else
If _database.Init(My.Settings.SQLSERVER_CS, True) = False Then
Logger.Warn("Achtung: Es konnte keine Verbindung zur Datenbank '" & My.Settings.SQLSERVER_CS & "' hergestellt werden!")
Else
'If _database.Init(My.Settings.SQLSERVER_CS_RH, True) = False Then
' Logger.Warn("Achtung: Es konnte keine Verbindung zur Datenbank '" & My.Settings.SQLSERVER_CS_RH & "' hergestellt werden!")
' Else
If clsCURRENT.LOG_ERRORS_ONLY = False Then
MyLogger.Debug = True
@@ -66,11 +55,11 @@ Public Class DDWDResultHandler
End If
oFirstRun = True
' '#Thread für Durchlauf generieren
DDWDResultHandler.threadRunner = New BackgroundWorker()
DDWDResultHandler.threadRunner.WorkerReportsProgress = True
DDWDResultHandler.threadRunner.WorkerSupportsCancellation = True
AddHandler threadRunner.DoWork, AddressOf RUN_THREAD
AddHandler threadRunner.RunWorkerCompleted, AddressOf Thread_Completed
DDWDResultHandler.threadResultHandler = New BackgroundWorker()
DDWDResultHandler.threadResultHandler.WorkerReportsProgress = True
DDWDResultHandler.threadResultHandler.WorkerSupportsCancellation = True
AddHandler threadResultHandler.DoWork, AddressOf RUN_RESULTHANDLER
AddHandler threadResultHandler.RunWorkerCompleted, AddressOf Thread_Completed
' '### Den Timer generieren
Dim Timer_Durchlauf As New System.Timers.Timer()
@@ -78,7 +67,6 @@ Public Class DDWDResultHandler
AddHandler Timer_Durchlauf.Elapsed, AddressOf Thread_Run
' Set the Interval
Timer_Durchlauf.Interval = 60000
'ClassLogger.Add("Timer - Intervall: " & clsSQLITE.konf_intervall & " Minuten", False)
Timer_Durchlauf.Enabled = True
Logger.Debug("Timer gestartet")
' Und den Durchlauf das erste Mal starten
@@ -96,15 +84,22 @@ Public Class DDWDResultHandler
'Das Event hinterlegen welches bei "Tick" ausgelöst wird
AddHandler TimerPMRefresh.Elapsed, AddressOf ThreadPMRefreshRun
' Und den Durchlauf das erste Mal starten
threadRunner.RunWorkerAsync()
' Set the Interval
TimerPMRefresh.Interval = 120000 '2 minutes
'ClassLogger.Add("Timer - Intervall: " & clsSQLITE.konf_intervall & " Minuten", False)
TimerPMRefresh.Enabled = True
'End If
If My.Settings.SQLSERVER_CS_RH = "" And My.Settings.SQLSERVER_CS_PMRefresh <> "" Then
Logger.Info("Thread PM Refresh will now be started for initial Run as Resulthandler's ConnString is empty...")
threadPMRefresh.RunWorkerAsync()
Else
If My.Settings.SQLSERVER_CS_RH <> "" Then
Logger.Info("Thread ResultHandler will now be started for initial Run..")
threadResultHandler.RunWorkerAsync()
Logger.Info("Thread PM Refresh will be started after 2mins for initial Run..")
End If
End If
Catch ex As Exception
EventLog.WriteEntry("DDWMResultHandler", "Unexpected error in OnStart: " & ex.ToString(), EventLogEntryType.Error)
Logger.Error(ex)
@@ -112,8 +107,8 @@ Public Class DDWDResultHandler
End Sub
Public Sub Thread_Run()
If Not threadRunner.IsBusy Then
threadRunner.RunWorkerAsync()
If Not threadResultHandler.IsBusy Then
threadResultHandler.RunWorkerAsync()
End If
End Sub
Public Sub ThreadPMRefreshRun()
@@ -127,20 +122,24 @@ Public Class DDWDResultHandler
Protected Overrides Sub OnStop()
Try
' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen.
Logger.Warn("WindreamResultHandler wurde gestoppt!")
'LoggerPMR.Warn("WindreamResultHandler has been stopped!")
_database.Execute_non_Query("Update TBWMRH_PROFIL SET Running = 1 WHERE GUID = " & _PROFIL_ID)
Logger.Info("WindreamResultHandler wurde gestoppt!")
Catch ex As Exception
EventLog.WriteEntry("DDWMResultHandler", "Unexpected error in OnStop: " & ex.ToString(), EventLogEntryType.Error)
End Try
End Sub
Public Sub RUN_THREAD(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
Public Sub RUN_RESULTHANDLER(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
Try
MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
Logger = MyLogger.GetLogger()
_database = New clsDatabase(MyLogger)
If My.Settings.SQLSERVER_CS_RH = "" Then
Logger.Debug("RESULT HANDLER ConString not configured... No Run")
Exit Sub
End If
Dim notcompleted As Boolean = False
'clsLogger.Init(My.Application.Info.DirectoryPath & "\Log", "_SERVICEResultHandler")
Logger.Debug("RUN_THREAD WMResulthandler started..")
@@ -148,9 +147,10 @@ Public Class DDWDResultHandler
_windream = New clsWindream_allgemein(MyLogger)
'windream initialisieren
If _windream.Init() = True Then
clsCURRENT.TEMP_FILES.Clear()
Logger.Debug("windream vollumfänglich initialisiert!")
'Zur sicherheit die DB nochmal initialiseren
If _database.Init(My.Settings.SQLSERVER_CS, True) = True Then
If _database.Init(My.Settings.SQLSERVER_CS_RH, True) = True Then
Dim DT As DataTable = _database.Return_Datatable("select * from TBWMRH_KONFIGURATION where GUID = 1")
If DT.Rows.Count = 1 Then
clsCURRENT.DT_TBWMRH_KONFIGURATION = DT
@@ -188,6 +188,17 @@ Public Class DDWDResultHandler
Logger.Info("Keine aktiven Profile WMResulthandler vorhanden")
notcompleted = True
End If
Try
For Each _file In clsCURRENT.TEMP_FILES
'Dim oFile As New FileInfo(_file)
'If (DateTime.UtcNow - oFile.CreationTimeUtc > TimeSpan.FromDays(1)) Then
System.IO.File.Delete(_file)
'End If
Next
Catch ex As Exception
End Try
_database.Execute_non_Query("UPDATE TBWMRH_KONFIGURATION SET LAST_TICK = GETDATE() WHERE GUID = 1")
If oFirstRun = True Then
oFirstRun = False
@@ -275,8 +286,8 @@ Public Class DDWDResultHandler
End Sub
Public Function Thread_Abbrechen()
Try
If DDWDResultHandler.threadRunner.IsBusy Then
DDWDResultHandler.threadRunner.CancelAsync()
If DDWDResultHandler.threadResultHandler.IsBusy Then
DDWDResultHandler.threadResultHandler.CancelAsync()
End If
Return True
Catch ex As Exception

View File

@@ -58,21 +58,32 @@ Namespace My
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_RENOLIT;Persist Security In"& _
"fo=True;User ID=sa;Password=dd")> _
Public ReadOnly Property SQLSERVER_CS() As String
Public ReadOnly Property SQLSERVER_CS_RH() As String
Get
Return CType(Me("SQLSERVER_CS"),String)
Return CType(Me("SQLSERVER_CS_RH"),String)
End Get
End Property
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_TEST;Persist Security Info="& _
"True;User ID=sa;Password=dd")> _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public ReadOnly Property SQLSERVER_CS_PMRefresh() As String
Get
Return CType(Me("SQLSERVER_CS_PMRefresh"),String)
End Get
End Property
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("")> _
Public Property PMREFRESH_INTERVALL() As String
Get
Return CType(Me("PMREFRESH_INTERVALL"),String)
End Get
Set
Me("PMREFRESH_INTERVALL") = value
End Set
End Property
End Class
End Namespace

View File

@@ -2,11 +2,11 @@
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="My" GeneratedClassName="MySettings" UseMySettingsClassName="true">
<Profiles />
<Settings>
<Setting Name="SQLSERVER_CS" Type="System.String" Scope="Application">
<Setting Name="SQLSERVER_CS_RH" Type="System.String" Scope="Application">
<Value Profile="(Default)">Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_RENOLIT;Persist Security Info=True;User ID=sa;Password=dd</Value>
</Setting>
<Setting Name="SQLSERVER_CS_PMRefresh" Type="System.String" Scope="Application">
<Value Profile="(Default)">Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</Value>
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@@ -9,7 +9,7 @@ Public Class clsPMRefresh
Private oConfigschedule
Private oConfigIDXName_DocID
Private oConfigIDXName_Created
Private oConfigWMDrive
'Private oConfigWMDrive
Private oConfigLOGERRONLY As Boolean
Sub New(theLogger As LogConfig)
MyLogger = theLogger
@@ -31,7 +31,7 @@ Public Class clsPMRefresh
oConfigschedule = oDTPM_CONFIG.Rows(0).Item("SERVICE_SCHEDULE").ToString
oConfigIDXName_DocID = oDTPM_CONFIG.Rows(0).Item("SERVICE_IDXNAME_DOCID").ToString
oConfigIDXName_Created = oDTPM_CONFIG.Rows(0).Item("SERVICE_IDXNAME_CREATED").ToString
oConfigWMDrive = oDTPM_CONFIG.Rows(0).Item("SERVICE_WMDRIVE_LETTER").ToString
'oConfigWMDrive = oDTPM_CONFIG.Rows(0).Item("SERVICE_WMDRIVE_LETTER").ToString
oConfigLOGERRONLY = oDTPM_CONFIG.Rows(0).Item("SERVICE_LOG_ERRORS_ONLY")
Dim oSplit As String()
oSplit = oConfigschedule.Split(";")
@@ -125,7 +125,6 @@ Public Class clsPMRefresh
'---------------------- für jedes Profil die Dateien überprüfen ------------------------
For Each Profile_Row In oDTPROFILES.Rows
oStep = "4a"
Console.WriteLine(">> Dateien für Profil '" & Profile_Row.Item("NAME") & "' eintragen")
Logger.Debug("Add info for profile '" & Profile_Row.Item("NAME") & "'")
Dim oPROFILE_ID As Integer = Profile_Row.Item("GUID")
WD_Search = Nothing
@@ -139,6 +138,7 @@ Public Class clsPMRefresh
oStep = "4d"
Dim oDocCount As Integer = 0
If IsNothing(oDTWM_Results) Then
Logger.Warn("ATTENTION: oDTWM_Results is NOTHING")
Continue For
End If
'Die aktuellen Files auf refreshed = 0 setzten
@@ -151,7 +151,7 @@ Public Class clsPMRefresh
Dim Profil_Docs(oDTWM_Results.Rows.Count - 1, 2) As String
For Each oRow As DataRow In oDTWM_Results.Rows
Dim oDOC_ID = oRow.Item(0)
Dim oWMFilePath As String = oConfigWMDrive & ":" & oRow.Item(1)
Dim oWMFilePath As String = oRow.Item(1)
Profil_Docs(oDocCount, 0) = oRow.Item(0)
Profil_Docs(oDocCount, 1) = oWMFilePath
'------DMS Erstell-Datum holen --------
@@ -215,6 +215,8 @@ Public Class clsPMRefresh
Else
Logger.Warn("ATTENTION: Refresh could not be executed " & oSQLCommand)
End If
Else
Logger.Warn("ATTENTION: WM-Search is nothing.. ")
End If
Next
oStep = "4i"

View File

@@ -228,6 +228,9 @@ Partial Class frmMain
Me.LOG_ERRORS_ONLYCheckBox = New System.Windows.Forms.CheckBox()
Me.LAST_TICKTextBox = New System.Windows.Forms.TextBox()
Me.TabPage4 = New System.Windows.Forms.TabPage()
Me.Button6 = New System.Windows.Forms.Button()
Me.txtAttachment = New System.Windows.Forms.TextBox()
Me.Label6 = New System.Windows.Forms.Label()
Me.Button5 = New System.Windows.Forms.Button()
Me.AUTH_TYPEComboBox = New System.Windows.Forms.ComboBox()
Me.TBDD_EMAIL_ACCOUNTBindingSource = New System.Windows.Forms.BindingSource(Me.components)
@@ -2360,6 +2363,9 @@ Partial Class frmMain
'
'TabPage4
'
Me.TabPage4.Controls.Add(Me.Button6)
Me.TabPage4.Controls.Add(Me.txtAttachment)
Me.TabPage4.Controls.Add(Me.Label6)
Me.TabPage4.Controls.Add(Me.Button5)
Me.TabPage4.Controls.Add(AUTH_TYPELabel)
Me.TabPage4.Controls.Add(Me.AUTH_TYPEComboBox)
@@ -2401,14 +2407,40 @@ Partial Class frmMain
Me.TabPage4.Text = "Email"
Me.TabPage4.UseVisualStyleBackColor = True
'
'Button6
'
Me.Button6.Location = New System.Drawing.Point(872, 347)
Me.Button6.Name = "Button6"
Me.Button6.Size = New System.Drawing.Size(30, 23)
Me.Button6.TabIndex = 38
Me.Button6.Text = "..."
Me.Button6.UseVisualStyleBackColor = True
'
'txtAttachment
'
Me.txtAttachment.Location = New System.Drawing.Point(395, 347)
Me.txtAttachment.Name = "txtAttachment"
Me.txtAttachment.Size = New System.Drawing.Size(471, 22)
Me.txtAttachment.TabIndex = 37
'
'Label6
'
Me.Label6.AutoSize = True
Me.Label6.Location = New System.Drawing.Point(392, 331)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(91, 13)
Me.Label6.TabIndex = 36
Me.Label6.Text = "Test Attachment:"
'
'Button5
'
Me.Button5.Location = New System.Drawing.Point(294, 381)
Me.Button5.Name = "Button5"
Me.Button5.Size = New System.Drawing.Size(75, 23)
Me.Button5.Size = New System.Drawing.Size(95, 23)
Me.Button5.TabIndex = 35
Me.Button5.Text = "Button5"
Me.Button5.Text = "Test Email(RAW)"
Me.Button5.UseVisualStyleBackColor = True
Me.Button5.Visible = False
'
'AUTH_TYPEComboBox
'
@@ -3034,4 +3066,7 @@ Partial Class frmMain
Friend WithEvents EncryptToolStripMenuItem As ToolStripMenuItem
Friend WithEvents Button5 As Button
Friend WithEvents TextBox1 As TextBox
Friend WithEvents txtAttachment As TextBox
Friend WithEvents Label6 As Label
Friend WithEvents Button6 As Button
End Class

View File

@@ -260,7 +260,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAI
DAAAAk1TRnQBSQFMAgEBAwEAAVABAwFQAQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
DAAAAk1TRnQBSQFMAgEBAwEAAXgBAwF4AQMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA

View File

@@ -826,17 +826,44 @@ Public Class frmMain
Dim PWPlain = wrapper.DecryptData(EMAIL_PWTextBox.Text)
Dim sClient = New SmtpClient(EMAIL_SMTPTextBox.Text)
Dim mymesssage As New MailMessage
sClient.Port = 587
sClient.Port = PORTTextBox.Text
If AUTH_TYPEComboBox.Text = "SSL" Then
sClient.EnableSsl = True
Else
sClient.EnableSsl = False
End If
sClient.Credentials = New NetworkCredential(EMAIL_USERTextBox.Text, PWPlain)
sClient.UseDefaultCredentials = False
mymesssage.Body = "Test"
mymesssage.From = New MailAddress(EMAIL_FROMTextBox.Text)
mymesssage.Subject = "TestSubject"
mymesssage.CC.Add(New MailAddress(txtTestmail.Text))
sClient.Send(mymesssage)
Catch ex As Exception
mymesssage.Body = $"This is the body (text will be replaced within profile)! <br> mailsmtp: {EMAIL_SMTPTextBox.Text} <br> mailport: {PORTTextBox.Text} <br> mailUser: {EMAIL_USERTextBox.Text} <br> mailPW: XXXX <br> AUTH_TYPE: {AUTH_TYPEComboBox.Text}"
Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(mymesssage.Body)
htmlView.ContentType = New System.Net.Mime.ContentType("text/html")
mymesssage.AlternateViews.Add(htmlView)
mymesssage.From = New MailAddress(EMAIL_FROMTextBox.Text)
mymesssage.Subject = "TestSubject from RAW Method"
mymesssage.To.Add(New MailAddress(txtTestmail.Text))
If txtAttachment.Text <> String.Empty Then
Dim oAttment As String = txtAttachment.Text.Replace("W:\", "\\windream\objects\")
If System.IO.File.Exists(oAttment) Then
Logger.Info($"working on attachment {oAttment}...")
Dim oAttachment As New System.Net.Mail.Attachment(oAttment)
mymesssage.Attachments.Add(oAttachment)
Else
MsgBox($"Attachment {oAttment.ToString} is not existing - Mail won't be send!")
Exit Sub
End If
End If
sClient.Send(mymesssage)
MsgBox("Email has been sent!")
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
@@ -851,9 +878,9 @@ Public Class frmMain
Dim PWPlain = wrapper.DecryptData(EMAIL_PWTextBox.Text)
If _email.Testmail("Testmail DD Windream-ResultHandler", "This is the body (text will be replaced within profile)", txtTestmail.Text,
EMAIL_FROMTextBox.Text, EMAIL_SMTPTextBox.Text, PORTTextBox.Text, EMAIL_USERTextBox.Text, PWPlain, AUTH_TYPEComboBox.Text, "") = True Then
MsgBox("Email was send successfully.", MsgBoxStyle.Information)
If _email.Email_Send("Testmail from GUI WMResultHandler", "This is the body (text will be replaced within profile)", txtTestmail.Text,
EMAIL_FROMTextBox.Text, EMAIL_SMTPTextBox.Text, PORTTextBox.Text, EMAIL_USERTextBox.Text, PWPlain, AUTH_TYPEComboBox.Text, txtAttachment.Text, True) = True Then
MsgBox("Email(s) has/have been sent successfully.", MsgBoxStyle.Information)
Else
MsgBox("Could not send the testmail. Please check the log.", MsgBoxStyle.Exclamation)
End If
@@ -962,4 +989,18 @@ Public Class frmMain
Private Sub LOG_ERRORS_ONLYCheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles LOG_ERRORS_ONLYCheckBox.CheckedChanged
End Sub
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
Dim oFD As OpenFileDialog = New OpenFileDialog()
oFD.Title = "Get a test-attachment:"
'oFD.InitialDirectory = "C:\"
oFD.Filter = "All files (*.*)|*.*|All files (*.*)|*.*"
oFD.FilterIndex = 2
oFD.RestoreDirectory = True
If oFD.ShowDialog() = DialogResult.OK Then
txtAttachment.Text = oFD.FileName
End If
End Sub
End Class