Monorepo/GUIs.Common/frmWorkflow_Adhoc_start.vb
Jonathan Jenne 66861e16e4 clean up
2023-05-22 10:53:58 +02:00

285 lines
11 KiB
VB.net

Imports DigitalData.Modules.ZooFlow
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow.Constants
Imports DigitalData.Modules.EDMI.API
Imports DevExpress.XtraEditors
Imports System.Drawing
Imports DigitalData.Modules.EDMI.API.EDMIServiceReference
Imports DevExpress.Utils.Svg
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid.ViewInfo
Imports System.Windows.Forms
Public Class frmWorkflow_Adhoc_start
Private ReadOnly Property LogConfig As LogConfig
Private ReadOnly Property Logger As Logger
Private Property OperationMode As OperationMode
Private ReadOnly Environment As Environment
Private ReadOnly AdHocWorkflow As AdHocWorkflow
Private Client As Client
Private IsLoading As Boolean = True
Private WFUserList As List(Of User2Workflow)
Private WorkflowList As List(Of Workflows)
Private GridCursorLocation As Point
Private oSelectedProfilID As Integer
Private Property FormHelper As FormHelper
Public Sub New(pLogConfig As LogConfig, pEnvironment As Environment, pAdhocWorkflow As AdHocWorkflow)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
Environment = pEnvironment
AdHocWorkflow = pAdhocWorkflow
LogConfig = pLogConfig
Logger = pLogConfig.GetLogger()
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
Private Sub frmWorkflow_Adhoc_start_Load(sender As Object, e As EventArgs) Handles Me.Load
Try
' Operation mode is either guessed from service settings
' or explictly set from OperationModeOverride in Params
OperationMode = GetOperationMode()
Client = Environment.Service.Client
WFUserList = New List(Of User2Workflow)
WorkflowList = New List(Of Workflows)
' Initialize Viewer with GDPicture.NET License
' Hide options relating to a filepath for zooflow
If OperationMode = OperationMode.ZooFlow Then
' RibbonPageGroupFilesystem.Visible = False
End If
If OperationMode = OperationMode.NoAppServer Then
' RibbonPageGroupCheckInOut.Visible = False
' RibbonPageGroupWorkflow.Visible = False
' RibbonPageGroupAttribute.Visible = False
Else
' RibbonPageGroupFilesystem.Visible = False
End If
Dim oDatatableUserselect As DataTable
Dim oDatatableWFSelect As DataTable
Dim oSQL = AdHocWorkflow.AHWF_CMD_USR_SELECT
Dim oResult As GetDatatableResponse = Nothing
If OperationMode = OperationMode.ZooFlow Or OperationMode = OperationMode.WithAppServer Then
oResult = Client.GetDatatableFromECM(oSQL)
If oResult.OK = False Then
Throw New ApplicationException(oResult.ErrorMessage)
Else
oDatatableUserselect = oResult.Table
End If
Else
oDatatableUserselect = Environment.Database.GetDatatable(oSQL)
End If
If Not IsNothing(oDatatableUserselect) Then
LookUpEdit1.Properties.DataSource = oDatatableUserselect
LookUpEdit1.Properties.ValueMember = oDatatableUserselect.Columns(0).ColumnName
LookUpEdit1.Properties.DisplayMember = oDatatableUserselect.Columns(1).ColumnName
End If
oSQL = AdHocWorkflow.AHWF_CMD_LAYOUT_SELECT
If OperationMode = OperationMode.ZooFlow Or OperationMode = OperationMode.WithAppServer Then
oResult = Client.GetDatatableFromECM(oSQL)
If oResult.OK = False Then
Throw New ApplicationException(oResult.ErrorMessage)
Else
oDatatableWFSelect = oResult.Table
End If
Else
oDatatableWFSelect = Environment.Database.GetDatatable(oSQL)
End If
If Not IsNothing(oDatatableWFSelect) Then
For Each oRow As DataRow In oDatatableWFSelect.Rows
WorkflowList.Add(New Workflows() With {
.ID = oRow.Item(0),
.Description = IIf(IsDBNull(oRow.Item(2)), "", oRow.Item(2)),
.Title = oRow.Item(1),
.Image = SvgImageCollection1.Item("Workflow")
})
Next
End If
GridControlWorkflows.DataSource = WorkflowList
TileViewWorkflows.FocusedRowHandle = GridControl.InvalidRowHandle
If OperationMode = OperationMode.NoAppServer Then
' panelContainerStatus.Visibility = Docking.DockVisibility.Hidden
End If
WFUserList = New List(Of User2Workflow)
' Hide the complete Navigation Ribbon Group if desired
Catch ex As Exception
Logger.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error while loading form:")
Finally
IsLoading = False
End Try
End Sub
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs)
End Sub
Friend Class User2Workflow
Public Property UserID As Integer
Public Property EMail As String
Public Property FullName As String
Public Property Image As SvgImage
Public Property Count As Integer = 0
Public ReadOnly Property DisplayName As String
Get
Return UserID
End Get
End Property
End Class
Friend Class Workflows
Public Property Description As String
Public Property Title As String
Public Property ID As Integer
Public Property Image As SvgImage
Public Property Count As Integer = 0
Public ReadOnly Property DisplayName As String
Get
Return ID
End Get
End Property
End Class
Private Sub LookUpEdit1_EditValueChanged(sender As Object, e As EventArgs) Handles LookUpEdit1.EditValueChanged
Dim editor As DevExpress.XtraEditors.LookUpEdit = CType(sender, DevExpress.XtraEditors.LookUpEdit)
Dim row As DataRowView = CType(editor.Properties.GetDataSourceRowByKeyValue(editor.EditValue), DataRowView)
Dim UsID As Object = row("ID")
Dim UsFname As Object = row("FullName")
Dim UsEmail As Object = row("Email")
WFUserList.Add(New User2Workflow() With {
.UserID = UsID,
.FullName = UsFname,
.EMail = UsEmail,
.Image = SvgImageCollection1.Item("actions_user")
})
GridSelectedUsers.DataSource = Nothing
GridSelectedUsers.DataSource = WFUserList
TileViewUser.FocusedRowHandle = GridControl.InvalidRowHandle
End Sub
Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick
Dim oUserRow = TileViewUser.GetRow(TileViewUser.FocusedRowHandle)
If oUserRow IsNot Nothing AndAlso TypeOf oUserRow Is User2Workflow Then
Dim oDateSearch As User2Workflow = oUserRow
WFUserList.Remove(oDateSearch)
GridSelectedUsers.DataSource = Nothing
GridSelectedUsers.DataSource = WFUserList
End If
End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
Try
Dim oErrorOcurred As Boolean = False
If oSelectedProfilID = 0 Then
BarStaticItem1.Caption = "Please choose a workflow via clickin on it..."
BarStaticItem1.ItemAppearance.Normal.BackColor = Color.Orange
Exit Sub
End If
Dim oInsert = $"DECLARE @OUT_ID
BIGINT EXEC PRPM_AH_WF_ADD_OBJ_REL {AdHocWorkflow.OBJECT_ID}, {oSelectedProfilID}, '{txtWORK_INSTRUCTION.Text}','{Environment.User.UserName}',@OUT_ID OUTPUT
SELECT @OUT_ID"
Dim oAdhocWF_ID
If OperationMode = OperationMode.ZooFlow Or OperationMode = OperationMode.WithAppServer Then
Dim oResponse = Client.GetScalarValueFromECM(oInsert)
If oResponse.OK Then
oAdhocWF_ID = oResponse.Scalar
Else
MsgBox("Unexpected error in WF-Party-Creator. Check your log and inform Admin-Team", MsgBoxStyle.Critical)
oErrorOcurred = True
Exit Sub
End If
Else
oAdhocWF_ID = Environment.Database.GetScalarValue(oInsert)
End If
If Not IsNothing(oAdhocWF_ID) Then
For index = 0 To TileViewUser.RowCount
Dim oRow As User2Workflow = TileViewUser.GetRow(index)
If oRow Is Nothing Then
Continue For
End If
oInsert = $"DECLARE @OUT_ID
BIGINT EXEC PRPM_AH_WF_PARTY {oAdhocWF_ID}, {oRow.UserID}, '{Environment.User.UserName}',@OUT_ID OUTPUT
SELECT @OUT_ID"
Dim oID
If OperationMode = OperationMode.ZooFlow Or OperationMode = OperationMode.WithAppServer Then
Dim oResponse = Client.GetScalarValueFromECM(oInsert)
If oResponse.OK Then
oID = oResponse.Scalar
Else
MsgBox("Unexpected error in WF-Party-Creator. Check your log and inform Admin-Team", MsgBoxStyle.Critical)
oErrorOcurred = True
Exit For
End If
Else
oID = Environment.Database.GetScalarValue(oInsert)
End If
Next
End If
If oErrorOcurred = False Then
Me.Close()
End If
Catch ex As Exception
Logger.Error(ex)
BarStaticItem1.Caption = ex.Message
BarStaticItem1.ItemAppearance.Normal.BackColor = Color.Red
FormHelper.ShowErrorMessage(ex, "Error in AHWF Save and Close")
End Try
End Sub
Private Sub TileViewWorkflows_MouseDown(sender As Object, e As MouseEventArgs) Handles TileViewWorkflows.MouseDown
GridCursorLocation = e.Location
End Sub
Private Sub TileViewWorkflows_ItemClick(sender As Object, e As Views.Tile.TileViewItemClickEventArgs) Handles TileViewWorkflows.ItemClick
Try
Dim oWorkflowID As Workflows = TileViewWorkflows.GetRow(TileViewWorkflows.FocusedRowHandle)
Try
If CInt(oWorkflowID.ID) > 0 Then
oSelectedProfilID = oWorkflowID.ID
End If
Catch ex As Exception
oSelectedProfilID = 0
End Try
Catch ex As Exception
oSelectedProfilID = 0
End Try
End Sub
End Class