Imports DD_Rights Imports System.ComponentModel Public Class frmReworkUsers Private DT_FILES As DataTable Private _error As Boolean = False Private GUID_WORKING As Integer = 0 Private COUNT_ENTITIES As Integer = 0 Private ENTITIES_WORKED As Integer = 0 Private Sub frmCheckRightsEntity_Load(sender As Object, e As EventArgs) Handles Me.Load Refresh_Combo() End Sub Sub Refresh_Combo() Try cmbUser.DataSource = Nothing cmbUser.DataSource = DT_WORK_USER_RIGHTS cmbUser.ValueMember = DT_WORK_USER_RIGHTS.Columns(0).ColumnName cmbUser.DisplayMember = DT_WORK_USER_RIGHTS.Columns(1).ColumnName Catch ex As Exception MsgBox("Unexpected error in load Users List: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try End Sub Private Sub btnCheckRights_Click(sender As Object, e As EventArgs) Handles btnCheckRights.Click Dim ECM_USER_ID As Integer If cmbUser.SelectedIndex <> -1 Then GUID_WORKING = 0 Try ENTITIES_WORKED = 0 Try ECM_USER_ID = ClassDatabase.Execute_Scalar(String.Format("SELECT USERID_FK_INT_ECM FROM TBDD_USER WHERE GUID = (SELECT USER_ID FROM TBPMO_USER_RIGHTS_JOBS WHERE GUID = {0} )", cmbUser.SelectedValue)) Catch ex As Exception MsgBox("No User ECM-ID found for selected User. Please inform Digital Data.", MsgBoxStyle.Exclamation) Exit Sub End Try Dim sql = String.Format("SELECT ENTITY_ID FROM VWPMO_WD_DOC_SEARCH where DocID in (SELECT [dwObjectID] FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = {0}) GROUP BY ENTITY_ID", ECM_USER_ID) Dim DT_ENTITY As DataTable = ClassDatabase.Return_Datatable(sql) COUNT_ENTITIES = DT_ENTITY.Rows.Count For Each row As DataRow In DT_ENTITY.Rows sql = String.Format("SELECT * FROM VWPMO_WD_DOC_SEARCH where DocID in (SELECT [dwObjectID] FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = {0}) AND ENTITY_ID = {1}", ECM_USER_ID, row.Item("ENTITY_ID")) DT_FILES = ClassDatabase.Return_Datatable(sql) If DD_Rights.ClassRights.Init(row.Item("ENTITY_ID"), chklogging.Checked, DT_FILES.Rows.Count) = False Then MsgBox("Could not init rights management. " & vbNewLine & "Check logfile", MsgBoxStyle.Critical) Exit Sub End If 'BackgroundWorker erstellen ... BW_RightsEntity = New BackgroundWorker BW_RightsEntity.WorkerReportsProgress = True ProgressBar1.Maximum = DT_FILES.Rows.Count Me.ProgressBar1.Visible = True GUID_WORKING = cmbUser.SelectedValue AddHandler BW_RightsEntity.DoWork, AddressOf bw_DoWork ENTITIES_WORKED += 1 '.. und starten BW_RightsEntity.RunWorkerAsync() Next Catch ex As Exception MsgBox("Unexpected error in starting backgroundworker: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) Me.ProgressBar1.Visible = False End Try End If End Sub Private Sub BW_RightsEntity_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BW_RightsEntity.ProgressChanged Me.ProgressBar1.Value = e.ProgressPercentage End Sub Private Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Dim worker As BackgroundWorker = CType(sender, BackgroundWorker) _error = False Dim i As Integer = 1 'Jede Datei einzeln verarbeiten For Each row As DataRow In DT_FILES.Rows If BW_RightsEntity.CancellationPending = True Then e.Cancel = True Exit For Else If DD_Rights.ClassRights.Collect_Users(row.Item("RECORD_ID")) = True Then If DD_Rights.ClassRights.File_DeleteAndSetRight(row.Item("FULL_FILENAME"), True) Then If DD_Rights.ClassRights.MSG_RESULT <> "" Then MsgBox("Unexpected Errors in setting rights: " & vbNewLine & DD_Rights.ClassRights.MSG_RESULT, MsgBoxStyle.Exclamation) _error = True Else End If Else ClassLogger.Add(">> Unexpected Error in ClassRights.File_DeleteAndSetRight. Check Log.") _error = True End If Else _error = True End If If BW_RightsEntity.CancellationPending = False And BW_RightsEntity.IsBusy Then BW_RightsEntity.ReportProgress(i) End If i += 1 End If Next DD_Rights.ClassRights.Finalize_SettingRights() End Sub Private Sub btncancel_Click(sender As Object, e As EventArgs) Handles btncancel.Click ENTITIES_WORKED -= 1 ' Cancel the asynchronous operation. Me.BW_RightsEntity.CancelAsync() End Sub Private Sub BW_RightsEntity_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BW_RightsEntity.RunWorkerCompleted Try btncancel.Visible = False ProgressBar1.Visible = False If _error = False Then If ENTITIES_WORKED = COUNT_ENTITIES Then Dim upd = String.Format("UPDATE TBPMO_USER_RIGHTS_JOBS SET WORKED = 1, CHANGED_WHO = 'JOB-RIGHTS FINISHER' WHERE GUID = {0}", GUID_WORKING) If ClassDatabase.Execute_non_Query(upd) = True Then 'Überprüfen ob es User gibt die aktualisiert werden müssen Dim Sql = "SELECT T.GUID,T1.USERNAME + 'Reason: ' + T.COMMENT AS USER_COMMENT FROM TBPMO_USER_RIGHTS_JOBS T, TBDD_USER T1 WHERE T.USER_ID = T1.GUID AND T.WORKED = 0" DT_WORK_USER_RIGHTS = ClassDatabase.Return_Datatable(Sql) Refresh_Combo() End If MsgBox("All rights of files belonging to entity/User were checked and refreshed successfully!", MsgBoxStyle.Information) End If Else MsgBox("Some errors occured while checking and setting the rights...please check the log!" & vbNewLine & ">> " & ClassRights.COUNT_FILES.ToString & " files schould be worked." & _ ">> " & ClassRights.WORKED_FILES.ToString & " were worked successfully.", MsgBoxStyle.Exclamation) End If Catch ex As Exception End Try End Sub End Class