/// <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(); } }
/// <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); } }
/// <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)); }
/// <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); }
/// <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)); }
/// <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(); } }
/// <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; } }
/// <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); }