コード例 #1
0
        /// <summary>
        /// Creates the folder.
        /// </summary>
        /// <param name="parent">The parent.</param>
        /// <param name="name">The name.</param>
        /// <returns></returns>
        public static CalendarFolder CreateFolder(CalendarFolder parent, string name)
        {
            if (parent == null)
            {
                throw new ArgumentNullException("parent");
            }
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException("name");
            }


            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                // Create Detached Folder
                CalendarFolder newRoot = new CalendarFolder();

                newRoot.Title     = name;
                newRoot.ProjectId = parent.ProjectId;
                newRoot.Owner     = parent.Owner;
                newRoot.Save();

                // Append to
                TreeNode node = parent.GetTreeService().AppendChild(newRoot);
                parent.Save();

                tran.Commit();

                return(newRoot);
            }
        }
コード例 #2
0
        /// <summary>
        /// Deletes the folder.
        /// </summary>
        /// <param name="folder">The folder.</param>
        public static void DeleteFolder(CalendarFolder folder)
        {
            if (folder == null)
            {
                throw new ArgumentNullException("folder");
            }

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                TreeService treeService = folder.GetTreeService();

                //Erase all child folders
                foreach (TreeNode node in TreeManager.GetAllChildNodes(treeService.CurrentNode))
                {
                    CalendarFolder childFolder = (CalendarFolder)node.InnerObject;
                    EraseFolder(childFolder);
                    treeService.RemoveChild(node.ObjectId);
                    childFolder.Delete();
                }

                //Erase current folder
                EraseFolder(folder);
                folder.Delete();

                tran.Commit();
            }
        }
コード例 #3
0
        /// <summary>
        /// Moves the calendar.
        /// </summary>
        /// <param name="calendar">The calendar.</param>
        /// <param name="newFolder">The new folder.</param>
        public static void MoveCalendar(Calendar calendar, CalendarFolder newFolder)
        {
            if (calendar == null)
            {
                throw new ArgumentNullException("calendar");
            }
            if (newFolder == null)
            {
                throw new ArgumentNullException("newFolder");
            }

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                // Raise Calendar Moving
                RaiseEvent(CalendarMoving, calendar, EventArgs.Empty);

                calendar.CalendarFolderId = newFolder.PrimaryKeyId.Value;
                calendar.Owner            = newFolder.Owner;

                calendar.Save();

                RaiseEvent(CalendarMoved, calendar, EventArgs.Empty);

                tran.Commit();
            }
        }
コード例 #4
0
        /// <summary>
        /// Adds the calendar link.
        /// </summary>
        /// <param name="folder">The folder.</param>
        /// <param name="calendar">The calendar.</param>
        /// <returns></returns>
        public static CalendarInfo AddCalendarLink(CalendarFolder folder, Calendar calendar)
        {
            if (folder == null)
            {
                throw new ArgumentNullException("CalendarFolder");
            }
            if (calendar == null)
            {
                throw new ArgumentNullException("Calendar");
            }

            if (!folder.GetTreeService().CurrentNode.IsAttached)
            {
                throw new ArgumentException("The folder is detached from tree.", "folder");
            }

            //Step 1. Determine for already exist link
            CalendarFolderLink[] links = CalendarFolderLink.List(new FilterElement("CalendarId",
                                                                                   FilterElementType.Equal,
                                                                                   calendar.PrimaryKeyId.Value),
                                                                 new FilterElement("FolderId",
                                                                                   FilterElementType.Equal,
                                                                                   folder.PrimaryKeyId.Value));
            if (links.Length != 0)
            {
                Calendar cal = new Calendar(links[0].CalendarId);
                return(new CalendarInfo(cal, links[0]));
            }

            CalendarFolderLink link = null;

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                // Step 2. Create New CalendarFolderLink
                link            = new CalendarFolderLink();
                link.CalendarId = calendar.PrimaryKeyId.Value;
                link.FolderId   = folder.PrimaryKeyId.Value;

                // Raise List Creating Event
                RaiseEvent(CalendarLinkCreating, link, EventArgs.Empty);

                // Add additional parameters
                link.Save();

                // Raise List Created Event
                RaiseEvent(CalendarLinkCreated, link, EventArgs.Empty);


                // Step. Commit Transaction Return new list info
                tran.Commit();
            }

            return(new CalendarInfo(calendar, link));
        }
