/// <summary> /// Reads the specified stream. /// </summary> /// <param name="stream">The stream.</param> /// <returns>The file</returns> public override Data.Interfaces.ICalendar Read(Stream stream) { var ReturnValue = new GenericCalendar(); if (stream is null) { return(ReturnValue); } string StringData = GetData(stream); if (string.IsNullOrEmpty(StringData)) { return(ReturnValue); } foreach (Match TempMatch in CalendarItems.Matches(StringData)) { var Title = TempMatch.Groups["Title"].Value.ToUpperInvariant().Trim(); var Value = TempMatch.Groups["Value"].Value.Trim(); if (Title.StartsWith("DTSTART", StringComparison.Ordinal)) { ReturnValue.StartTime = DateTime.Parse(Value.ToString("####/##/## ##:##"), CultureInfo.CurrentCulture) + ReturnValue.CurrentTimeZone.BaseUtcOffset; } else if (Title.StartsWith("DTEND", StringComparison.Ordinal)) { ReturnValue.EndTime = DateTime.Parse(Value.ToString("####/##/## ##:##"), CultureInfo.CurrentCulture) + ReturnValue.CurrentTimeZone.BaseUtcOffset; } else if (Title.StartsWith("LOCATION", StringComparison.Ordinal)) { ReturnValue.Location = Value; } else if (Title.StartsWith("SUMMARY", StringComparison.Ordinal)) { ReturnValue.Subject = Value; } else if (Title.StartsWith("LOCATION", StringComparison.Ordinal)) { ReturnValue.Location = Value; } else if (Title.StartsWith("DESCRIPTION", StringComparison.Ordinal) && string.IsNullOrEmpty(ReturnValue.Description)) { ReturnValue.Description = Value.Replace("\\n", "\n").Replace("\\,", ",").Replace("\\r", "").Replace("\\t", "\t"); } else if (Title.StartsWith("ATTENDEE", StringComparison.Ordinal)) { ReturnValue.AttendeeList.Add(new MailAddress { EmailAddress = Value.ToUpper().Replace("MAILTO:", "") }); } else if (Title.StartsWith("ORGANIZER", StringComparison.Ordinal)) { ReturnValue.Organizer = new MailAddress { EmailAddress = Value.ToUpper().Replace("MAILTO:", "") }; } } return(ReturnValue); }
public override async Task <ICalendar> PullAsync() { Log.Info("Pulling calendar from google"); var calendar = new GenericCalendar { Events = await PullEvents() as DbCollection <GenericEvent>, Id = _settings.CalendarId, Name = _settings.CalendarName }; LastCalendar = calendar; return(calendar); }
public override async Task <ICalendar> PullAsync(DateTime from, DateTime to) { var calendar = new GenericCalendar { Events = new DbCollection <GenericEvent>() }; calendar.Events = await PullEvents(from, to) as DbCollection <GenericEvent>; calendar.Id = _settings.CalendarId; calendar.Name = _settings.CalendarName; LastCalendar = calendar; return(calendar); }
/// <summary> /// Reads the specified stream. /// </summary> /// <param name="stream">The stream.</param> /// <returns>The file</returns> public override ICalendar Read(Stream stream) { string StringData = GetData(stream); var ReturnValue = new GenericCalendar(); foreach (Match TempMatch in EntryRegex.Matches(StringData)) { var Title = TempMatch.Groups["Title"].Value.ToUpperInvariant().Trim(); var Value = TempMatch.Groups["Value"].Value.Trim(); if (Title.StartsWith("DTSTART", StringComparison.Ordinal)) { ReturnValue.StartTime = DateTime.Parse(Value.ToString("####/##/## ##:##"), CultureInfo.CurrentCulture) + ReturnValue.CurrentTimeZone.BaseUtcOffset; } else if (Title.StartsWith("DTEND", StringComparison.Ordinal)) { ReturnValue.EndTime = DateTime.Parse(Value.ToString("####/##/## ##:##"), CultureInfo.CurrentCulture) + ReturnValue.CurrentTimeZone.BaseUtcOffset; } else if (Title.StartsWith("LOCATION", StringComparison.Ordinal)) { ReturnValue.Location = Value; } else if (Title.StartsWith("SUMMARY", StringComparison.Ordinal)) { ReturnValue.Subject = Value; } else if (Title.StartsWith("LOCATION", StringComparison.Ordinal)) { ReturnValue.Location = Value; } else if (Title.StartsWith("DESCRIPTION", StringComparison.Ordinal) && string.IsNullOrEmpty(ReturnValue.Description)) { ReturnValue.Description = Value.Replace("\\n", "\n").Replace("\\,", ",").Replace("\\r", "").Replace("\\t", "\t"); } } return(ReturnValue); }
public override ICalendar Pull(DateTime from, DateTime to) { Log.Info(String.Format("Pulling calendar from outlook, from[{0}] to [{1}]", from, to)); var myCalendar = new GenericCalendar { Events = new DbCollection <GenericEvent>() }; try { myCalendar.Id = CalendarFolder.EntryID; myCalendar.Name = CalendarFolder.Name; #if !OLD_OFFICE_ASSEMBLY myCalendar.Creator = new GenericPerson { Email = CalendarFolder.Store.DisplayName }; #endif // var items = CalendarFolder.Items; items.Sort("[Start]"); var filter = "[Start] >= '" + from.ToString("g") + "' AND [End] <= '" + to.ToString("g") + "'"; Log.Debug(String.Format("Filter string [{0}]", filter)); items = items.Restrict(filter); // foreach (AppointmentItem evt in items) { // var myEvt = new GenericEvent(id: evt.EntryID, summary: evt.Subject, description: evt.Body, location: new GenericLocation { Name = evt.Location }); // Start myEvt.Start = evt.Start; // End if (!evt.AllDayEvent) { myEvt.End = evt.End; } // #if !OLD_OFFICE_ASSEMBLY // this only works with office 2010 // Creator and organizer are the same person. // Creator myEvt.Creator = new GenericPerson { Email = evt.GetOrganizer().Address, Name = evt.GetOrganizer().Name }; // Organizer myEvt.Organizer = new GenericPerson { Email = evt.GetOrganizer().Address, Name = evt.GetOrganizer().Name }; #endif // Attendees myEvt.Attendees = ExtractRecipientInfos(evt); // Recurrence if (evt.IsRecurring) { myEvt.Recurrence = new OutlookRecurrence(); ((OutlookRecurrence)myEvt.Recurrence).Parse(evt.GetRecurrencePattern()); } // add it to calendar events. myCalendar.Events.Add(myEvt); } } catch (System.Exception ex) { Log.Error("Exception", ex); } LastCalendar = myCalendar; return(myCalendar); }
public override async Task<ICalendar> PullAsync() { Log.Info("Pulling calendar from google"); var calendar = new GenericCalendar { Events = await PullEvents() as DbCollection<GenericEvent>, Id = _settings.CalendarId, Name = _settings.CalendarName }; LastCalendar = calendar; return calendar; }
public override async Task<ICalendar> PullAsync(DateTime from, DateTime to) { var calendar = new GenericCalendar { Events = new DbCollection<GenericEvent>() }; calendar.Events = await PullEvents(from, to) as DbCollection<GenericEvent>; calendar.Id = _settings.CalendarId; calendar.Name = _settings.CalendarName; LastCalendar = calendar; return calendar; }
public override ICalendar Pull(DateTime from, DateTime to) { Log.Info(String.Format("Pulling calendar from outlook, from[{0}] to [{1}]", from, to)); var myCalendar = new GenericCalendar { Events = new DbCollection<GenericEvent>() }; try { myCalendar.Id = CalendarFolder.EntryID; myCalendar.Name = CalendarFolder.Name; #if !OLD_OFFICE_ASSEMBLY myCalendar.Creator = new GenericPerson { Email = CalendarFolder.Store.DisplayName }; #endif // var items = CalendarFolder.Items; items.Sort("[Start]"); var filter = "[Start] >= '" + from.ToString("g") + "' AND [End] <= '" + to.ToString("g") + "'"; Log.Debug(String.Format("Filter string [{0}]", filter)); items = items.Restrict(filter); // foreach (AppointmentItem evt in items) { // var myEvt = new GenericEvent( id: evt.EntryID, summary: evt.Subject, description: evt.Body, location: new GenericLocation { Name = evt.Location }); // Start myEvt.Start = evt.Start; // End if (!evt.AllDayEvent) { myEvt.End = evt.End; } // #if !OLD_OFFICE_ASSEMBLY // this only works with office 2010 // Creator and organizer are the same person. // Creator myEvt.Creator = new GenericPerson { Email = evt.GetOrganizer().Address, Name = evt.GetOrganizer().Name }; // Organizer myEvt.Organizer = new GenericPerson { Email = evt.GetOrganizer().Address, Name = evt.GetOrganizer().Name }; #endif // Attendees myEvt.Attendees = ExtractRecipientInfos(evt); // Recurrence if (evt.IsRecurring) { myEvt.Recurrence = new OutlookRecurrence(); ((OutlookRecurrence)myEvt.Recurrence).Parse(evt.GetRecurrencePattern()); } // add it to calendar events. myCalendar.Events.Add(myEvt); } } catch (System.Exception ex) { Log.Error("Exception", ex); } LastCalendar = myCalendar; return myCalendar; }