Files
SISBusiness/SISService/SISService.vb
2017-03-26 20:00:03 +02:00

157 lines
7.7 KiB
VB.net

Imports System
Imports System.Configuration
Imports DevExpress.Xpo
Imports DevExpress.Xpo.DB
Imports DevExpress.Persistent.BaseImpl
Imports SISBusiness.Module
Imports System.IO
Imports System.Windows.Forms
Imports DevExpress.Data.Filtering
Imports System.Threading
Imports System.Timers
Public Class SISService
Private _Session As DevExpress.Xpo.Session
Private _connectionstring As String
Private _instancename As String
Private _Timer As System.Timers.Timer
Private _ReconfigurePCI As String
Private _AssetsHandling As String
Private _Period As Integer
Protected Overrides Sub OnStart(ByVal args() As String)
' Add code here to start your service. This method should set things
' in motion so your service can do its work.
'EventLog1.WriteEntry("In OnStart")
_instancename = ConfigurationManager.AppSettings("InstanceName")
Diagnostics.EventLog.WriteEntry(_instancename, "SIS Business Framework service is ready for work !", EventLogEntryType.Information)
_connectionstring = ConfigurationManager.ConnectionStrings("ConnectionString").ToString
If _connectionstring <> "" Then
If _Session Is Nothing Then _Session = New Session
_Session.ConnectionString = _connectionstring
_Session.Connect()
If _Session.IsConnected Then
Diagnostics.EventLog.WriteEntry(_instancename, "Database connection is succeed ! " & _Session.ConnectionString, EventLogEntryType.Information)
_ReconfigurePCI = ConfigurationManager.AppSettings("ReconfigurePCI")
_AssetsHandling = ConfigurationManager.AppSettings("AssetsHandling")
_Period = CInt(ConfigurationManager.AppSettings("Period"))
If _Period < 1000 Then _Period = 1000
_Timer = New System.Timers.Timer(_Period)
AddHandler _Timer.Elapsed, AddressOf SISServiceFire_Timer
_Timer.Interval = _Period
_Timer.Enabled = True
Diagnostics.EventLog.WriteEntry(_instancename, "Timer period is initialized : " & _Period.ToString, EventLogEntryType.Information)
Else
Diagnostics.EventLog.WriteEntry(_instancename, "Database connection is failed ! " & _connectionstring, EventLogEntryType.Error)
End If
Else
Diagnostics.EventLog.WriteEntry(_instancename, "Database connection is failed ! " & _connectionstring, EventLogEntryType.Error)
End If
End Sub
Protected Overrides Sub OnStop()
' Add code here to perform any tear-down necessary to stop your service.
Diagnostics.EventLog.WriteEntry(_instancename, "SIS Business Framework service is stopped !", EventLogEntryType.Information)
End Sub
Public Sub New()
MyBase.New()
InitializeComponent()
Me.ServiceName = ConfigurationManager.AppSettings.Item("InstanceName")
End Sub
Sub SISServiceFire_Timer(source As Object, e As ElapsedEventArgs)
Dim _currenttime As Date = Now
On Error GoTo CheckError
_Timer.Enabled = False
'// Ide kéne tenni, hogy mit csináljon ...
If _Session IsNot Nothing Then
If _currenttime.Hour = CLng(_ReconfigurePCI.Split(":")(0)) And _
_currenttime.Minute = CLng(_ReconfigurePCI.Split(":")(1)) Then
ReconfigurePCI()
End If
End If
If _Session IsNot Nothing Then
If _currenttime.Hour = CLng(_AssetsHandling.Split(":")(0)) And _
_currenttime.Minute = CLng(_AssetsHandling.Split(":")(1)) Then
AssetsHandling()
End If
End If
_Timer.Enabled = True
Exit Sub
CheckError:
Diagnostics.EventLog.WriteEntry(_instancename, String.Format("Timer error : {0}{1}{2}", Chr(13), Chr(10), Err.Description), EventLogEntryType.Error)
Resume Next
End Sub
Private Sub ReconfigurePCI()
'// Partner pontozási info újragenerálása
Dim _uow As New UnitOfWork(_Session.DataLayer)
Dim _GLAccounts_Collection As New XPCollection(Of GLAccounts)(_uow)
Dim _GLAccounts As GLAccounts
Dim _GLRows As GLRows
Dim _InvoiceHeader As InvoiceHeader
Dim _RegistryHeader As RegistryHeader
Dim _CurrentPCIInfo As String = ""
On Error GoTo CheckError
Diagnostics.EventLog.WriteEntry(_instancename, "ReconfigurePCI is started.", EventLogEntryType.Information)
Dim _GLRows_Collection_ConnectInfo As New XPCollection(Of GLRows)(_uow, CriteriaOperator.Parse("isnull(ConnectInfo)=True"))
Diagnostics.EventLog.WriteEntry(_instancename, "ConnectInfo check -> " & _GLRows_Collection_ConnectInfo.Count.ToString, EventLogEntryType.Information)
For Each _GLRows In _GLRows_Collection_ConnectInfo
_GLRows.ConnectInfo = ""
_GLRows.Save()
Next
_uow.CommitChanges()
Diagnostics.EventLog.WriteEntry(_instancename, "GLAccounts -> " & _GLAccounts_Collection.Count.ToString, EventLogEntryType.Information)
For Each _GLAccounts In _GLAccounts_Collection
_CurrentPCIInfo = _GLAccounts.ConnectInfo
GLFunctions.ReconfigurePCI(_uow, _GLAccounts.CustomersFrom, _GLAccounts.Customers, _GLAccounts.PartnerType, _GLAccounts.ConnectInfo)
Next
Dim _GLRows_Collection As New XPCollection(Of GLRows)(_uow, CriteriaOperator.Parse("isnull(Customer)=False and PartnerType in (0,1)"))
Diagnostics.EventLog.WriteEntry(_instancename, "GLRows -> " & _GLRows_Collection.Count.ToString, EventLogEntryType.Information)
For Each _GLRows In _GLRows_Collection
_CurrentPCIInfo = _GLRows.ConnectInfo
GLFunctions.ReconfigurePCI(_uow, _GLRows.GLHeader.CustomersFrom, _GLRows.Customer, _GLRows.PartnerType, _GLRows.ConnectInfo)
Next
Dim _InvoiceHeader_Collection As New XPCollection(Of InvoiceHeader)(_uow, CriteriaOperator.Parse("isnull(Customers)=False and IsEditable=False and isnull(GLAccounts)=True"))
Diagnostics.EventLog.WriteEntry(_instancename, "InvoiceHeader -> " & _InvoiceHeader_Collection.Count.ToString, EventLogEntryType.Information)
For Each _InvoiceHeader In _InvoiceHeader_Collection
_CurrentPCIInfo = _InvoiceHeader.ConnectInfo
GLFunctions.ReconfigurePCI(_uow, _InvoiceHeader.CustomersFrom, _InvoiceHeader.Customers, 0, _InvoiceHeader.ConnectInfo)
Next
Dim _RegistryHeader_Collection As New XPCollection(Of RegistryHeader)(_uow, CriteriaOperator.Parse("RegistryAcceptState=0 and RegistryType.RegistryMainType=0 and IsEditable=False and isnull(F_GLAccounts)=True"))
Diagnostics.EventLog.WriteEntry(_instancename, "RegistryHeader -> " & _RegistryHeader_Collection.Count.ToString, EventLogEntryType.Information)
For Each _RegistryHeader In _RegistryHeader_Collection
_CurrentPCIInfo = _RegistryHeader.DocumentNumber
GLFunctions.ReconfigurePCI(_uow, _RegistryHeader.CustomersFrom, _RegistryHeader.Customers, 1, _RegistryHeader.DocumentNumber)
Next
Diagnostics.EventLog.WriteEntry(_instancename, "ReconfigurePCI is finished.", EventLogEntryType.Information)
Exit Sub
CheckError:
Diagnostics.EventLog.WriteEntry(_instancename, String.Format("ReconfigurePCI Error : {0}{1}{2}{3}{4}ConnectInfo -> {5}", Chr(13), Chr(10), Err.Description, Chr(13), Chr(10), _CurrentPCIInfo), EventLogEntryType.Error)
Resume Next
End Sub
Private Sub AssetsHandling()
On Error GoTo CheckError
Exit Sub
CheckError:
Diagnostics.EventLog.WriteEntry(_instancename, String.Format("PCI Error : {0}{1}{2}", Chr(13), Chr(10), Err.Description), EventLogEntryType.Error)
Resume Next
End Sub
End Class