コード例 #5
0
        /// <summary>
        /// Lists the specified folder.
        /// </summary>
        /// <param name="folder">The folder.</param>
        /// <returns></returns>
        public static CalendarInfo[] GetCalendars(CalendarFolder folder)
        {
            CalendarInfo[] retVal = new CalendarInfo[] { };

            if (folder != null)
            {
                retVal = GetCalendars(folder.PrimaryKeyId.Value);
            }

            return(retVal);
        }
コード例 #6
0
        /// <summary>
        /// Gets the public root.
        /// </summary>
        /// <returns></returns>
        public static CalendarFolder GetPublicRoot()
        {
            CalendarFolder[] nodes = CalendarFolder.List(FilterElement.IsNullElement(TreeService.ParentIdFieldName),
                                                         FilterElement.IsNullElement("ProjectId"));

            if (nodes.Length > 0)
            {
                return(nodes[0]);
            }

            // Create Public Root
            return(CreateRootNode("Public", null, null));
        }
コード例 #7
0
        /// <summary>
        /// Gets the private root.
        /// </summary>
        /// <param name="ownerId">The owner id.</param>
        /// <returns></returns>
        public static CalendarFolder GetPrivateRoot(int ownerId)
        {
            CalendarFolder[] nodes = CalendarFolder.List(FilterElement.IsNullElement(TreeService.ParentIdFieldName),
                                                         FilterElement.EqualElement("Owner", ownerId),
                                                         FilterElement.IsNullElement("ProjectId"));

            if (nodes.Length > 0)
            {
                return(nodes[0]);
            }

            // Create Private Root
            return(CreateRootNode(string.Format(CultureInfo.InvariantCulture, "Private_{0}", ownerId), null, ownerId));
        }
コード例 #8
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Adds the calendar link.
        /// </summary>
        /// <param name="folder">The folder.</param>
        /// <param name="calendar">The calendar.</param>
        /// <returns></returns>
        public static CalendarInfo AddCalendarLink(CalendarFolder folder, Calendar calendar)
        {
            if (folder == null)
                throw new ArgumentNullException("CalendarFolder");
            if (calendar == null)
                throw new ArgumentNullException("Calendar");

            if (!folder.GetTreeService().CurrentNode.IsAttached)
                throw new ArgumentException("The folder is detached from tree.", "folder");

            //Step 1. Determine for already exist link
            CalendarFolderLink[] links = CalendarFolderLink.List(new FilterElement("CalendarId",
                                                                      FilterElementType.Equal,
                                                                      calendar.PrimaryKeyId.Value),
                                                                  new FilterElement("FolderId",
                                                                      FilterElementType.Equal,
                                                                      folder.PrimaryKeyId.Value));
            if (links.Length != 0)
            {
                Calendar cal = new Calendar(links[0].CalendarId);
                return new CalendarInfo(cal, links[0]);
            }

            CalendarFolderLink link = null;
            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {

                // Step 2. Create New CalendarFolderLink
                link = new CalendarFolderLink();
                link.CalendarId = calendar.PrimaryKeyId.Value;
                link.FolderId = folder.PrimaryKeyId.Value;

                // Raise List Creating Event
                RaiseEvent(CalendarLinkCreating, link, EventArgs.Empty);

                // Add additional parameters
                link.Save();

                // Raise List Created Event
                RaiseEvent(CalendarLinkCreated, link, EventArgs.Empty);

                // Step. Commit Transaction Return new list info
                tran.Commit();

            }

            return new CalendarInfo(calendar, link);
        }
コード例 #9
0
        /// <summary>
        /// Erases the folder.
        /// </summary>
        /// <param name="folder">The folder.</param>
        private static void EraseFolder(CalendarFolder folder)
        {
            CalendarInfo[] calendarsInfo = GetCalendars(folder);

            foreach (CalendarInfo calInfo in calendarsInfo)
            {
                if (calInfo.IsLink())
                {
                    DeleteLink(calInfo.CalendarLink);
                }
                else
                {
                    DeleteCalendar(calInfo.Calendar);
                }
            }
        }
