Пример #1
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        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;
        }