public static BaseEvent ConvertEvent(Ical.Net.Interfaces.Components.IEvent eventObj)
        {
            if (eventObj == null)
            {
                return(null);
            }

            var result = new BusinessObjects.Event();

            result.Name = eventObj.Summary;

            result.Description = eventObj.Description;

            result.AllDayLong = eventObj.IsAllDay;

            result.Uid = eventObj.Uid;

            result.UtcStartDate = ToUtc(eventObj.Start);

            result.UtcEndDate = ToUtc(eventObj.End);

            var recurrenceRuleStr = string.Empty;

            if (eventObj.RecurrenceRules != null && eventObj.RecurrenceRules.Any())
            {
                var recurrenceRules = eventObj.RecurrenceRules.ToList();

                recurrenceRuleStr = SerializeRecurrencePattern(recurrenceRules.First());
            }

            result.RecurrenceRule = RecurrenceRule.Parse(recurrenceRuleStr);

            if (eventObj.ExceptionDates != null && eventObj.ExceptionDates.Any())
            {
                result.RecurrenceRule.ExDates = new List <RecurrenceRule.ExDate>();

                var exceptionDates = eventObj.ExceptionDates.ToList();

                foreach (var periodList in exceptionDates.First())
                {
                    var start = ToUtc(periodList.StartTime);

                    result.RecurrenceRule.ExDates.Add(new RecurrenceRule.ExDate
                    {
                        Date       = start,
                        isDateTime = start != start.Date
                    });
                }
            }

            result.Status = (EventStatus)eventObj.Status;

            return(result);
        }
 public static string SerializeEvent(Ical.Net.Interfaces.Components.IEvent eventObj)
 {
     try
     {
         var serializer = new Ical.Net.Serialization.iCalendar.Serializers.CalendarSerializer();
         return(serializer.SerializeToString(eventObj));
     }
     catch (Exception ex)
     {
         log4net.LogManager.GetLogger("ASC.Calendar").Error(ex);
         return(null);
     }
 }