RecordOrganizer/app/DD-Record-Organizer/Classes/ClassFunctionCommandsUI.vb

212 lines
9.5 KiB
VB.net

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 = ClassDatabase.Execute_Scalar(SQL, True)
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 = ClassDatabase.Execute_Scalar(SQL, True)
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 = ClassDatabase.Execute_Scalar(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 = MyConnectionString
frmCalendar.TBPMO_APPOINTMENTSTableAdapter.Connection.ConnectionString = MyConnectionString
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