public override void Delete(StoreId id, DeleteItemFlags flags) { using (ICalendarGroup calendarGroup = this.Bind(id)) { CalendarGroupType groupType = calendarGroup.GroupType; if (groupType == CalendarGroupType.MyCalendars || groupType == CalendarGroupType.OtherCalendars) { throw new CannotDeleteSpecialCalendarGroupException(calendarGroup.Id, calendarGroup.GroupClassId, calendarGroup.GroupName); } ReadOnlyCollection <CalendarGroupEntryInfo> childCalendars = calendarGroup.GetChildCalendars(); List <StoreId> list = new List <StoreId>(); foreach (CalendarGroupEntryInfo calendarGroupEntryInfo in childCalendars) { if (calendarGroupEntryInfo is LocalCalendarGroupEntryInfo) { throw new CalendarGroupIsNotEmptyException(calendarGroup.Id, calendarGroup.GroupClassId, calendarGroup.GroupName, childCalendars.Count); } list.Add(calendarGroupEntryInfo.Id); } foreach (StoreId id2 in list) { base.Delete(id2, flags); } } base.Delete(id, flags); }
public static CalendarGroup Bind(MailboxSession session, CalendarGroupType defaultGroupType) { EnumValidator.ThrowIfInvalid <CalendarGroupType>(defaultGroupType, new CalendarGroupType[] { CalendarGroupType.MyCalendars, CalendarGroupType.OtherCalendars, CalendarGroupType.PeoplesCalendars }); return(CalendarGroup.Bind(session, CalendarGroup.GetGroupGuidFromType(defaultGroupType))); }
private static Guid GetGroupGuidFromType(CalendarGroupType groupType) { switch (groupType) { case CalendarGroupType.MyCalendars: return(FolderTreeData.MyFoldersClassId); case CalendarGroupType.OtherCalendars: return(FolderTreeData.OtherFoldersClassId); case CalendarGroupType.PeoplesCalendars: return(FolderTreeData.PeoplesFoldersClassId); default: return(Guid.Empty); } }
private static CalendarGroup InternalCreateGroup(MailboxSession session, CalendarGroupType groupType) { CalendarGroup calendarGroup; using (DisposeGuard disposeGuard = default(DisposeGuard)) { calendarGroup = CalendarGroup.CreateDefaultGroup(groupType, session); disposeGuard.Add <CalendarGroup>(calendarGroup); ConflictResolutionResult conflictResolutionResult = calendarGroup.Save(SaveMode.NoConflictResolution); if (conflictResolutionResult.SaveStatus != SaveResult.Success) { ExTraceGlobals.StorageTracer.TraceWarning <CalendarGroupType, SmtpAddress>(0L, "Unable to create group of type {0} for user: {1}", groupType, session.MailboxOwner.MailboxInfo.PrimarySmtpAddress); throw new DefaultCalendarGroupCreationException(groupType.ToString()); } calendarGroup.Load(); disposeGuard.Success(); } return(calendarGroup); }
private static CalendarGroup CreateDefaultGroup(CalendarGroupType groupType, MailboxSession session) { CalendarGroup calendarGroup = CalendarGroup.Create(session); Guid groupGuidFromType = CalendarGroup.GetGroupGuidFromType(groupType); string groupName = string.Empty; switch (groupType) { case CalendarGroupType.MyCalendars: groupName = ClientStrings.MyCalendars.ToString(session.InternalPreferedCulture); break; case CalendarGroupType.OtherCalendars: groupName = ClientStrings.OtherCalendars.ToString(session.InternalPreferedCulture); break; case CalendarGroupType.PeoplesCalendars: groupName = ClientStrings.PeoplesCalendars.ToString(session.InternalPreferedCulture); break; } calendarGroup.GroupClassId = groupGuidFromType; calendarGroup.GroupName = groupName; return(calendarGroup); }
public CalendarGroupReference(CalendarGroups calendarGroups, CalendarGroupType calendarGroupType) : base(calendarGroups) { this.calendarGroupType = new CalendarGroupType?(calendarGroupType); }
public ICalendarGroup BindToCalendarGroup(IMailboxSession session, CalendarGroupType defaultGroupType) { return(CalendarGroup.Bind((MailboxSession)session, defaultGroupType)); }
public CalendarGroupInfo(string groupName, VersionedId id, Guid groupClassId, CalendarGroupType groupType, byte[] groupOrdinal, ExDateTime lastModifiedTime) : base(id, groupOrdinal, lastModifiedTime) { Util.ThrowOnNullArgument(groupName, "groupName"); EnumValidator.ThrowIfInvalid <CalendarGroupType>(groupType, "groupType"); this.GroupName = groupName; this.GroupClassId = groupClassId; this.GroupType = groupType; this.Calendars = new List <CalendarGroupEntryInfo>(); }