Files
RecordOrganizer/app/RecordOrganizer_RightManager/frmCheckRightsEntity.vb
SchreiberM a3a0a318c1 MS0211
2016-11-01 16:38:40 +01:00

132 lines
7.0 KiB
VB.net

Imports DD_Rights
Imports System.ComponentModel
Public Class frmCheckRightsEntity
Private DT_FILES As DataTable
Private _error As Boolean = False
Private countfiles As Integer = 0
Private WorkingFiles As Integer = 0
Private CURR_DOCID As Integer
Private ENTITY_ID As Integer
Dim righterrors As Boolean = False
Private Sub frmCheckRightsEntity_Load(sender As Object, e As EventArgs) Handles Me.Load
Try
Dim sql = String.Format("SELECT T.FORM_ID, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), T.[FORM_VIEW_ID]), 1) AS FORM_TITLE FROM VWPMO_CONSTRUCTOR_FORMS T WHERE DOCUMENT_VIEW = 1", USER_LANGUAGE)
Dim DT As DataTable = clsDatabase.Return_Datatable(sql)
cmbentity.DataSource = DT
cmbentity.ValueMember = DT.Columns(0).ColumnName
cmbentity.DisplayMember = DT.Columns(1).ColumnName
lblstate.Visible = False
Catch ex As Exception
MsgBox("Unexpected error in load form: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Sub btnCheckRights_Click(sender As Object, e As EventArgs) Handles btnCheckRights.Click
If cmbentity.SelectedIndex <> -1 Then
Try
righterrors = False
CURR_DOCID = 0
ENTITY_ID = cmbentity.SelectedValue
Me.ProgressBar1.Visible = True
'BackgroundWorker erstellen ...
BW_RightsEntity = New BackgroundWorker
BW_RightsEntity.WorkerReportsProgress = True
BW_RightsEntity.WorkerSupportsCancellation = True
Dim sqlfiles = String.Format("SELECT T.DocID,T.FULL_FILENAME,TRL.RECORD_ID,TR.FORM_ID AS [ENTITY_ID] FROM VWPMO_DOC_SEARCH T, TBPMO_DOC_RECORD_LINK TRL, TBPMO_RECORD TR where T.DocID = TRL.DOC_ID AND TRL.RECORD_ID = TR.GUID AND TR.FORM_ID = {0} ORDER BY DocID", ENTITY_ID)
DT_FILES = clsDatabase.Return_Datatable(sqlfiles)
If DD_Rights.ClassRights.Init(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
If DT_FILES.Rows.Count = 0 Then
MsgBox("No files were found! Please check docsearch!", MsgBoxStyle.Critical)
Exit Sub
Else
clsLogger.Add(String.Format(">> {0} files must be transferred!", DT_FILES.Rows.Count), False)
End If
btncancel.Visible = True
lblstate.Visible = True
lblstate.Text = "Starting Background Worker...."
countfiles = DT_FILES.Rows.Count - 1
WorkingFiles = 0
ProgressBar1.Maximum = DT_FILES.Rows.Count
AddHandler BW_RightsEntity.DoWork, AddressOf bw_DoWork
'.. und starten
BW_RightsEntity.RunWorkerAsync()
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
Dim state = "Working on file '" & WorkingFiles.ToString & "' of '" & countfiles.ToString & "'"
lblstate.Text = state
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
MsgBox("Backgroundworker aborting - check log!", MsgBoxStyle.Critical)
e.Cancel = True
Exit For
Else
If DD_Rights.ClassRights.Collect_Users(row.Item("RECORD_ID"), row.Item("ENTITY_ID")) = True Then
WorkingFiles += 1
CURR_DOCID = row.Item("DocID")
If DD_Rights.ClassRights.TransferRights2Service(row.Item("DocID"), row.Item("FULL_FILENAME"), 1) Then
If DD_Rights.ClassRights.MSG_RESULT <> "" Then
righterrors = True
End If
Else
MsgBox("Unexpected Error in DD_Rights.ClassRights.TransferRights2Service - Check the log!", MsgBoxStyle.Exclamation)
If DD_Rights.ClassRights.MSG_RESULT <> "" Then
MsgBox(DD_Rights.ClassRights.MSG_RESULT, MsgBoxStyle.Information)
End If
_error = True
End If
Else
MsgBox("Unexpected Error in DD_Rights.ClassRights.Collect_Users - Check the log!", MsgBoxStyle.Exclamation)
If DD_Rights.ClassRights.MSG_RESULT <> "" Then
MsgBox(DD_Rights.ClassRights.MSG_RESULT, MsgBoxStyle.Information)
End If
_error = True
End If
BW_RightsEntity.ReportProgress(i)
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
' 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
lblstate.Visible = False
ProgressBar1.Visible = False
If _error = False Then
clsDatabase.Execute_non_Query("UPDATE TBPMO_SERVICE_RIGHT_CONFIG SET RUN_SERVICE = 1 WHERE GUID = 1")
If righterrors = True Then
MsgBox("All rights of files belonging to entity were checked and refreshed, " & vbNewLine & "BUT some Userrights could not be set. Check the logfile!", MsgBoxStyle.Exclamation, "Attention")
Else
MsgBox("All rights of files belonging to entity were queued for central rights service!" & vbNewLine & "Rights will be set within the next 5 minutes!", MsgBoxStyle.Information)
End If
Else
MsgBox("Some errors occured while preparing and queuing 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