Monorepo/GUIs.Common/frmNotification_Startup.vb
2022-10-26 14:57:01 +02:00

213 lines
8.0 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 ReadOnly FormHelper As FormHelper
Private CurrentNotificationId As Integer
Private Property OperationMode As OperationMode
Private Client As Client
Private Const COL_GUID As String = "GUID"
Private Const COL_TITLE As String = "TITLE"
Private Const TYPE_MESSAGE = "MESSAGE"
Private Const TYPE_FILE = "FILE"
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()
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
End Sub
Public Sub New(pNotificationsTable As DataTable, pLogConfig As LogConfig, pGDPictureKey As String, pCaption As String, pEnvironment As DigitalData.Modules.ZooFlow.Environment)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
LogConfig = pLogConfig
Logger = pLogConfig.GetLogger()
FormHelper = New FormHelper(pLogConfig, Me)
_NotificationsTable = pNotificationsTable
_GDPictureKey = pGDPictureKey
_FormCaption = pCaption
_Environment = pEnvironment
End Sub
Private Sub frmNotification_Startup_Load(sender As Object, e As EventArgs) Handles Me.Load
Try
DocumentViewer1.Init(LogConfig, _GDPictureKey)
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(COL_GUID))
Else
ListBoxControl1.DataSource = _NotificationsTable
ListBoxControl1.ValueMember = COL_GUID
ListBoxControl1.DisplayMember = COL_TITLE
End If
Catch ex As Exception
'Dim oMsgBox As New frmDialog(ex.Message, "Unexpected Error loading form:", frmDialog.DialogType.Error)
'oMsgBox.ShowDialog()
FormHelper.ShowErrorMessage(ex.Message, "Unexpected error loading form")
End Try
End Sub
Sub Load_Profile(oIndex As Integer)
Try
DocumentViewer1.Visible = False
RichEditControl1.Visible = False
Dim oType As String, oMessage As String, oMarkasRead As Boolean
Dim oRow = _NotificationsTable.AsEnumerable.
Where(Function(row) row.Item(COL_GUID) = oIndex).
FirstOrDefault()
If oRow Is Nothing Then
FormHelper.ShowWarningMessage("Notification with Guid [{0}] could not be loaded!", "Unexpected error loading message")
Exit Sub
End If
oType = oRow.Item("DISPLAY_TYPE")
oMessage = oRow.Item("MSG_STRING")
oMarkasRead = oRow.Item("VALIDATE_READ")
CurrentNotificationId = oRow.Item(COL_GUID)
'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")
' CurrentNotificationId = oRow.Item(COL_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")
' CurrentNotificationId = oRow.Item(COL_GUID)
' Exit For
' Else
' oCount += 1
' End If
' Next
'End If
If oType = TYPE_MESSAGE Then
RichEditControl1.Text = oMessage
RichEditControl1.Visible = True
RichEditControl1.Dock = Windows.Forms.DockStyle.Fill
ElseIf oType = TYPE_FILE Then
If IO.File.Exists(oMessage) Then
DocumentViewer1.LoadFile(oMessage)
DocumentViewer1.Visible = True
DocumentViewer1.Dock = Windows.Forms.DockStyle.Fill
Else
Dim oMsgBox As New frmDialog("File 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
FormHelper.ShowErrorMessage(ex.Message, "Unexpected error loading message")
End Try
End Sub
Private Sub ListBoxControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBoxControl1.SelectedValueChanged
If ListBoxControl1.SelectedItem Is Nothing Then
Exit Sub
End If
Try
Dim oRowView As DataRowView = ListBoxControl1.SelectedItem
Dim oGuid = oRowView.Row.Item(COL_GUID)
Load_Profile(oGuid)
Catch ex As Exception
FormHelper.ShowErrorMessage(ex.Message, "Unexpected error switching notifications")
End Try
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
Try
Dim oSuccess As Boolean = True
Dim oSQL = $"INSERT INTO [dbo].[TBDD_NOTIFICATIONS_USER_HISTORY] ([NOTIFY_ID], [USR_ID]) VALUES ({CurrentNotificationId} ,{_Environment.User.UserId})"
If OperationMode = OperationMode.ZooFlow Or OperationMode = OperationMode.WithAppServer Then
Dim oResponse = Client.ExecuteNonQueryFromECM(oSQL)
oSuccess = oResponse.OK
Else
oSuccess = _Environment.Database.ExecuteNonQuery(oSQL)
End If
If oSuccess = False Then
lbStatus.Caption = "Error while setting History!"
lbStatus.ItemAppearance.Normal.BackColor = Color.Red
Else
lbStatus.Caption = "History successfully saved!"
lbStatus.ItemAppearance.Normal.BackColor = Color.Green
If _NotificationsTable.Rows.Count = 1 Then
Me.Close()
End If
End If
Catch ex As Exception
FormHelper.ShowErrorMessage(ex.Message, "Unexpected error writing history")
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