コード例 #10
0
        /// <summary>
        /// Creates the calendar.
        /// </summary>
        /// <param name="folder">The folder.</param>
        /// <param name="name">The name.</param>
        /// <param name="ownerId">The owner id.</param>
        /// <returns></returns>
        public static CalendarInfo CreateCalendar(CalendarFolder folder, string name, int?ownerId)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (folder == null)
            {
                throw new ArgumentNullException("folder");
            }
            if (!folder.GetTreeService().CurrentNode.IsAttached)
            {
                throw new ArgumentException("The folder is dettached from tree.", "folder");
            }

            Calendar newItem = null;

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                // Step 1. Create New Calendar
                newItem = new Calendar();
                newItem.CalendarFolderId = folder.PrimaryKeyId.Value;
                newItem.Title            = name;
                newItem.Owner            = ownerId;

                // Raise List Creating Event
                RaiseEvent(CalendarCreating, newItem, EventArgs.Empty);

                // Add additional parameters
                newItem.Save();

                // Raise List Created Event
                RaiseEvent(CalendarCreated, newItem, EventArgs.Empty);


                // Step. Commit Transaction Return new list info
                tran.Commit();
            }

            return(new CalendarInfo(newItem, null));
        }
コード例 #11
0
        /// <summary>
        /// Creates the root.
        /// </summary>
        /// <param name="title">The title.</param>
        /// <param name="projectId">The project id.</param>
        /// <param name="ownerId">The owner id.</param>
        /// <returns></returns>
        private static CalendarFolder CreateRootNode(string title, int?projectId, int?ownerId)
        {
            if (title == null)
            {
                throw new ArgumentNullException("title");
            }

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                // Step 1. Create List Folder
                CalendarFolder newRoot = new CalendarFolder();
                newRoot.Title     = title;
                newRoot.ProjectId = projectId;
                newRoot.Owner     = ownerId;
                newRoot.Save();

                // Step 2. Assign Root
                TreeNode retVal = TreeManager.AppendRootNode(Calendar.GetAssignedMetaClass(), newRoot);

                tran.Commit();

                return(newRoot);
            }
        }
コード例 #12
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public CalendarFolder(int primaryKeyId, MetaObjectOptions options)
     : base(CalendarFolder.GetAssignedMetaClass(), primaryKeyId, options)
 {
 }
コード例 #13
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public static CalendarFolder[] List(Mediachase.Ibn.Data.FilterElementCollection filters, Mediachase.Ibn.Data.SortingElementCollection sorting, int start, int count)
 {
     return(MetaObject.List <CalendarFolder>(CalendarFolder.GetAssignedMetaClass(), filters, sorting, start, count));
 }
コード例 #14
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public CalendarFolder()
     : base(CalendarFolder.GetAssignedMetaClass())
 {
 }
コード例 #15
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Creates the folder.
        /// </summary>
        /// <param name="parent">The parent.</param>
        /// <param name="name">The name.</param>
        /// <returns></returns>
        public static CalendarFolder CreateFolder(CalendarFolder parent, string name)
        {
            if (parent == null)
                throw new ArgumentNullException("parent");
            if (string.IsNullOrEmpty(name))
                throw new ArgumentNullException("name");

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                // Create Detached Folder
                CalendarFolder newRoot = new CalendarFolder();

                newRoot.Title = name;
                newRoot.ProjectId = parent.ProjectId;
                newRoot.Owner = parent.Owner;
                newRoot.Save();

                // Append to
                TreeNode node = parent.GetTreeService().AppendChild(newRoot);
                parent.Save();

                tran.Commit();

                return newRoot;
            }
        }
コード例 #16
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Deletes the folder.
        /// </summary>
        /// <param name="folder">The folder.</param>
        public static void DeleteFolder(CalendarFolder folder)
        {
            if (folder == null)
                throw new ArgumentNullException("folder");

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                TreeService treeService = folder.GetTreeService();

                //Erase all child folders
                foreach (TreeNode node in TreeManager.GetAllChildNodes(treeService.CurrentNode))
                {
                    CalendarFolder childFolder = (CalendarFolder)node.InnerObject;
                    EraseFolder(childFolder);
                    treeService.RemoveChild(node.ObjectId);
                    childFolder.Delete();
                }

                //Erase current folder
                EraseFolder(folder);
                folder.Delete();

                tran.Commit();
            }
        }
