Monorepo/GUIs.ZooFlow/Administration/frmAdmin_GlobixRelations.vb
2022-02-17 16:33:17 +01:00

110 lines
4.4 KiB
VB.net

Imports DigitalData.Modules.Logging
Public Class frmAdmin_GlobixRelations
Private SELECTED_DTID As Integer
Private Logger As Logger
Private Function GetAvailableUsers(doctypeid As Integer) As DataTable
Try
Dim dt As DataTable
Dim oSQL = $"SELECT GUID UserID,NAME as Name, PRENAME as Prename,USERNAME as Username, EMAIL as Email FROM TBDD_USER WHERE GUID NOT IN (SELECT USER_ID FROM TBDD_USER_DOKTYPE WHERE DOCTYPE_ID = {doctypeid})"
dt = My.DatabaseECM.GetDatatable(oSQL)
Return dt
Catch ex As Exception
ShowErrorMessage($"Error in GetAvailableUsers with ID {doctypeid}", ex)
Return Nothing
End Try
End Function
Private Function GetRelatedUsers(doctypeid As Integer) As DataTable
Try
Dim dt As DataTable
Dim oSQL = $"SELECT A.GUID RelID,B.NAME as Name, B.PRENAME as Prename,B.USERNAME as Username, B.EMAIL as Email FROM TBDD_USER_DOKTYPE A
INNER JOIN TBDD_USER B ON A.USER_ID = B.GUID WHERE A.DOCTYPE_ID = {doctypeid}"
dt = My.DatabaseECM.GetDatatable(oSQL)
Return dt
Catch ex As Exception
ShowErrorMessage($"Error in GetRelatedUsers with ID {doctypeid}", ex)
Return Nothing
End Try
End Function
Private Sub ShowErrorMessage(errorText As String, ex As Exception)
MsgBox(errorText & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.Critical, "BE Relations")
End Sub
Private Sub frmAdmin_GlobixRelations_Load(sender As Object, e As EventArgs) Handles Me.Load
Try
Dim oSQL = "SELECT DOCTYPE_ID As ID, DOCTYPE as Doctype FROM VWGI_DOCTYPE_IDB ORDER BY DOCTYPE"
Dim oDT As DataTable = My.DatabaseECM.GetDatatable(oSQL)
Logger = My.LogConfig.GetLogger()
GridControlDoctypesUsers.DataSource = oDT
Catch ex As Exception
ShowErrorMessage($"Error in FormLoad", ex)
End Try
End Sub
Private Sub GridViewDoctypesUser_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridViewDoctypesUser.FocusedRowChanged
Dim oDTID = GridViewDoctypesUser.GetFocusedRowCellValue(GridViewDoctypesUser.Columns("ID"))
SELECTED_DTID = oDTID
LoadFreeUsers()
LoadRelatedAttributes()
End Sub
Sub LoadRelatedAttributes()
Dim oDT = GetRelatedUsers(SELECTED_DTID)
If Not IsNothing(oDT) Then
GridControlUsersRelated.DataSource = oDT
End If
End Sub
Sub LoadFreeUsers()
Dim oDT = GetAvailableUsers(SELECTED_DTID)
If Not IsNothing(oDT) Then
GridControlFreeUsers.DataSource = oDT
End If
End Sub
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click
Dim selectedRows As Integer() = GridViewFreeUsers.GetSelectedRows()
Dim i As Integer = 0
For Each rowhandle As Integer In selectedRows
Dim oSelectedUsrID = GridViewFreeUsers.GetRowCellValue(rowhandle, "UserID")
AddUser(oSelectedUsrID)
Next
LoadFreeUsers()
LoadRelatedAttributes()
End Sub
Private Function AddUser(UsrID As Integer) As Boolean
Try
Dim oSQL = $"
INSERT INTO TBDD_USER_DOKTYPE (DOCTYPE_ID,USER_ID,ADDED_WHO)
VALUES ({SELECTED_DTID},{UsrID},'{My.Application.User.UserName}')"
Return My.DatabaseECM.ExecuteNonQuery(oSQL)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Private Sub SimpleButton2_Click(sender As Object, e As EventArgs) Handles SimpleButton2.Click
Dim selectedRows As Integer() = GridViewUsersRelated.GetSelectedRows()
Dim i As Integer = 0
For Each rowhandle As Integer In selectedRows
Dim oSelectedUsrID = GridViewUsersRelated.GetRowCellValue(rowhandle, "RelID")
DeleteUserRelation(oSelectedUsrID)
Next
LoadFreeUsers()
LoadRelatedAttributes()
End Sub
Public Function DeleteUserRelation(ID As Integer) As Boolean
Try
Dim oSQL = $"DELETE FROM TBDD_USER_DOKTYPE WHERE GUID = {ID}"
Return My.DatabaseECM.ExecuteNonQuery(oSQL)
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
End Class