예제 #1
0
        public void Save(CALDAVContext mDb, CalendarFile calendarFile)
        {
            this.ValidateModel();
            // assuming all events come with a UID
            // Create Event for the file
            var calendarToDo = calendarFile.CalendarToDo.Where(a => a.ToDoId == this.FileUid()).SingleOrDefault();

            if (calendarToDo == null)
            {
                calendarToDo                = new CalendarToDo();
                calendarToDo.FolderId       = calendarFile.FolderId;
                calendarToDo.CalendarFileId = calendarFile.CalendarFileId;
                calendarToDo.ToDoId         = this.FileUid();
                mDb.CalendarToDo.Add(calendarToDo);
            }

            //calendarToDo.Class = this.Class;
            calendarToDo.Completed     = this.Completed;
            calendarToDo.DateTimeStamp = this.DTSTAMP;
            calendarToDo.Due           = this.Due;
            calendarToDo.Modified      = this.LastModified;
            calendarToDo.Priority      = this.Priority;
            calendarToDo.Sequence      = this.Sequence;
            calendarToDo.Start         = this.Start;
            //calendarToDo.Status = this.Status;
            calendarToDo.Summary = this.Summary;
        }
 public AbstractCalendarRepository(CALDAVContext db, UserFolderAccess userAccess, FolderInfo folderInfo, CalDavServer server, Guid file) : base(userAccess, folderInfo, server)
 {
     File = file;
     mDb  = db;
     LoadCalendarInfo(folderInfo.CalendarFolderInfo);
     WebServerRootDirectory = System.IO.Path.Combine(Directory.GetCurrentDirectory(), CalDavSettings.SERVERFILEPATH);
     Directory.CreateDirectory(WebServerRootDirectory);
 }
예제 #3
0
 public ServerFacade(CALDAVContext db)
 {
     mDb = db;
     // Will throw an exception if many or no active server descriptions are found
     Server = mDb.CalDavServer
              .Include(a => a.ContextPathNavigation)
              .Where(a => a.Active).Single();
 }
예제 #4
0
        public void Delete(CALDAVContext mDb, CalendarFile calendarFile)
        {
            var calendarEvent = calendarFile.CalendarEvent.Where(a => a.EventId == this.FileUid()).SingleOrDefault();

            if (calendarEvent != null)
            {
                mDb.CalendarEvent.Remove(calendarEvent);
            }
        }
예제 #5
0
        public void Delete(CALDAVContext mDb, CalendarFile calendarFile)
        {
            var calendarToDo = calendarFile.CalendarToDo.Where(a => a.ToDoId == this.FileUid()).SingleOrDefault();

            if (calendarToDo != null)
            {
                mDb.CalendarToDo.Remove(calendarToDo);
            }
        }
예제 #6
0
        public void Save(CALDAVContext mDb, CalendarFile calendarFile)
        {
            this.ValidateModel();
            // assuming all events come with a UID
            // Create Event for the file
            var calendarEvent = calendarFile.CalendarEvent.Where(a => a.EventId == this.FileUid()).SingleOrDefault();

            if (calendarEvent == null)
            {
                calendarEvent = new CalendarEvent
                {
                    FolderId       = calendarFile.FolderId,
                    CalendarFileId = calendarFile.CalendarFileId,
                    EventId        = this.FileUid()
                };
                mDb.CalendarEvent.Add(calendarEvent);
            }

            //calendarEvent.Class = this.Class;
            calendarEvent.Created = this.Created;
            if ((this.Description ?? "").Length <= (int.MaxValue / 2))
            {
                calendarEvent.Description = this.Description;
            }

            calendarEvent.End      = this.End;
            calendarEvent.IsAllDay = this.IsAllDay;
            calendarEvent.Location = this.Location;
            calendarEvent.Modified = this.LastModified;
            //calendarFile.CalendarEvent.Organizer = this.Organizer;
            calendarEvent.Priority = this.Priority;
            calendarEvent.Sequence = this.Sequence;
            calendarEvent.Start    = this.Start;
            //calendarFile.CalendarEvent.Status = this.Status;
            calendarEvent.Summary      = this.Summary;
            calendarEvent.Transparency = this.Transparency;
            if (this.Url != null)
            {
                calendarEvent.Url = this.Url.LocalPath;
            }
        }
        public static CalDavRequest GetRequest(string method, CALDAVContext mDb, CalDavRequestData requestData, AbstractFolder folder)
        {
            switch (method)
            {
            case CalDavSettings.Methods.OPTIONS: return(new Options(requestData, folder));

            case CalDavSettings.Methods.PROPFIND: return(new Propfind(requestData, folder));

            case CalDavSettings.Methods.PROPPATCH: return(new Propfind(requestData, folder));

            case CalDavSettings.Methods.REPORT: return(new Report(requestData, folder));

            case CalDavSettings.Methods.DELETE: return(new Delete(folder));

            case CalDavSettings.Methods.PUT: return(new Put(requestData, folder));

            case CalDavSettings.Methods.MKCALENDAR: return(new MkCalendar(folder));

            case CalDavSettings.Methods.GET: return(new Get(folder));

            default: return(new NotImplemented());
            }
        }
예제 #8
0
 public PrincipalItem(UserProfile currentUser, CALDAVContext db)
 {
     mDb         = db;
     CurrentUser = currentUser;
 }
예제 #9
0
 public IQueryable <ICalendarObject> Filter(CALDAVContext mDb, CalendarFile calendarFile, Filter filer)
 {
     throw new NotImplementedException();
 }