コード例 #17
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
 /// <summary>
 /// Creates the calendar.
 /// </summary>
 /// <param name="folder">The folder.</param>
 /// <param name="name">The name.</param>
 /// <returns></returns>
 public static CalendarInfo CreateCalendar(CalendarFolder folder, string name)
 {
     return CreateCalendar(folder, name, (int?)folder.Owner);
 }
コード例 #18
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Creates the calendar.
        /// </summary>
        /// <param name="folder">The folder.</param>
        /// <param name="name">The name.</param>
        /// <param name="ownerId">The owner id.</param>
        /// <returns></returns>
        public static CalendarInfo CreateCalendar(CalendarFolder folder, string name, int? ownerId)
        {
            if (name == null)
                throw new ArgumentNullException("name");
            if (folder == null)
                throw new ArgumentNullException("folder");
            if (!folder.GetTreeService().CurrentNode.IsAttached)
                throw new ArgumentException("The folder is dettached from tree.", "folder");

            Calendar newItem = null;

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                // Step 1. Create New Calendar
                newItem = new Calendar();
                newItem.CalendarFolderId = folder.PrimaryKeyId.Value;
                newItem.Title = name;
                newItem.Owner = ownerId;

                // Raise List Creating Event
                RaiseEvent(CalendarCreating, newItem, EventArgs.Empty);

                // Add additional parameters
                newItem.Save();

                // Raise List Created Event
                RaiseEvent(CalendarCreated, newItem, EventArgs.Empty);

                // Step. Commit Transaction Return new list info
                tran.Commit();
             }

             return new CalendarInfo(newItem, null);
        }
コード例 #19
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Creates the calendar.
        /// </summary>
        /// <param name="folderId">The folder id.</param>
        /// <param name="name">The name.</param>
        /// <returns></returns>
        public static CalendarInfo CreateCalendar(int folderId, string name)
        {
            CalendarFolder folder = new CalendarFolder(folderId);

            return CreateCalendar(folder, name);
        }
コード例 #20
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public CalendarFolder(CustomTableRow row, MetaObjectOptions options)
     : base(CalendarFolder.GetAssignedMetaClass(), row, options)
 {
 }
コード例 #21
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public CalendarFolder(CustomTableRow row)
     : base(CalendarFolder.GetAssignedMetaClass(), row)
 {
 }
コード例 #22
0
        /// <summary>
        /// Creates the calendar.
        /// </summary>
        /// <param name="folderId">The folder id.</param>
        /// <param name="name">The name.</param>
        /// <returns></returns>
        public static CalendarInfo CreateCalendar(int folderId, string name)
        {
            CalendarFolder folder = new CalendarFolder(folderId);

            return(CreateCalendar(folder, name));
        }
コード例 #23
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public CalendarFolder(MetaObjectOptions options)
     : base(CalendarFolder.GetAssignedMetaClass(), options)
 {
 }
コード例 #24
0
 /// <summary>
 /// Creates the calendar.
 /// </summary>
 /// <param name="folder">The folder.</param>
 /// <param name="name">The name.</param>
 /// <returns></returns>
 public static CalendarInfo CreateCalendar(CalendarFolder folder, string name)
 {
     return(CreateCalendar(folder, name, (int?)folder.Owner));
 }
コード例 #25
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public static CalendarFolder[] List(params Mediachase.Ibn.Data.FilterElement[] filters)
 {
     return(MetaObject.List <CalendarFolder>(CalendarFolder.GetAssignedMetaClass(), filters));
 }
コード例 #26
0
        /// <summary>
        /// Adds the calendar link.
        /// </summary>
        /// <param name="folderId">The folder id.</param>
        /// <param name="calendar">The calendar.</param>
        /// <returns></returns>
        public static CalendarInfo AddCalendarLink(int folderId, Calendar calendar)
        {
            CalendarFolder folder = new CalendarFolder(folderId);

            return(AddCalendarLink(folder, calendar));
        }
