示例#1
0
        internal static CalendarEvent Parse(this EventView dto, DateTimeOffset from, DateTimeOffset to)
        {
            var recurrence = JsonConvert.DeserializeObject <Recurrence>(dto.Recurrence);

            var @event = new Ical.Net.Event
            {
                DtStart         = new CalDateTime(dto.StartsAt.DateTime),
                DtEnd           = new CalDateTime(dto.EndsOn.DateTime),
                RecurrenceRules = new List <IRecurrencePattern> {
                    recurrence.ToPattern()
                }
            };

            var occurences = @event.GetOccurrences(from.DateTime, to.DateTime).ToList();

            var recurringDates = occurences.Select(x => x.Period.StartTime.Value);

            return(new CalendarEvent
            {
                EventId = dto.EventId,
                CategoryId = dto.CategoryId,
                CategoryName = dto.CategoryName,
                ColorCode = dto.ColorCode,
                IsLocalCalendar = dto.IsLocalCalendar,
                CategoryOrder = dto.CategoryOrder,
                UserId = dto.UserId,
                Name = dto.Name,
                Location = dto.Location,
                StartsAt = dto.StartsAt,
                EndsOn = dto.EndsOn,
                TimeZone = dto.TimeZone,
                AllDay = dto.AllDay,
                Recurrence = recurrence,
                Until = dto.Until,
                RemindBeforeInMinutes = dto.Alarm,
                ReminderTypes = dto.ReminderTypes.Or("").Split(',').ToList(),
                IsPrivate = dto.IsPrivate,
                Url = dto.Url,
                Note = dto.Note,
                Occurences = recurringDates
            });
        }
示例#2
0
        internal static Ical.Net.Event ToIcalEvent(this CalendarEvent calendarEvent)
        {
            var data = new Ical.Net.Event
            {
                DtStart         = new CalDateTime(calendarEvent.StartsAt.DateTime),
                DtEnd           = new CalDateTime(calendarEvent.EndsOn.DateTime),
                RecurrenceRules = new List <IRecurrencePattern> {
                    ToPattern(calendarEvent.Recurrence)
                },
                IsAllDay    = calendarEvent.AllDay ?? false,
                Alarms      = { GetAlarm(calendarEvent.StartsAt.DateTime, calendarEvent.Name, calendarEvent.RemindBeforeInMinutes) },
                Name        = calendarEvent.Name,
                Location    = calendarEvent.Location,
                Url         = string.IsNullOrWhiteSpace(calendarEvent.Url) ? null : new Uri(calendarEvent.Url, UriKind.RelativeOrAbsolute),
                Description = calendarEvent.Note
            };


            return(data);
        }
示例#3
0
        internal static Ical.Net.Event ToIcalEvent(this Event dto)
        {
            var data = new Ical.Net.Event
            {
                DtStart         = new CalDateTime(dto.StartsAt.DateTime),
                DtEnd           = new CalDateTime(dto.EndsOn.DateTime),
                RecurrenceRules = new List <IRecurrencePattern> {
                    ToPattern(JsonConvert.DeserializeObject <Recurrence>(dto.Recurrence))
                },
                IsAllDay    = dto.AllDay,
                Alarms      = { GetAlarm(dto.StartsAt.DateTime, dto.Name, dto.Alarm) },
                Name        = dto.Name,
                Location    = dto.Location,
                Url         = string.IsNullOrWhiteSpace(dto.Url) ? null : new Uri(dto.Url, UriKind.RelativeOrAbsolute),
                Description = dto.Note
            };


            return(data);
        }