Monorepo/GUIs.Common/frmNotification_Startup.vb
2025-05-23 08:17:41 +02:00

195 lines
7.9 KiB
VB.net

Imports System.Drawing
Imports System.Threading
Imports DigitalData.Controls.DocumentViewer
Imports DigitalData.Modules.EDMI.API
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow.Constants
Public Class frmNotification_Startup
Private ReadOnly Property LogConfig As LogConfig
Private ReadOnly Property Logger As Logger
Private ReadOnly _NotificationsTable As DataTable
Private ReadOnly _Environment As DigitalData.Modules.ZooFlow.Environment
Private ReadOnly _GDPictureKey As String
Private ReadOnly _FormCaption As String
Private NOTIFY_ID As Integer
Private Property OperationMode As OperationMode
Private Client As Client
Friend Class NotificationItem
Public Id As Integer
Public Title As String
Public MSGSTRING As String
Public Overrides Function ToString() As String
Return Title
End Function
End Class
Public Sub New(DTNotifications As DataTable, pLogConfig As LogConfig, pGDPictureKey As String, pCaption As String, pEnvironment As DigitalData.Modules.ZooFlow.Environment)
_NotificationsTable = DTNotifications
LogConfig = pLogConfig
Logger = pLogConfig.GetLogger()
_GDPictureKey = pGDPictureKey
_FormCaption = pCaption
_Environment = pEnvironment
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
Try
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Dim cultureInfo As System.Globalization.CultureInfo
cultureInfo = New System.Globalization.CultureInfo(_Environment.User.Language)
cultureInfo.DateTimeFormat.ShortDatePattern = _Environment.User.DateFormat
Thread.CurrentThread.CurrentCulture = cultureInfo
Thread.CurrentThread.CurrentUICulture = cultureInfo
Catch ex As Exception
End Try
End Sub
Private Sub frmNotification_Startup_Load(sender As Object, e As EventArgs) Handles Me.Load
Try
DocumentViewer1.Init(LogConfig, _GDPictureKey, New DigitalData.Controls.DocumentViewer.DocumentViewer.ToolbarSettings() With {
.ShowPrintButton = True,
.ShowRotateButton = True,
.ShowFlipButton = True,
.ShowSettingButton = True
})
OperationMode = GetOperationMode()
Client = _Environment.Service.Client
Me.Text = _FormCaption
If _NotificationsTable.Rows.Count = 1 Then
Me.ListBoxControl1.Visible = False
Load_Profile(_NotificationsTable.Rows(0).Item("GUID"))
Else
ListBoxControl1.DataSource = _NotificationsTable
ListBoxControl1.ValueMember = "GUID"
ListBoxControl1.DisplayMember = "TITLE"
End If
Catch ex As Exception
Dim oMsgBox As New frmDialog(ex.Message, "Unexpected Error loading form:", frmDialog.DialogType.Error)
oMsgBox.ShowDialog()
End Try
End Sub
Sub Load_Profile(oIndex As Integer)
Try
DocumentViewer1.Visible = False
RichEditControl1.Visible = False
Dim oType As String, oMSG_STRING As String, oMarkasRead As Boolean
If _NotificationsTable.Rows.Count = 1 Then
Dim oRow As DataRow = _NotificationsTable.Rows(0)
oType = oRow.Item("DISPLAY_TYPE")
oMSG_STRING = oRow.Item("MSG_STRING")
oMarkasRead = oRow.Item("VALIDATE_READ")
NOTIFY_ID = oRow.Item("GUID")
Else
Dim oCount As Integer = 0
For Each oRow As DataRow In _NotificationsTable.Rows
If oIndex = oCount Then
oType = oRow.Item("DISPLAY_TYPE")
oMSG_STRING = oRow.Item("MSG_STRING")
oMarkasRead = oRow.Item("VALIDATE_READ")
NOTIFY_ID = oRow.Item("GUID")
Exit For
Else
oCount += 1
End If
Next
End If
If oType.ToUpper = "MESSAGE" Then
RichEditControl1.Text = oMSG_STRING
RichEditControl1.Visible = True
RichEditControl1.Dock = Windows.Forms.DockStyle.Fill
Else
If IO.File.Exists(oMSG_STRING) Then
DocumentViewer1.LoadFile(oMSG_STRING)
DocumentViewer1.Visible = True
DocumentViewer1.Dock = Windows.Forms.DockStyle.Fill
Else
Dim oMsgBox As New frmDialog($"File [{oMSG_STRING}] not existing!", "Load Notification File", frmDialog.DialogType.Warning)
oMsgBox.ShowDialog()
End If
End If
If oMarkasRead = True Then
btnMarkAsRead.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
Else
btnMarkAsRead.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
End If
Catch ex As Exception
Dim oMsgBox As New frmDialog(ex.Message, "Unexpected Error loading Message:", frmDialog.DialogType.Error)
oMsgBox.ShowDialog()
End Try
End Sub
Private Sub ListBoxControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBoxControl1.SelectedValueChanged
If ListBoxControl1.SelectedIndex <> -1 Then
Try
Load_Profile(ListBoxControl1.SelectedIndex)
Catch ex As Exception
Dim oMsgBox As New frmDialog(ex.Message, "Unexpected Error switching Notifications:", frmDialog.DialogType.Error)
oMsgBox.ShowDialog()
End Try
End If
End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnCloseForm.ItemClick
Me.Close()
End Sub
Private Sub btnMarkAsRead_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnMarkAsRead.ItemClick
Dim oSuccess As Boolean = True
Try
Dim oSQL = $"INSERT INTO [dbo].[TBDD_NOTIFICATIONS_USER_HISTORY] ([NOTIFY_ID], [USR_ID]) VALUES ({NOTIFY_ID} ,{_Environment.User.UserId})"
If OperationMode = OperationMode.ZooFlow Or OperationMode = OperationMode.WithAppServer Then
Dim oResponse = Client.ExecuteNonQueryFromECM(oSQL)
If Not oResponse.OK Then
oSuccess = False
End If
Else
oSuccess = _Environment.Database.ExecuteNonQuery(oSQL)
End If
If oSuccess = False Then
lbStatus.Caption = "Error while setting History!"
lbStatus.ItemAppearance.Normal.BackColor = Color.Red
lbStatus.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
Else
lbStatus.Caption = "History successfully saved!"
lbStatus.ItemAppearance.Normal.BackColor = Color.Green
lbStatus.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
If _NotificationsTable.Rows.Count = 1 Then
Me.Close()
End If
End If
Catch ex As Exception
Dim oMsgBox As New frmDialog(ex.Message, "Unexpected Error HistoryInsert:", frmDialog.DialogType.Error)
oMsgBox.ShowDialog()
oSuccess = False
End Try
End Sub
Private Function GetOperationMode() As OperationMode
Dim oOperationMode As OperationMode
If _Environment.Service.Client?.IsOnline AndAlso _Environment.Service.Address <> String.Empty Then
oOperationMode = OperationMode.WithAppServer
Else
oOperationMode = OperationMode.NoAppServer
End If
Return oOperationMode
End Function
End Class