コード例 #27
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Creates the root.
        /// </summary>
        /// <param name="title">The title.</param>
        /// <param name="projectId">The project id.</param>
        /// <param name="ownerId">The owner id.</param>
        /// <returns></returns>
        private static CalendarFolder CreateRootNode(string title, int? projectId, int? ownerId)
        {
            if (title == null)
                throw new ArgumentNullException("title");

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                // Step 1. Create List Folder
                CalendarFolder newRoot = new CalendarFolder();
                newRoot.Title = title;
                newRoot.ProjectId = projectId;
                newRoot.Owner = ownerId;
                newRoot.Save();

                // Step 2. Assign Root
                TreeNode retVal = TreeManager.AppendRootNode(Calendar.GetAssignedMetaClass(), newRoot);

                tran.Commit();

                return newRoot;
            }
        }
コード例 #28
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public static int GetTotalCount(params FilterElement[] filters)
 {
     return(MetaObject.GetTotalCount(CalendarFolder.GetAssignedMetaClass(), filters));
 }
コード例 #29
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Adds the calendar link.
        /// </summary>
        /// <param name="folderId">The folder id.</param>
        /// <param name="calendar">The calendar.</param>
        /// <returns></returns>
        public static CalendarInfo AddCalendarLink(int folderId, Calendar calendar)
        {
            CalendarFolder folder = new CalendarFolder(folderId);

            return AddCalendarLink(folder, calendar);
        }
コード例 #30
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public static CalendarFolder[] List(params Mediachase.Ibn.Data.SortingElement[] sorting)
 {
     return(MetaObject.List <CalendarFolder>(CalendarFolder.GetAssignedMetaClass(), sorting));
 }
コード例 #31
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Erases the folder.
        /// </summary>
        /// <param name="folder">The folder.</param>
        private static void EraseFolder(CalendarFolder folder)
        {
            CalendarInfo[] calendarsInfo = GetCalendars(folder);

            foreach (CalendarInfo calInfo in calendarsInfo)
            {
                if (calInfo.IsLink())
                    DeleteLink(calInfo.CalendarLink);
                else
                    DeleteCalendar(calInfo.Calendar);

            }
        }
コード例 #32
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Lists the specified folder.
        /// </summary>
        /// <param name="folder">The folder.</param>
        /// <returns></returns>
        public static CalendarInfo[] GetCalendars(CalendarFolder folder)
        {
            CalendarInfo[] retVal = new CalendarInfo[] { };

               if(folder != null)
               {
               retVal = GetCalendars(folder.PrimaryKeyId.Value);
               }

               return retVal;
        }
コード例 #33
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public CalendarFolder(int primaryKeyId)
     : base(CalendarFolder.GetAssignedMetaClass(), primaryKeyId)
 {
 }
コード例 #34
0
ファイル: CalendarFolderManager.cs プロジェクト: 0anion0/IBN
        /// <summary>
        /// Moves the calendar.
        /// </summary>
        /// <param name="calendar">The calendar.</param>
        /// <param name="newFolder">The new folder.</param>
        public static void MoveCalendar(Calendar calendar, CalendarFolder newFolder)
        {
            if (calendar == null)
                throw new ArgumentNullException("calendar");
            if (newFolder == null)
                throw new ArgumentNullException("newFolder");

            using (TransactionScope tran = DataContext.Current.BeginTransaction())
            {
                // Raise Calendar Moving
                RaiseEvent(CalendarMoving, calendar, EventArgs.Empty);

                calendar.CalendarFolderId = newFolder.PrimaryKeyId.Value;
                calendar.Owner = newFolder.Owner;

                calendar.Save();

                RaiseEvent(CalendarMoved, calendar, EventArgs.Empty);

                tran.Commit();
            }
        }
コード例 #35
0
ファイル: CalendarFolder.auto.cs プロジェクト: alex765022/IBN
 public static CalendarFolder[] List()
 {
     return(MetaObject.List <CalendarFolder>(CalendarFolder.GetAssignedMetaClass()));
 }