示例#1
0
 public void DeleteObject(ICalendarInfo calendar, string path)
 {
     var uid = path.Split('/').Last().Split('.').FirstOrDefault();
     var obj = GetObjectByUID(calendar.ID, uid);
     if (obj == null) return;
     var filename = System.IO.Path.Combine(_Directory, calendar.ID, obj.Object.UID + ".ics");
     if (!System.IO.File.Exists(filename))
         return;
     System.IO.File.Delete(filename);
 }
示例#2
0
        private static string ToString(ICalendarInfo obj)
        {
            var serializer = new Serializer();

            using (var str = new System.IO.StringWriter())
            {
                serializer.Serialize(str, obj);
                return(str.ToString());
            }
        }
示例#3
0
		public ICalendarObject GetObjectByUID(ICalendarInfo calendar, string uid) {
			var filename = System.IO.Path.Combine(_Directory, calendar.ID, uid + ".ics");
			if (!System.IO.File.Exists(filename)) return null;
			var serializer = new Serializer();
			using (var file = System.IO.File.OpenText(filename)) {
				var ical = (serializer.Deserialize<CalendarCollection>(file))[0];
				return ical.Events.OfType<ICalendarObject>()
					.Union(ical.ToDos)
					.Union(ical.FreeBusy)
					.Union(ical.JournalEntries)
					.FirstOrDefault();
			}
		}
示例#4
0
        public void Save(ICalendarInfo calendar, ICalendarObject e)
        {
            var filename = System.IO.Path.Combine(_directory, calendar.ID, e.UID + ".ics");
            var ical     = new CalDav.Calendar();

            ical.AddItem(e);
            var serializer = new Serializer();

            using (var file = System.IO.File.Open(filename, System.IO.FileMode.Create))
            {
                serializer.Serialize(file, ical);
            }
        }
示例#5
0
        public IQueryable <ICalendarObject> GetObjects(ICalendarInfo calendar)
        {
            if (calendar == null)
            {
                return(new ICalendarObject[0].AsQueryable());
            }

            var directory  = System.IO.Path.Combine(_directory, calendar.ID);
            var files      = System.IO.Directory.GetFiles(directory, "*.ics");
            var serializer = new Serializer();

            var many   = files.SelectMany(x => serializer.Deserialize <CalendarCollection>(x)).ToList();
            var result = many.SelectMany(x => x.Items).ToList();

            return(result.AsQueryable());
        }
示例#6
0
        public void DeleteObject(ICalendarInfo calendar, string path)
        {
            var uid = path.Split('/').Last().Split('.').FirstOrDefault();
            var obj = GetObjectByUID(calendar, uid);

            if (obj == null)
            {
                return;
            }

            var filename = System.IO.Path.Combine(_directory, calendar.ID, obj.UID + ".ics");

            if (!System.IO.File.Exists(filename))
            {
                return;
            }

            System.IO.File.Delete(filename);
        }
示例#7
0
        public ICalendarObject GetObjectByUID(ICalendarInfo calendar, string uid)
        {
            var filename = System.IO.Path.Combine(_directory, calendar.ID, uid + ".ics");

            if (!System.IO.File.Exists(filename))
            {
                return(null);
            }

            var serializer = new Serializer();

            using (var file = System.IO.File.OpenText(filename))
            {
                var ical = (serializer.Deserialize <CalendarCollection>(file))[0];

                return(ical.Events.OfType <ICalendarObject>()
                       .Union(ical.ToDos)
                       .Union(ical.FreeBusy)
                       .Union(ical.JournalEntries)
                       .FirstOrDefault());
            }
        }
示例#8
0
		public IQueryable<ICalendarObject> GetObjects(ICalendarInfo calendar) {
			if (calendar == null) return new ICalendarObject[0].AsQueryable();
			var directory = System.IO.Path.Combine(_Directory, calendar.ID);
			var files = System.IO.Directory.GetFiles(directory, "*.ics");
			var serializer = new Serializer();
			return files
				.SelectMany(x => serializer.Deserialize<CalendarCollection>(x))
				.SelectMany(x => x.Items)
				.AsQueryable();
		}
示例#9
0
		public IQueryable<ICalendarObject> GetObjectsByFilter(ICalendarInfo calendar, Filter filter) {
			throw new NotImplementedException();
		}
示例#10
0
		public void Save(ICalendarInfo calendar, ICalendarObject e) {
			var filename = System.IO.Path.Combine(_Directory, calendar.ID, e.UID + ".ics");
			var ical = new CalDav.Calendar();
			ical.AddItem(e);
			var serializer = new Serializer();
			using (var file = System.IO.File.Open(filename, System.IO.FileMode.Create))
				serializer.Serialize(file, ical);
		}
示例#11
0
 public IQueryable <ICalendarObject> GetObjectsByFilter(ICalendarInfo calendar, Filter filter)
 {
     throw new NotImplementedException();
 }
示例#12
0
        public void Save(ICalendarInfo calendar, ICalendarObject e, IEnumerable<TimeZone> timeZones)
        {
            var filename = System.IO.Path.Combine(_Directory, calendar.ID, e.UID + ".ics");
            var ical = new CalDav.Calendar();

            ical.AddItem(e);
            foreach (var timezone in timeZones)
            {
                ical.TimeZones.Add(timezone);
            }
            var serializer = new Serializer();
            using (var file = System.IO.File.Open(filename, System.IO.FileMode.Create))
                serializer.Serialize(file, ical);

            //update accordingly the _.ical file
            var calFileName = System.IO.Path.Combine(_Directory, calendar.ID + "\\_.ical");

            var globalIcal = LoadSerializedCalendarFromFileName(calendar.ID, calFileName);
            foreach (var item in ical.Items)
            {
                globalIcal.AddItem(item);
            }
            using (var file = System.IO.File.Open(calFileName, System.IO.FileMode.Open, System.IO.FileAccess.Write))
                serializer.Serialize(file, globalIcal);
        }