예제 #10
0
 public void Delete(CALDAVContext mDb, CalendarFile calendarFile)
 {
     throw new NotImplementedException();
 }
 public BasicAuthorizeFilter(CALDAVContext db, string realm = null)
 {
     mDb        = db;
     this.realm = realm;
 }
예제 #12
0
 public CalDavController(CALDAVContext db)
 {
     mDb    = db;
     Server = new ServerFacade(mDb);
 }
예제 #13
0
        public void Delete(CALDAVContext mDb, Guid folderId, Guid fileId)
        {
            // eager load the calendar file details
            CalendarFile calendarFile = mDb.CalendarFile
                                        .Include(a => a.FolderNavigation.CalendarFolderInfo)
                                        .Include(a => a.CalendarEvent)
                                        .Include(a => a.CalendarFreeBusy)
                                        .Include(a => a.CalendarJournal)
                                        .Include(a => a.CalendarTimeZone)
                                        .Include(a => a.CalendarToDo)
                                        .Where(a => a.FolderId == folderId && a.CalendarFileId == fileId).SingleOrDefault();


            if (calendarFile == null)
            {
                return;
            }
            // Update Folder CTag
            else
            {
                calendarFile.FolderNavigation.Modified = DateTime.UtcNow;
                // used to trigger CTag RowVersion Update
                calendarFile.FolderNavigation.CalendarFolderInfo.Modified = DateTime.UtcNow;
            }


            foreach (var e in Events)
            {
                e.Calendar = this;
                e.Delete(mDb, calendarFile);
            }
            foreach (var td in ToDos)
            {
                td.Calendar = this;
                td.Delete(mDb, calendarFile);
            }

            /*
             * foreach (var tz in TimeZones)
             * {
             *  tz.Calendar = this;
             *  tz.Delete(mDb, calendarFile);
             * }
             * foreach (var fb in FreeBusy)
             * {
             *  fb.Calendar = this;
             *  fb.Delete(mDb, calendarFile);
             * }
             * foreach (var jn in JournalEntries)
             * {
             *  jn.Calendar = this;
             *  jn.Delete(mDb, calendarFile);
             * }
             */

            if (calendarFile != null)
            {
                mDb.Remove(calendarFile);
            }


            mDb.SaveChanges();
        }
예제 #14
0
        public void Save(CALDAVContext mDb, Guid folderId, Guid fileId)
        {
            this.ValidateModel();

            // eager load the calendar file details
            CalendarFile calendarFile = mDb.CalendarFile
                                        .Include(a => a.FolderNavigation.CalendarFolderInfo)
                                        .Include(a => a.CalendarEvent)
                                        .Include(a => a.CalendarFreeBusy)
                                        .Include(a => a.CalendarJournal)
                                        .Include(a => a.CalendarTimeZone)
                                        .Include(a => a.CalendarToDo)
                                        .Where(a => a.FolderId == folderId && a.CalendarFileId == fileId).SingleOrDefault();

            // Create Calendar File
            if (calendarFile == null)
            {
                calendarFile = new CalendarFile
                {
                    FolderId       = folderId,
                    CalendarFileId = fileId,

                    Created = DateTime.UtcNow
                };

                var calendarFolder = mDb.FolderInfo.Include(a => a.CalendarFolderInfo)
                                     .Where(a => a.FolderId == folderId).SingleOrDefault();

                if (calendarFolder == null)
                {
                    throw new Exception($"Calendar folder for folder ID: ({folderId.ToString()}) does not exist in DB context.");
                }

                calendarFolder.Modified = DateTime.UtcNow;
                calendarFolder.CalendarFolderInfo.Modified = DateTime.UtcNow;

                mDb.CalendarFile.Add(calendarFile);
            }
            else
            {
                calendarFile.FolderNavigation.Modified = DateTime.UtcNow;
                // used to trigger CTag RowVersion Update
                calendarFile.FolderNavigation.CalendarFolderInfo.Modified = DateTime.UtcNow;
            }

            // update Calendar File

            calendarFile.Scale    = this.Scale;
            calendarFile.ProdId   = this.ProdID;
            calendarFile.Modified = DateTime.UtcNow;

            foreach (var e in Events)
            {
                e.Calendar = this;
                e.Save(mDb, calendarFile);
            }
            foreach (var td in ToDos)
            {
                td.Calendar = this;
                td.Save(mDb, calendarFile);
            }

            /*
             * foreach (var tz in TimeZones)
             * {
             *  tz.Calendar = this;
             *  tz.Save(mDb, calendarFile);
             * }
             * foreach (var fb in FreeBusy)
             * {
             *  fb.Calendar = this;
             *  fb.Save(mDb, calendarFile);
             * }
             * foreach (var jn in JournalEntries)
             * {
             *  jn.Calendar = this;
             *  jn.Save(mDb, calendarFile);
             * }
             */

            mDb.SaveChanges();
        }
 public CalendarRepository(CALDAVContext db, UserFolderAccess userAccess, FolderInfo folderInfo, CalDavServer server, Guid file) : base(db, userAccess, folderInfo, server, file)
 {
 }
예제 #16
0
 public CalDavRequest GetRequestType(string method, CALDAVContext mDb, CalDavRequestData requestData, AbstractFolder folder)
 {
     return(CalDavRequestFactory.GetRequest(method, mDb, requestData, folder));
 }