diff --git a/EnvelopeGenerator.Service/App.config b/EnvelopeGenerator.Service/App.config
new file mode 100644
index 00000000..c5280b07
--- /dev/null
+++ b/EnvelopeGenerator.Service/App.config
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/EnvelopeGenerator.Service/Config.vb b/EnvelopeGenerator.Service/Config.vb
new file mode 100644
index 00000000..31e2bf4f
--- /dev/null
+++ b/EnvelopeGenerator.Service/Config.vb
@@ -0,0 +1,9 @@
+Imports DigitalData.Modules.Config.ConfigAttributes
+
+Public Class Config
+
+ Public Property ConnectionString As String = ""
+
+ Public Property Debug As Boolean = False
+ Public Property IntervalInMin As Integer = 1
+End Class
diff --git a/EnvelopeGenerator.Service/EnvelopeGenerator.Service.vbproj b/EnvelopeGenerator.Service/EnvelopeGenerator.Service.vbproj
new file mode 100644
index 00000000..54b8f039
--- /dev/null
+++ b/EnvelopeGenerator.Service/EnvelopeGenerator.Service.vbproj
@@ -0,0 +1,180 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {83ED2617-B398-4859-8F59-B38F8807E83E}
+ WinExe
+ EnvelopeGenerator.Service.Service
+ EnvelopeGenerator.Service
+ EnvelopeGenerator.Service
+ 512
+ Console
+ v4.6.2
+ true
+
+
+
+ AnyCPU
+ true
+ full
+ true
+ true
+ bin\Debug\
+ EnvelopeGenerator.Service.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ AnyCPU
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ EnvelopeGenerator.Service.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+
+ ..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll
+
+
+ ..\..\DDModules\Config\bin\Debug\DigitalData.Modules.Config.dll
+
+
+ False
+ ..\..\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll
+
+
+ False
+ ..\..\DDModules\Encryption\bin\Debug\DigitalData.Modules.Encryption.dll
+
+
+ False
+ ..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll
+
+
+ False
+ ..\..\DDModules\Messaging\bin\Debug\DigitalData.Modules.Messaging.dll
+
+
+ False
+ D:\ProgramFiles\GdPicture.NET 14\Redist\GdPicture.NET (.NET Framework 4.5)\GdPicture.NET.14.dll
+
+
+
+ ..\packages\Microsoft.Extensions.Logging.Abstractions.2.1.1\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll
+
+
+ ..\packages\NLog.5.0.5\lib\net46\NLog.dll
+
+
+ ..\packages\Quartz.3.8.0\lib\net462\Quartz.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Service.vb
+
+
+ Component
+
+
+ True
+ Application.myapp
+ True
+
+
+ ProjectInstaller.vb
+
+
+ Component
+
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+ ProjectInstaller.vb
+ Designer
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+ SettingsSingleFileGenerator
+ My
+ Settings.Designer.vb
+
+
+
+
+
+
+ {6ea0c51f-c2b1-4462-8198-3de0b32b74f8}
+ EnvelopeGenerator.Common
+
+
+
+
\ No newline at end of file
diff --git a/EnvelopeGenerator.Service/LogProvider.vb b/EnvelopeGenerator.Service/LogProvider.vb
new file mode 100644
index 00000000..2ecbe44f
--- /dev/null
+++ b/EnvelopeGenerator.Service/LogProvider.vb
@@ -0,0 +1,34 @@
+Imports Quartz.Logging
+
+Public Class LogProvider
+ Implements ILogProvider
+
+ Private ReadOnly Logger As DigitalData.Modules.Logging.Logger
+
+ Public Sub New(Logger As DigitalData.Modules.Logging.Logger)
+ MyBase.New()
+ Me.Logger = Logger
+ End Sub
+
+ Public Function OpenNestedContext(message As String) As IDisposable Implements ILogProvider.OpenNestedContext
+ Throw New NotImplementedException()
+ End Function
+
+ Public Function OpenMappedContext(key As String, value As Object, Optional destructure As Boolean = False) As IDisposable Implements ILogProvider.OpenMappedContext
+ Throw New NotImplementedException()
+ End Function
+
+ Private Function GetLogger(name As String) As Logger Implements ILogProvider.GetLogger
+ Return Function(level, func, exception, parameters)
+ If exception IsNot Nothing Then
+ Logger.Error(exception)
+ ElseIf level >= LogLevel.Debug AndAlso func IsNot Nothing Then
+ Logger.Debug(func(), parameters)
+ ElseIf level >= LogLevel.Info AndAlso func IsNot Nothing Then
+ Logger.Info(func(), parameters)
+ End If
+
+ Return True
+ End Function
+ End Function
+End Class
\ No newline at end of file
diff --git a/EnvelopeGenerator.Service/My Project/Application.Designer.vb b/EnvelopeGenerator.Service/My Project/Application.Designer.vb
new file mode 100644
index 00000000..8ab460ba
--- /dev/null
+++ b/EnvelopeGenerator.Service/My Project/Application.Designer.vb
@@ -0,0 +1,13 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
diff --git a/EnvelopeGenerator.Service/My Project/Application.myapp b/EnvelopeGenerator.Service/My Project/Application.myapp
new file mode 100644
index 00000000..602de37e
--- /dev/null
+++ b/EnvelopeGenerator.Service/My Project/Application.myapp
@@ -0,0 +1,10 @@
+
+
+ false
+ false
+ 0
+ true
+ 0
+ 3
+ true
+
diff --git a/EnvelopeGenerator.Service/My Project/AssemblyInfo.vb b/EnvelopeGenerator.Service/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..5f4fafd8
--- /dev/null
+++ b/EnvelopeGenerator.Service/My Project/AssemblyInfo.vb
@@ -0,0 +1,35 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' Allgemeine Informationen über eine Assembly werden über die folgenden
+' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+' die einer Assembly zugeordnet sind.
+
+' Werte der Assemblyattribute überprüfen
+
+
+
+
+
+
+
+
+
+
+'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
+
+
+' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+'
+' Hauptversion
+' Nebenversion
+' Buildnummer
+' Revision
+'
+' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
+' übernehmen, indem Sie "*" eingeben:
+'
+
+
+
diff --git a/EnvelopeGenerator.Service/My Project/Resources.Designer.vb b/EnvelopeGenerator.Service/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..b08dad5c
--- /dev/null
+++ b/EnvelopeGenerator.Service/My Project/Resources.Designer.vb
@@ -0,0 +1,63 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+Imports System
+
+Namespace My.Resources
+
+ 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
+ '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+ 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+ 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+ '''
+ ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ '''
+ _
+ Friend Module Resources
+
+ Private resourceMan As Global.System.Resources.ResourceManager
+
+ Private resourceCulture As Global.System.Globalization.CultureInfo
+
+ '''
+ ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ '''
+ _
+ Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
+ Get
+ If Object.ReferenceEquals(resourceMan, Nothing) Then
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("EnvelopeGenerator.Service.Resources", GetType(Resources).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+ ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
+ '''
+ _
+ Friend Property Culture() As Global.System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set
+ resourceCulture = value
+ End Set
+ End Property
+ End Module
+End Namespace
diff --git a/EnvelopeGenerator.Service/My Project/Resources.resx b/EnvelopeGenerator.Service/My Project/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/EnvelopeGenerator.Service/My Project/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/EnvelopeGenerator.Service/My Project/Settings.Designer.vb b/EnvelopeGenerator.Service/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..f904eda1
--- /dev/null
+++ b/EnvelopeGenerator.Service/My Project/Settings.Designer.vb
@@ -0,0 +1,73 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My
+
+ _
+ Partial Friend NotInheritable Class MySettings
+ Inherits Global.System.Configuration.ApplicationSettingsBase
+
+ Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
+
+#Region "Automatische My.Settings-Speicherfunktion"
+#If _MyType = "WindowsForms" Then
+ Private Shared addedHandler As Boolean
+
+ Private Shared addedHandlerLockObject As New Object
+
+ _
+ Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
+ If My.Application.SaveMySettingsOnExit Then
+ My.Settings.Save()
+ End If
+ End Sub
+#End If
+#End Region
+
+ Public Shared ReadOnly Property [Default]() As MySettings
+ Get
+
+#If _MyType = "WindowsForms" Then
+ If Not addedHandler Then
+ SyncLock addedHandlerLockObject
+ If Not addedHandler Then
+ AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
+ addedHandler = True
+ End If
+ End SyncLock
+ End If
+#End If
+ Return defaultInstance
+ End Get
+ End Property
+ End Class
+End Namespace
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.EnvelopeGenerator.Service.My.MySettings
+ Get
+ Return Global.EnvelopeGenerator.Service.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/EnvelopeGenerator.Service/My Project/Settings.settings b/EnvelopeGenerator.Service/My Project/Settings.settings
new file mode 100644
index 00000000..f7f176ac
--- /dev/null
+++ b/EnvelopeGenerator.Service/My Project/Settings.settings
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/EnvelopeGenerator.Service/ProjectInstaller.Designer.vb b/EnvelopeGenerator.Service/ProjectInstaller.Designer.vb
new file mode 100644
index 00000000..2d263240
--- /dev/null
+++ b/EnvelopeGenerator.Service/ProjectInstaller.Designer.vb
@@ -0,0 +1,47 @@
+ Partial Class ProjectInstaller
+ Inherits System.Configuration.Install.Installer
+
+ 'Installer überschreibt den Löschvorgang zum Bereinigen der Komponentenliste.
+ _
+ 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 Komponenten-Designer benötigt.
+ Private components As System.ComponentModel.IContainer
+
+ 'Hinweis: Die folgende Prozedur ist für den Komponenten-Designer erforderlich.
+ 'Das Bearbeiten ist mit dem Komponenten-Designer möglich.
+ 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
+ _
+ Private Sub InitializeComponent()
+ Me.ServiceProcessInstaller1 = New System.ServiceProcess.ServiceProcessInstaller()
+ Me.ServiceInstaller1 = New System.ServiceProcess.ServiceInstaller()
+ '
+ 'ServiceProcessInstaller1
+ '
+ Me.ServiceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalService
+ Me.ServiceProcessInstaller1.Password = Nothing
+ Me.ServiceProcessInstaller1.Username = Nothing
+ '
+ 'ServiceInstaller1
+ '
+ Me.ServiceInstaller1.Description = "Finalizes Documents for Envelope Generator"
+ Me.ServiceInstaller1.DisplayName = "Digital Data Envelope Generator Service"
+ Me.ServiceInstaller1.ServiceName = "DDEnvelopeGeneratorService"
+ '
+ 'ProjectInstaller
+ '
+ Me.Installers.AddRange(New System.Configuration.Install.Installer() {Me.ServiceProcessInstaller1, Me.ServiceInstaller1})
+
+ End Sub
+
+ Friend WithEvents ServiceProcessInstaller1 As ServiceProcess.ServiceProcessInstaller
+ Friend WithEvents ServiceInstaller1 As ServiceProcess.ServiceInstaller
+End Class
diff --git a/EnvelopeGenerator.Service/ProjectInstaller.resx b/EnvelopeGenerator.Service/ProjectInstaller.resx
new file mode 100644
index 00000000..e1b81e8f
--- /dev/null
+++ b/EnvelopeGenerator.Service/ProjectInstaller.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ 17, 56
+
+
+ 197, 17
+
+
+ False
+
+
\ No newline at end of file
diff --git a/EnvelopeGenerator.Service/ProjectInstaller.vb b/EnvelopeGenerator.Service/ProjectInstaller.vb
new file mode 100644
index 00000000..733dfc0c
--- /dev/null
+++ b/EnvelopeGenerator.Service/ProjectInstaller.vb
@@ -0,0 +1,16 @@
+Imports System.ComponentModel
+Imports System.Configuration.Install
+
+Public Class ProjectInstaller
+
+ Public Sub New()
+ MyBase.New()
+
+ 'Dieser Aufruf ist für den Komponenten-Designer erforderlich.
+ InitializeComponent()
+
+ 'Initialisierungscode nach dem Aufruf von InitializeComponent hinzufügen
+
+ End Sub
+
+End Class
diff --git a/EnvelopeGenerator.Service/Scheduler.vb b/EnvelopeGenerator.Service/Scheduler.vb
new file mode 100644
index 00000000..51e0429d
--- /dev/null
+++ b/EnvelopeGenerator.Service/Scheduler.vb
@@ -0,0 +1,68 @@
+Imports System.Collections.Specialized
+Imports DigitalData.Modules.Base
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Logging
+Imports EnvelopeGenerator.Common.Jobs
+Imports Quartz
+
+Public Class Scheduler
+ Inherits BaseClass
+
+ Private Scheduler As IScheduler
+ Private ConnectionString As String
+
+ Private Const JobName = "CertificateDocumentJob"
+
+ Public Sub New(pLogConfig As LogConfig, pConnectionString As String)
+ MyBase.New(pLogConfig)
+ ConnectionString = pConnectionString
+ End Sub
+
+ Public Async Function Start(pInterval As Integer) As Task
+ Logger.Debug("Starting Scheduler..")
+
+ Dim oProperties As New NameValueCollection()
+
+ Scheduler = Await SchedulerBuilder.Create(oProperties).
+ UseDefaultThreadPool(Sub(x) x.MaxConcurrency = 5).
+ BuildScheduler()
+
+ Dim oJobKey = New JobKey(JobName)
+ Dim oJobData = New JobDataMap() From {
+ {Common.Constants.LOGCONFIG, LogConfig},
+ {Common.Constants.DATABASE, ConnectionString}
+ }
+
+ Logger.Debug("Initialized Job [{0}]", JobName)
+
+ Dim oJob As IJobDetail = JobBuilder.Create(Of CertificateDocumentJob).
+ UsingJobData(oJobData).
+ WithIdentity(oJobKey).
+ Build()
+
+ Dim oTrigger As ITrigger = TriggerBuilder.Create().
+ ForJob(oJobKey).
+ WithIdentity($"{JobName}-trigger").
+ WithSimpleSchedule(Sub(s) s.
+ RepeatForever().
+ WithIntervalInMinutes(pInterval)).
+ Build()
+
+ Logger.Debug("Initialized Trigger")
+
+ Await Scheduler.ScheduleJob(oJob, oTrigger)
+
+ Logger.Debug("Job scheduled.")
+
+ Await Scheduler.Start()
+
+ Logger.Info("Scheduler started!")
+ End Function
+
+ Public Async Function [Stop]() As Task
+ Logger.Info("Stopping scheduler..")
+ Await Scheduler.Shutdown()
+ Logger.Info("Scheduler stopped!")
+ End Function
+
+End Class
diff --git a/EnvelopeGenerator.Service/Service.Designer.vb b/EnvelopeGenerator.Service/Service.Designer.vb
new file mode 100644
index 00000000..e5973b23
--- /dev/null
+++ b/EnvelopeGenerator.Service/Service.Designer.vb
@@ -0,0 +1,48 @@
+Imports System.ServiceProcess
+
+
+Partial Class Service
+ Inherits System.ServiceProcess.ServiceBase
+
+ 'UserService ü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
+
+ ' Der Haupteinstiegspunkt für den Prozess
+
+
+ Shared Sub Main()
+ Dim ServicesToRun() As System.ServiceProcess.ServiceBase
+
+ ' Innerhalb eines Prozesses können mehrere NT-Dienste ausgeführt werden. Um einen
+ ' weiteren Dienst zu diesem Prozess hinzuzufügen, ändern Sie die folgende Zeile,
+ ' um ein zweites Dienstobjekt zu erstellen. Zum Beispiel
+ '
+ ' ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
+ '
+ ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service}
+
+ System.ServiceProcess.ServiceBase.Run(ServicesToRun)
+ End Sub
+
+ 'Wird vom Komponenten-Designer benötigt.
+ Private components As System.ComponentModel.IContainer
+
+ ' Hinweis: Die folgende Prozedur ist für den Komponenten-Designer erforderlich.
+ ' Das Bearbeiten ist mit dem Komponenten-Designer möglich.
+ ' Das Bearbeiten mit dem Code-Editor ist nicht möglich.
+
+ Private Sub InitializeComponent()
+ components = New System.ComponentModel.Container()
+ Me.ServiceName = "EnvelopeGenerator.Service"
+ End Sub
+
+End Class
diff --git a/EnvelopeGenerator.Service/Service.vb b/EnvelopeGenerator.Service/Service.vb
new file mode 100644
index 00000000..049b8639
--- /dev/null
+++ b/EnvelopeGenerator.Service/Service.vb
@@ -0,0 +1,72 @@
+Imports System.Timers
+Imports System.IO
+Imports System.ComponentModel
+Imports DigitalData.Modules.Base
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Messaging
+Imports DigitalData.Modules.Config
+
+Public Class Service
+ Private Logger As Logger
+ Private LogConfig As LogConfig
+ Private ConfigManager As ConfigManager(Of Config)
+ Private Config As Config
+ Private Database As MSSQLServer
+
+ Private Scheduler As Scheduler
+
+ Protected Overrides Async Sub OnStart(ByVal args() As String)
+ Try
+ ' === Initialize Logger ===
+ Dim oLogPath = Path.Combine(My.Application.Info.DirectoryPath, "Log")
+ LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oLogPath, Nothing, "Digital Data", "EmailGenerator.Service")
+
+ ' === Initialize Config ===
+ ConfigManager = New ConfigManager(Of Config)(LogConfig, My.Application.Info.DirectoryPath)
+ Config = ConfigManager.Config
+
+ LogConfig.Debug = Config.Debug
+
+ Logger = LogConfig.GetLogger()
+ Logger.Info($"DEBUG = {LogConfig.Debug}")
+
+ Logger.Info("Starting [{0}]", ServiceName)
+
+ ' === Initialize Databases ===
+
+ Logger.Info("Inititalize Databases")
+
+ If Config.ConnectionString <> String.Empty Then
+ Database = New MSSQLServer(LogConfig, Config.ConnectionString)
+
+ If Database.DBInitialized = False Then
+ Logger.Warn("MSSQL Connection could not be established. Check the Error Log")
+ End If
+ End If
+
+ ' === Initialize Queue ===
+
+ Logger.Debug("Inititalize Quartz")
+
+ Scheduler = New Scheduler(LogConfig, Config.ConnectionString)
+ Await Scheduler.Start(Config.IntervalInMin)
+
+ Logger.Info("Started [{0}] !", ServiceName)
+
+ Catch ex As Exception
+ Logger.Error(ex)
+ End Try
+ End Sub
+
+ Protected Overrides Async Sub OnStop()
+ Try
+ Logger.Info("Stopping [{0}] !", ServiceName)
+ Await Scheduler.Stop()
+ Logger.Info("Stopped [{0}] !", ServiceName)
+ Catch ex As Exception
+ Logger.Error(ex)
+ End Try
+
+ End Sub
+End Class
diff --git a/EnvelopeGenerator.Service/packages.config b/EnvelopeGenerator.Service/packages.config
new file mode 100644
index 00000000..18eb1a41
--- /dev/null
+++ b/EnvelopeGenerator.Service/packages.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EnvelopeGenerator.sln b/EnvelopeGenerator.sln
index a3b35620..28071dbb 100644
--- a/EnvelopeGenerator.sln
+++ b/EnvelopeGenerator.sln
@@ -11,6 +11,8 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EnvelopeGenerator.Common",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EnvelopeGenerator.Web", "EnvelopeGenerator.Web\EnvelopeGenerator.Web.csproj", "{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}"
EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EnvelopeGenerator.Service", "EnvelopeGenerator.Service\EnvelopeGenerator.Service.vbproj", "{83ED2617-B398-4859-8F59-B38F8807E83E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -33,6 +35,10 @@ Global
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Release|Any CPU.Build.0 = Release|Any CPU
+ {83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {83ED2617-B398-4859-8F59-B38F8807E83E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {83ED2617-B398-4859-8F59-B38F8807E83E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE