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