2024-01-18 18:10:27 +01:00

106 lines
3.5 KiB
VB.net

Public Class CalEvent
Dim varTitle As String
Public Location As String
Public Organizer As User
Dim varStartDate, varStopDate As DateTime
Dim UID As String
Dim Busy As Boolean = True
Public Categories As New List(Of String)
Dim StartDateSet, StopDateSet, StartTimeSet, StopTimeSet As Boolean
Public Sub New(creator As User)
UID = Format(DateTime.Now, "yyyyMMdd-HHmmssffff") & "@" & creator.EMail.Split(CChar("@"))(1)
setStartDate(Now.Year, Now.Month, Now.Day)
End Sub
Public Function getVEvent() As String
If StartTimeSet = False Then StopTimeSet = False
If StopDateSet = False Then
setStopDate(varStartDate.Year, varStartDate.Month, varStartDate.Day)
End If
If StartTimeSet And StopTimeSet = False Then
setStopTime(DateAdd(DateInterval.Hour, 3, varStartDate))
End If
getVEvent = "BEGIN:VEVENT" & vbCrLf
getVEvent &= "UID:" & UID & vbCrLf
getVEvent &= "DTSTAMP:" & Format(DateTime.UtcNow, "yyyyMMdd""T""HHmmss") & vbCrLf
If Organizer IsNot Nothing Then getVEvent &= "ORGANIZER:" & Organizer.QualifiedName & vbCrLf
If StartTimeSet = False Then
getVEvent &= "DTSTART;VALUE=DATE:" & Format(varStartDate, "yyyyMMdd") & vbCrLf
getVEvent &= "DTEND;VALUE=DATE:" & Format(varStopDate, "yyyyMMdd") & vbCrLf
Else
getVEvent &= "DTSTART:" & Format(varStartDate, "yyyyMMdd""T""HHmmss") & vbCrLf
getVEvent &= "DTEND:" & Format(varStopDate, "yyyyMMdd""T""HHmmss") & vbCrLf
End If
getVEvent &= "SUMMARY:" & varTitle & vbCrLf
Dim catstring As String = Nothing
For Each itm As String In Categories
catstring &= itm & ","
Next
catstring = catstring.Remove(catstring.LastIndexOf(","))
getVEvent &= "CATEGORIES:" & catstring & vbCrLf
getVEvent &= "END:VEVENT"
End Function
Public Property Title As String
Get
Return varTitle
End Get
Set(value As String)
varTitle = value.Replace("\", "\\").Replace(";", "\;").Replace(",", "\,")
End Set
End Property
Public Sub setStartDate(year As Integer, month As Integer, day As Integer)
varStartDate = New Date(year, month, day, varStartDate.Hour, varStartDate.Minute, varStartDate.Second)
StartDateSet = True
End Sub
Public Sub setStopDate(year As Integer, month As Integer, day As Integer)
varStopDate = New Date(year, month, day, varStopDate.Hour, varStopDate.Minute, varStopDate.Second)
StopDateSet = True
End Sub
Public Sub setStartTime(hour As Integer, minute As Integer, second As Integer)
varStartDate = New Date(varStartDate.Year, varStartDate.Month, varStartDate.Day, hour, minute, second)
StartTimeSet = True
End Sub
Public Sub setStopTime(hour As Integer, minute As Integer, second As Integer)
varStopDate = New Date(varStopDate.Year, varStopDate.Month, varStopDate.Day, hour, minute, second)
StopTimeSet = True
End Sub
Public Sub setStopTime(time As Date)
varStopDate = time
StopTimeSet = True
End Sub
End Class
Public Class User
Public Name, EMail As String
Public Sub New(varName As String, varMail As String)
Name = varName
EMail = varMail
End Sub
Public Function QualifiedName() As String
QualifiedName = "CN=" & Name & ":MAILTO:" & EMail
End Function
End Class