106 lines
3.5 KiB
VB.net
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
|