This commit is contained in:
Jonathan Jenne
2023-09-21 15:51:09 +02:00
parent 1cf5c979db
commit e423365257
8 changed files with 43 additions and 26 deletions

View File

@@ -0,0 +1,132 @@
Public Class ClassFormCommands
Public Shared Function LoadConstructorForms(pScreenId As Integer, pConstructorId As Integer, pLanguage As String)
Try
Dim Sql = $"SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION](
'{pLanguage}',
'FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID),
{pScreenId}) AS 'CAPTION'
FROM VWPMO_CONSTRUCTOR_FORMS
WHERE
SCREEN_ID = {pScreenId} AND
CONSTRUCT_ID = {pConstructorId}
ORDER BY SEQUENCE"
Dim oTable = MYDB_ECM.GetDatatable(Sql)
Return oTable
Catch ex As Exception
Return Nothing
End Try
End Function
Public Shared Function LoadForm(guid) As DataTable
Try
Dim SQL As String = "SELECT NAME, LEVEL FROM TBPMO_FORM WHERE GUID = " & guid
Dim DT As DataTable = MYDB_ECM.GetDatatable(SQL)
If DT.Rows.Count = 1 Then
Return DT
Else
Throw New Exception()
End If
Catch ex As Exception
MsgBox("Fehler beim Laden der Anzeigeeigenschaften der Form: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return Nothing
End Try
End Function
Public Shared Function LoadFormView(guid) As DataTable
Try
Dim SQL As String = "SELECT FORM_TITLE FROM TBPMO_FORM_VIEW WHERE FORM_ID = " & guid
Dim DT As DataTable = MYDB_ECM.GetDatatable(SQL)
If DT.Rows.Count = 1 Then
Return DT
Else
Throw New Exception()
End If
Catch ex As Exception
MsgBox("Fehler beim Laden der Formeigenschaften: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return Nothing
End Try
End Function
Public Shared Function SaveForm(guid As Integer, form_name As String, form_level As Integer, form_title As String, doc_view As Integer)
Try
Dim SQL As String
Dim NAME As String = form_name
Dim LEVEL As String = form_level
SQL = "UPDATE TBPMO_FORM SET NAME = '" & NAME & "', LEVEL = " & LEVEL & "WHERE GUID = " & guid
If MYDB_ECM.ExecuteNonQuery(Sql) = True Then
Return SaveFormView(guid, form_title, doc_view)
Else
Throw New Exception()
End If
Catch ex As Exception
MsgBox("Fehler beim Speichern der Formeigenschaften: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Public Shared Function SaveFormView(guid As Integer, form_title As String, doc_view As Integer)
Try
Dim SQL As String
Dim TITLE As String = form_title
Dim DOCUMENT_VIEW As Integer = doc_view
SQL = "UPDATE TBPMO_FORM_VIEW SET FORM_TITLE = '" & TITLE & "', DOCUMENT_VIEW = " & DOCUMENT_VIEW & " WHERE FORM_ID = " & guid
If MYDB_ECM.ExecuteNonQuery(Sql) = True Then
Return True
Else
Throw New Exception()
End If
Catch ex As Exception
MsgBox("Fehler beim Speichern der Anzeigeeigenschaften der Form: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Public Shared Function DeleteFormView(guid)
Try
Dim SQL As String = "DELETE FROM TBPMO_WD_FORMVIEW_DOKTYPES WHERE FORMVIEW_ID in (SELECT GUID FROM TBPMO_FORM_VIEW WHERE FORM_ID = " & guid & ")"
If MYDB_ECM.ExecuteNonQuery(Sql) = False Then Return False
SQL = "DELETE FROM TBPMO_FORM_VIEW WHERE FORM_ID = " & guid
If MYDB_ECM.ExecuteNonQuery(Sql) = False Then
Return False
Else
Return True
End If
Catch ex As Exception
MsgBox("Fehler beim Löschen der Anzeigeeigenschaften der Form: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Public Shared Function DeleteFormControls(guid)
Try
Dim SQL As String = "SELECT GUID FROM TBPMO_CONTROL WHERE FORM_ID = " & guid
Dim dt As DataTable = MYDB_ECM.GetDatatable(SQL)
If dt.Rows.Count > 0 Then
For Each row As DataRow In dt.Rows
Dim controlid As Integer = row.Item(0)
CURRENT_CONTROL_ID = controlid
ClassControlCommands.DeleteControl(controlid)
Next
End If
Return True
Catch ex As Exception
MsgBox("Fehler beim Löschen der FormControls: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
End Class

View File

@@ -0,0 +1,76 @@
Public Class ClassFunctionCommands
'Public Shared Function InsertFunction(ControlId As Integer)
' Try
' Dim SQL As String = "INSERT INTO TBPMO_FUNCTION_ADD_APPOINTMENT(CONTROL_ID) VALUES (" & ControlId & ")"
' MYDB_ECM.ExecuteNonQuery(Sql)
' Return True
' Catch ex As Exception
' MsgBox("Fehler beim Anlegen der KalenderFunktion:" & vbNewLine & ex.Message)
' Return False
' End Try
'End Function
Public Shared Function InsertFunction(ControlId As Integer, Method As String)
Try
Dim SQL As String = "INSERT INTO TBPMO_FUNCTION_GENERAL (CONTROL_ID, METHOD) VALUES (" & ControlId & ", '" & Method & "')"
MYDB_ECM.ExecuteNonQuery(Sql)
Return True
Catch ex As Exception
MsgBox("Fehler beim Anlegen der Funktion " & Method & ":" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Public Shared Function UpdateAddAppointmentFunction(ControlId As Integer, FromDateId As Integer, ToDateId As Integer, SubjectString As String, Subject2String As String, PlaceString As String, DescriptionString As String)
Try
Dim SQL As String = "UPDATE TBPMO_FUNCTION_GENERAL SET INTEGER1 = " & FromDateId & ", INTEGER2 = " & ToDateId & ", STRING1 = '" & SubjectString & "', STRING2 = '" & Subject2String & "', STRING3 = '" & PlaceString & "', STRING4 = '" & DescriptionString & "' WHERE CONTROL_ID = " & ControlId
If MYDB_ECM.ExecuteNonQuery(Sql) = False Then
Throw New Exception("Datenbankfehler.")
End If
Return True
Catch ex As Exception
MsgBox("Error in UpdateAddAppointmentFunction:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Public Shared Function UpdateAddFormDataFunction(ControlId As Integer, FormId As Integer, ScreenId As Integer)
Try
Dim SQL As String = "UPDATE TBPMO_FUNCTION_GENERAL SET INTEGER1 = " & FormId & ", INTEGER2 = " & ScreenId & " WHERE CONTROL_ID = " & ControlId
If MYDB_ECM.ExecuteNonQuery(Sql) = False Then
Throw New Exception("Datenbankfehler.")
End If
Return True
Catch ex As Exception
MsgBox("Error in UpdateAddFormDataFunction:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Public Shared Function LoadFunction(ControlId As Integer) As DataRow
Try
Dim SQL As String = "SELECT * FROM TBPMO_FUNCTION_GENERAL WHERE CONTROL_ID = " & ControlId
Dim dt As DataTable = MYDB_ECM.GetDatatable(SQL)
If dt.Rows.Count = 1 Then
Return dt.Rows.Item(0)
Else
Throw New Exception("Funktion für " & ControlId & " wurde nicht gefunden")
End If
Catch ex As Exception
MsgBox("Error in LoadFunction:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return Nothing
End Try
End Function
Public Shared Function GETCONTROL_ID_FOR_COL_NAME(FORM_ID As Integer, Column_Name As String)
Try
Dim SQL As String = "SELECT GUID FROM TBPMO_CONTROL WHERE FORM_ID = " & FORM_ID & " AND COL_NAME = '" & Column_Name & "'"
Dim result = MYDB_ECM.GetScalarValue(SQL)
Return result
Catch ex As Exception
MsgBox("Error in GETCONTROL_ID_FOR_COL_NAME:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return Nothing
End Try
End Function
End Class

View File

@@ -0,0 +1,211 @@
Imports DevExpress.XtraScheduler
Public Class ClassFunctionCommandsUI
Shared Sub NewEditTaskAppointment(RecordID As Integer, ControlID As Integer, Subject As String, Description As String, DueDateTime As DateTime)
Try
Dim apt As Appointment = frmCalendar.SchedulerStorage1.CreateAppointment(AppointmentType.Normal)
Dim reminder As Reminder = apt.CreateNewReminder()
Dim SQL As String = "SELECT VALUE FROM VWPMO_VALUES where [RECORD_ID] = " & RecordID & " and [CONTROL_ID] = " & ControlID
reminder.AlertTime = DueDateTime
apt.Reminders.Add(reminder)
Dim Value = MYDB_ECM.GetScalarValue(SQL)
If Value Is Nothing Then
apt.Subject = Subject & " - " & Value.ToString()
Else
apt.Subject = Subject
End If
apt.Description = Description
apt.AllDay = True
apt.Start = DueDateTime
apt.End = DueDateTime
apt.CustomFields("RecordID") = RecordID
apt.CustomFields("ControlID") = ControlID
frmCalendar.SchedulerControl1.ShowEditAppointmentForm(apt)
Catch ex As Exception
MsgBox("Error in NewEditTaskAppointment:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Shared Sub NewTaskAppointment(RecordID As Integer, ControlID As Integer, Subject As String, Description As String, DueDateTime As DateTime)
Dim apt As Appointment = frmCalendar.SchedulerStorage1.CreateAppointment(AppointmentType.Normal)
Dim reminder As Reminder = apt.CreateNewReminder()
Dim SQL As String = "SELECT VALUE FROM VWPMO_VALUES where [RECORD_ID] = " & RecordID & " and [CONTROL_ID] = " & ControlID
reminder.AlertTime = DueDateTime
apt.Reminders.Add(reminder)
Dim Value = MYDB_ECM.GetScalarValue(SQL)
apt.Subject = Subject & " - " & Value.ToString()
apt.Description = Description
apt.AllDay = True
apt.Start = DueDateTime
apt.End = DueDateTime
apt.CustomFields("RecordID") = RecordID
apt.CustomFields("ControlID") = ControlID
frmCalendar.SchedulerControl1.ShowEditAppointmentForm(apt)
End Sub
Shared Sub NewEditAppointment(ControlName As String, FormID As Integer, RecordID As Integer, PanelControls As Control.ControlCollection)
Try
Dim controlID = GetControlID_for_Name(ControlName, FormID)
Dim SQL = "SELECT UniqueID FROM TBPMO_APPOINTMENTS WHERE CustomField1 = " & RecordID & " AND CustomField2 = " & controlID
Dim result = MYDB_ECM.GetScalarValue(SQL)
If result Is Nothing Then
NewAppointment(ControlName, FormID, RecordID, PanelControls)
Else
EditAppointment(ControlName, FormID, RecordID)
End If
Catch ex As Exception
MsgBox("Error in OpenEditAppointment:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Shared Function FindControlValue(ControlName As String, PanelControls As Control.ControlCollection) As String
If ControlName = Nothing Then
Return Nothing
Else
Dim from_ctrls() As Control = PanelControls.Find(ControlName, True)
Dim from_ctrl As Control
If from_ctrls.Length = 1 Then
from_ctrl = from_ctrls(0)
Return from_ctrl.Text
Else : Return Nothing
End If
End If
End Function
Private Shared Sub NewAppointment(ControlName As String, FormID As Integer, RecordID As Integer, PanelControls As Control.ControlCollection)
Try
Dim ControlId As Integer = GetControlID_for_Name(ControlName, FormID)
Dim dr As DataRow = ClassFunctionCommands.LoadFunction(ControlId)
Dim apt As Appointment = frmCalendar.SchedulerStorage1.CreateAppointment(AppointmentType.Normal)
Dim FromDateName, ToDateName As String
Dim FromDateValue, ToDateValue As Date
Dim SubjectValue, Subject2Value, PlaceValue, DescValue As String
Dim FromDateID As Object = dr.Item("INTEGER1")
Dim ToDateID As Object = dr.Item("INTEGER2")
Dim SubjectString As Object = dr.Item("STRING1")
Dim Subject2String As Object = dr.Item("STRING2")
Dim PlaceString As Object = dr.Item("STRING3")
Dim DescString As Object = dr.Item("STRING4")
' Setzt das Start-Datum des Termins fest.
' Wenn kein Start-Datum gefunden wurde, wird das aktuelle Datum benutzt.
If Not IsDBNull(FromDateID) Then
If FromDateID <> 0 Then
FromDateName = Get_Name_for_ControlID(FromDateID, FormID)
FromDateValue = Date.Parse(FindControlValue(FromDateName, PanelControls))
apt.Start = FromDateValue
Else
apt.Start = Date.Now
End If
Else
apt.Start = Date.Now
End If
' Setzt das End-Datum des Termins fest.
' Wenn kein End-Datum gefunden wurde, wird das Start-Datum benutzt.
If Not IsDBNull(ToDateID) Then
If ToDateID <> 0 Then
ToDateName = Get_Name_for_ControlID(ToDateID, FormID)
If (Date.TryParse(FindControlValue(ToDateName, PanelControls), ToDateValue) = True) Then
apt.End = ToDateValue
Else
apt.End = apt.Start
End If
Else
apt.End = apt.Start
End If
Else
apt.End = apt.Start
End If
If Not IsDBNull(SubjectString) OrElse Not String.IsNullOrWhiteSpace(SubjectString) Then
SubjectValue = ReplacePlaceholders(SubjectString, RecordID, ControlName, PanelControls)
apt.Subject = SubjectValue
End If
If Not IsDBNull(Subject2String) OrElse Not String.IsNullOrWhiteSpace(Subject2String) Then
Subject2Value = ReplacePlaceholders(Subject2String, RecordID, ControlName, PanelControls)
If Not String.IsNullOrEmpty(Subject2Value) Then
apt.Subject = apt.Subject & " - " & Subject2Value
End If
End If
If Not IsDBNull(PlaceString) OrElse Not String.IsNullOrWhiteSpace(PlaceString) Then
PlaceValue = ReplacePlaceholders(PlaceString, RecordID, ControlName, PanelControls)
apt.Location = PlaceValue
End If
If Not IsDBNull(DescString) OrElse Not String.IsNullOrWhiteSpace(DescString) Then
DescValue = ReplacePlaceholders(DescString, RecordID, ControlName, PanelControls)
apt.Description = DescValue
End If
apt.AllDay = True
apt.CustomFields("RecordID") = RecordID
apt.CustomFields("ControlID") = ControlId
frmCalendar.SchedulerControl1.ShowEditAppointmentForm(apt)
Catch ex As Exception
MsgBox("Fehler beim Laden der Termininformationen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Public Shared Function ReplacePlaceholders(str As String, RecordID As Integer, ControlName As String, PanelControls As Control.ControlCollection)
Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
Dim regexp As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(preg)
Dim matches As System.Text.RegularExpressions.MatchCollection = regexp.Matches(str)
If matches.Count = 0 Then
Return str
End If
For Each match As System.Text.RegularExpressions.Match In matches
Dim ControlNameToReplace As String = match.Value.Substring(2, match.Value.Length - 3)
Dim ControlValue As String = FindControlValue(ControlNameToReplace, PanelControls)
str = str.Replace(match.Value, ControlValue)
Next
Return str
End Function
Private Shared Sub EditAppointment(ControlName As String, FormID As Integer, RecordID As Integer)
Try
Dim controlID = GetControlID_for_Name(ControlName, FormID)
' Load All appointments first
frmCalendar.TBPMO_RESOURCESTableAdapter.Connection.ConnectionString = MYDB_ECM.CurrentConnectionString
frmCalendar.TBPMO_APPOINTMENTSTableAdapter.Connection.ConnectionString = MYDB_ECM.CurrentConnectionString
frmCalendar.TBPMO_RESOURCESTableAdapter.Fill(frmCalendar.DD_DMSDataSetCalendar.TBPMO_RESOURCES)
frmCalendar.TBPMO_APPOINTMENTSTableAdapter.Fill(frmCalendar.DD_DMSDataSetCalendar.TBPMO_APPOINTMENTS)
Dim apt As Appointment = frmCalendar.SchedulerStorage1.Appointments.Items.Find(Function(a As Appointment)
Return Convert.ToInt32(a.CustomFields("RecordID")).Equals(RecordID) And Convert.ToInt32(a.CustomFields("ControlID")).Equals(controlID)
End Function)
If apt IsNot Nothing Then
frmCalendar.SchedulerControl1.ShowEditAppointmentForm(apt)
End If
Catch ex As Exception
MsgBox("Error in EditAppointment:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
End Class

View File

@@ -0,0 +1,34 @@
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Public Class ClassNodeCommands
Inherits BaseClass
Private ReadOnly Database As MSSQLServer
Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer)
MyBase.New(pLogConfig)
Database = pDatabase
End Sub
Public Async Function LoadNodes(pEntityId As Integer) As Task(Of DataTable)
Dim oStructureNodeSql = $"SELECT
T.GUID,
T.RECORD_ID,
T.NODE_CONFIG_ID,
T.NODE_CAPTION,
T.ID1,
T.BACK_COLOR,
T.PARENT_GUID,
T.SEQUENCE,
T.TYPE_NODE
FROM
VWPMO_STRUCTURE_NODES T
INNER JOIN VWPMO_CONSTRUCTOR_FORMS T1 ON T.ENTITY_ID = T1.FORM_ID
WHERE T.ENTITY_ID = {pEntityId}"
Dim oTable = Await Database.GetDatatableAsync(oStructureNodeSql)
Return oTable
End Function
End Class

View File

@@ -0,0 +1,60 @@
Imports System.Data.SqlClient
Imports DD_LIB_Standards
Public Class ClassRecordCommands
Public Shared Function CreateRecordProcedure(formId As Integer)
Try
Dim connection As New SqlConnection
connection.ConnectionString = MYDB_ECM.CurrentConnectionString
Using cmd As New SqlCommand("PRPMO_CREATE_RECORD", connection)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@pFORM_ID", formId)
cmd.Parameters.AddWithValue("@pADDED_WHO", Environment.UserName)
cmd.Parameters.Add("@pRESULT", SqlDbType.Int)
cmd.Parameters("@pRESULT").Direction = ParameterDirection.Output
connection.Open()
cmd.ExecuteNonQuery()
connection.Close()
Dim GUID As Integer = cmd.Parameters("@pRESULT").Value
If GUID > 0 And clsDatabase.DB_PROXY_INITIALIZED = True Then
If ClassProxy.PRPROXY_RECORD_UPD_INS(formId, GUID) = True Then
ClassProxy.PRPROXY_CONTROL_VALUE_RENEW(GUID)
End If
End If
Return GUID
End Using
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in CreateRecordProcedure: ")
LOGGER.Warn("Error in CreateRecordProcedure: " & ex.Message)
ClassHelper.InsertEssential_Log(formId, "ENTITY-ID", "ENTITY-ID: " & formId & ": " & ex.Message)
Return 0
End Try
End Function
Public Shared Function CreateRecord(EntityID)
Dim SQL = "INSERT INTO TBPMO_RECORD(ADDED_WHO, FORM_ID,RECORD_ENTITY_ID) VALUES ('" & USER_USERNAME & "', " & EntityID & ",4711)"
Return MYDB_ECM.ExecuteNonQuery(Sql)
End Function
Public Shared Function GetLastRecord()
Dim SQL = String.Format("SELECT MAX(GUID) FROM TBPMO_RECORD where PARENT_RECORD = 0 AND FORM_ID = {0} AND UPPER(ADDED_WHO) = UPPER('{1}') AND DELETED = 0", CURRENT_ENTITY_ID, USER_USERNAME)
Return MYDB_ECM.GetScalarValue(SQL)
End Function
Public Shared Function ConnectRecord(PARENT_RECORD As Integer, LINK_RECORD As Integer, Optional Comment As String = "")
Dim SQL = "INSERT INTO TBPMO_RECORD_CONNECT(RECORD1_ID,RECORD2_ID,COMMENT,ADDED_WHO) VALUES (" & PARENT_RECORD & "," & LINK_RECORD & ",'" & Comment & "','" & USER_USERNAME & "')"
LOGGER.Debug("ConnectRecord SQL: " & SQL)
Return MYDB_ECM.ExecuteNonQuery(Sql)
End Function
Public Shared Function CHECK_RECORD_FINAL(RecordId As Integer, IsInsert As Boolean)
If RecordId = 0 Then Return True
Dim SQL = String.Format("EXEC PRPMO_RECORD_CHECK_INTEGRITY {0},'{1}',{2}", RecordId, Environment.UserName, IsInsert)
Return MYDB_ECM.ExecuteNonQuery(Sql)
End Function
End Class