private string GetCalendarData() { Ical.Net.Calendar calendar = new Ical.Net.Calendar(); Ical.Net.Event calevent = new Ical.Net.Event(); calevent.DtStart = new CalDateTime(StartOn); calevent.DtEnd = new CalDateTime(EndOn); calevent.Description = Description; calevent.Location = Location; calevent.Summary = Subject; calevent.Organizer = new Organizer(CreatedBy.CorporateEmail); calevent.IsAllDay = AllDay; calevent.Uid = Oid.ToString(); foreach (ScheduleParticipant peeps in ScheduleParticipants) { string role; switch ((int)peeps.AttendanceType) { case 0: role = "REQ-PARTICIPANT"; break; case 1: role = "OPT-PARTICIPANT"; break; case 2: role = "NON-PARTICIPANT"; break; default: role = "REQ-PARTICIPANT"; break; } Attendee attendee = new Attendee() { CommonName = peeps.Participant.FullName, Role = role, Rsvp = true, Value = new Uri(String.Format("mailto:{0}", peeps.Participant.CorporateEmail)) }; calevent.Attendees.Add(attendee); } calendar.Events.Add(calevent); calendar.Method = "REQUEST"; CalendarSerializer serializer = new CalendarSerializer(calendar); string calData = serializer.SerializeToString(); return(calData); }
public void EnsureAutomaticallySetDTSTAMPisSerializedAsKindUTC() { var ical = new Ical.Net.Calendar(); var evt = new Ical.Net.Event(); ical.Events.Add(evt); var serializer = new Ical.Net.Serialization.iCalendar.Serializers.CalendarSerializer(); var serializedCalendar = serializer.SerializeToString(ical); var lines = serializedCalendar.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); var result = lines.First(s => s.StartsWith("DTSTAMP")); Assert.AreEqual($"DTSTAMP:{evt.DtStamp.Year}{evt.DtStamp.Month:00}{evt.DtStamp.Day:00}T{evt.DtStamp.Hour:00}{evt.DtStamp.Minute:00}{evt.DtStamp.Second:00}Z", result); }
public void EnsureCorrectSetDTSTAMPisSerializedAsKindUTC() { var ical = new Ical.Net.Calendar(); var evt = new Ical.Net.Event(); evt.DtStamp = new CalDateTime(new DateTime(2016, 8, 17, 2, 30, 0, DateTimeKind.Utc)); ical.Events.Add(evt); var serializer = new Ical.Net.Serialization.iCalendar.Serializers.CalendarSerializer(); var serializedCalendar = serializer.SerializeToString(ical); var lines = serializedCalendar.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); var result = lines.First(s => s.StartsWith("DTSTAMP")); Assert.AreEqual("DTSTAMP:20160817T023000Z", result); }
public static Ical.Net.Interfaces.Components.IEvent CreateEvent(string name, string description, DateTime startUtcDate, DateTime endUtcDate, string repeatType, bool isAllDayLong, EventStatus status) { var evt = new Ical.Net.Event { Summary = name, Location = string.Empty, Description = description, IsAllDay = isAllDayLong, DtStamp = new Ical.Net.DataTypes.CalDateTime(DateTime.SpecifyKind(DateTime.UtcNow, DateTimeKind.Utc), TimeZoneInfo.Utc.Id), Start = new Ical.Net.DataTypes.CalDateTime(DateTime.SpecifyKind(startUtcDate, DateTimeKind.Utc), TimeZoneInfo.Utc.Id), End = new Ical.Net.DataTypes.CalDateTime(DateTime.SpecifyKind(endUtcDate, DateTimeKind.Utc), TimeZoneInfo.Utc.Id), RecurrenceRules = new List <Ical.Net.Interfaces.DataTypes.IRecurrencePattern>(), Status = (Ical.Net.EventStatus)status }; var rrule = RecurrenceRule.Parse(repeatType).ToString(true); if (!string.IsNullOrEmpty(rrule)) { evt.RecurrenceRules.Add(new Ical.Net.DataTypes.RecurrencePattern(rrule)); } return(evt); }
public static Ical.Net.Interfaces.Components.IEvent ConvertEvent(BaseEvent eventObj) { if (eventObj == null) { return(null); } var result = new Ical.Net.Event(); result.Summary = eventObj.Name; result.Location = string.Empty; result.Description = eventObj.Description; result.IsAllDay = eventObj.AllDayLong; result.Uid = eventObj.Uid; result.Start = new Ical.Net.DataTypes.CalDateTime(DateTime.SpecifyKind(eventObj.UtcStartDate, DateTimeKind.Utc), TimeZoneInfo.Utc.Id); result.End = new Ical.Net.DataTypes.CalDateTime(DateTime.SpecifyKind(eventObj.UtcEndDate, DateTimeKind.Utc), TimeZoneInfo.Utc.Id); result.RecurrenceRules = new List <Ical.Net.Interfaces.DataTypes.IRecurrencePattern>(); var rrule = eventObj.RecurrenceRule.ToString(true); if (!string.IsNullOrEmpty(rrule)) { result.RecurrenceRules.Add(new Ical.Net.DataTypes.RecurrencePattern(rrule)); } result.Status = (Ical.Net.EventStatus)eventObj.Status; return(result); }