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);
 }
Esempio n. 2
0
 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)));
 }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
 }
Esempio n. 7
0
 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>();
 }