SchreiberM f4db45d3aa MS
2017-03-13 16:05:46 +01:00

246 lines
11 KiB
VB.net

Imports DD_Rights
Imports System.ComponentModel
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.Utils
Public Class frmCheckRightsRecords
Private _formloaded As Boolean = False
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 CURR_DOCPATH As String
Private ENTITY_ID As Integer
Dim righterrors As Boolean = False
Private DT_DATA As DataTable
Private Sub frmCheckRightsRecords_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 And DT_DATA.Rows.Count > 0 Then
Try
DT_DATA.AcceptChanges()
righterrors = False
CURR_DOCID = 0
ENTITY_ID = cmbentity.SelectedValue
countfiles = 0
Me.ProgressBar1.Visible = True
'BackgroundWorker erstellen ...
BW_RightsEntity = New BackgroundWorker
BW_RightsEntity.WorkerReportsProgress = True
BW_RightsEntity.WorkerSupportsCancellation = True
Dim listRecords As New ArrayList
If DD_Rights.ClassWDRights.Init(chklogging.Checked, ClassDatabase.ConnectionStringRM) = False Then
MsgBox("Could not init rights management. " & vbNewLine & "Check logfile", MsgBoxStyle.Critical)
Exit Sub
End If
For Each row As DataRow In DT_DATA.Rows
If row.Item("Selection") = True Then
Dim recid = row.Item("Record-ID")
If Not IsNothing(recid) Then
listRecords.Add(recid)
End If
End If
Next
For Each Record As String In listRecords
Dim sqlfiles = String.Format("SELECT TRL.DOC_ID FROM TBPMO_DOC_RECORD_LINK TRL WHERE TRL.RECORD_ID = {0} ORDER BY TRL.DOC_ID", Record)
DT_FILES = clsDatabase.Return_Datatable(sqlfiles)
If DT_FILES.Rows.Count > 0 Then
countfiles += DT_FILES.Rows.Count
End If
Next
If countfiles = 0 Then
MsgBox("No files were found! Please check docsearch!", MsgBoxStyle.Critical)
Exit Sub
Else
clsLogger.Add(String.Format(">> {0} files must be Checked!", countfiles), False)
End If
btncancel.Visible = True
lblstate.Visible = True
lblstate.Text = "Starting Background Worker...."
WorkingFiles = 0
ProgressBar1.Maximum = countfiles
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
Dim listRecords As New ArrayList
For Each row As DataRow In DT_DATA.Rows
If row.Item("Selection") = True Then
Dim recid = row.Item("Record-ID")
If Not IsNothing(recid) Then
listRecords.Add(recid)
End If
End If
Next
For Each Record As String In listRecords
Dim sqlfiles = String.Format("SELECT T.DocID,T.FULL_FILENAME FROM VWPMO_DOC_SEARCH T, TBPMO_DOC_RECORD_LINK TRL where T.DocID = TRL.DOC_ID AND TRL.RECORD_ID = {0} ORDER BY DocID", Record)
DT_FILES = clsDatabase.Return_Datatable(sqlfiles)
If DT_FILES.Rows.Count > 0 Then
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
'###
WorkingFiles += 1
CURR_DOCID = row.Item("DocID")
CURR_DOCPATH = row.Item("FULL_FILENAME")
If DD_Rights.ClassWDRights.Doc_Renew_Rights(CURR_DOCID, CURR_DOCPATH, True) Then
If DD_Rights.ClassWDRights.MSG_RESULT <> "" Then
righterrors = True
End If
Else
MsgBox("Unexpected Error in DD_Rights.ClassWDRights.Doc_Renew_Rights - Check the log!", MsgBoxStyle.Exclamation)
If DD_Rights.ClassWDRights.MSG_RESULT <> "" Then
MsgBox(DD_Rights.ClassWDRights.MSG_RESULT, MsgBoxStyle.Information)
End If
_error = True
End If
BW_RightsEntity.ReportProgress(i)
i += 1
End If
Next
End If
Next
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 selected records 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 selected records were checked and refreshed!", MsgBoxStyle.Information)
End If
Else
MsgBox("Some errors occured while preparing and queuing rights...please check the log!", MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
End Try
End Sub
Private Sub cmbentity_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbentity.SelectedIndexChanged
Try
If _formloaded = False Then Exit Sub
If cmbentity.SelectedIndex <> -1 Then
ENTITY_ID = cmbentity.SelectedValue
Dim ViewName As String = "VWTEMP_PMO_FORM" & cmbentity.SelectedValue.ToString
Dim EntitySQL As String = "SELECT CONVERT(BIT,0) as Selection, T.* FROM " & ViewName & " T where [file count] > 0"
Me.Cursor = Cursors.WaitCursor
DT_DATA = clsDatabase.Return_Datatable(EntitySQL)
GridControlMain.DataSource = Nothing
If GridViewMain.Columns.Count > 0 Then
GridViewMain.Columns.Clear()
End If
If Not IsNothing(DT_DATA) Then
GridControlMain.DataSource = DT_DATA
Dim checkboxEdit = New RepositoryItemCheckEdit()
Dim dateEdit As New RepositoryItemTimeEdit()
' checkboxEdit vor-formatieren
checkboxEdit.ValueChecked = True
checkboxEdit.ValueUnchecked = False
' dateEdit vor-formatieren
dateEdit.DisplayFormat.FormatType = FormatType.DateTime
dateEdit.Mask.UseMaskAsDisplayFormat = True
' Editoren zum Grid hinzufügen
GridViewMain.GridControl.RepositoryItems.AddRange({checkboxEdit, dateEdit})
End If
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
Finally
Me.Cursor = Cursors.Default
End Try
End Sub
Private Sub frmCheckRightsRecords_Shown(sender As Object, e As EventArgs) Handles Me.Shown
_formloaded = True
End Sub
Private Sub btnSelectVisiblRows_Click(sender As Object, e As EventArgs) Handles btnSelectVisiblRows.Click
Dim listRecords As New ArrayList
Dim collist As New ArrayList
For i = 0 To GridViewMain.RowCount
Dim recid = GridViewMain.GetRowCellValue(i, "Record-ID")
If Not IsNothing(recid) Then
listRecords.Add(recid)
End If
Next
For Each row As DataRow In DT_DATA.Rows
For Each Record As String In listRecords
If Record = row.Item("Record-ID") Then
row.Item("Selection") = True
Exit For
End If
Next
Next
End Sub
Private Sub btnUnselect_Click(sender As Object, e As EventArgs) Handles btnUnselect.Click
Dim listRecords As New ArrayList
Dim collist As New ArrayList
For i = 0 To GridViewMain.RowCount
Dim recid = GridViewMain.GetRowCellValue(i, "Record-ID")
If Not IsNothing(recid) Then
listRecords.Add(recid)
End If
Next
For Each row As DataRow In DT_DATA.Rows
For Each Record As String In listRecords
If Record = row.Item("Record-ID") Then
row.Item("Selection") = False
Exit For
End If
Next
Next
End Sub
End Class