コード例 #1
0
 protected override void InternalProcessRecord()
 {
     try
     {
         base.InternalProcessRecord();
         if (this.removeTeamMailboxFromResolverCache)
         {
             TeamMailboxADUserResolver.RemoveIdIfExists(base.DataObject.Id);
         }
     }
     finally
     {
         ProvisioningPerformanceHelper.StopLatencyDetection(this.latencyContext);
     }
 }
コード例 #2
0
        protected override void InternalProcessRecord()
        {
            IList <ADObjectId> list          = null;
            IList <ADObjectId> list2         = null;
            IList <ADObjectId> list3         = null;
            IList <ADObjectId> usersToRemove = null;
            bool flag = false;

            if (!this.executingUserIsMember)
            {
                if (this.DisplayName != null && this.DisplayName != this.DataObject.DisplayName)
                {
                    this.DataObject.DisplayName = this.DisplayName;
                    this.changeTracking         = true;
                }
                if (base.Fields.IsModified("Active"))
                {
                    if (this.Active)
                    {
                        if (!this.tm.Active)
                        {
                            this.tm.ClosedTime = null;
                            flag = true;
                            this.changeTracking = true;
                        }
                    }
                    else if (this.tm.Active)
                    {
                        this.tm.ClosedTime = new DateTime?(DateTime.UtcNow);
                        flag = true;
                        this.changeTracking = true;
                    }
                }
                if (base.Fields.IsModified("RemoveDuplicateMessages") && this.tm.RemoveDuplicateMessages != this.RemoveDuplicateMessages)
                {
                    this.tm.RemoveDuplicateMessages = this.RemoveDuplicateMessages;
                    this.changeTracking             = true;
                }
                if (base.Fields.IsModified("Owners") || base.Fields.IsModified("Members"))
                {
                    IList <ADObjectId> list4 = this.tm.Owners;
                    if (base.Fields.IsModified("Owners"))
                    {
                        IList <RecipientIdParameter> list5;
                        IList <ADUser> list6;
                        list4 = this.teamMailboxHelper.RecipientIds2ADObjectIds(this.Owners, out list5, out list6);
                        if (list5 != null && list5.Count > 0)
                        {
                            base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxUserNotResolved(TeamMailboxHelper.GetAggreatedIds(list5))), ExchangeErrorCategory.Client, null);
                        }
                        if (list6 != null && list6.Count > 0)
                        {
                            base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxUserNotResolved(TeamMailboxHelper.GetAggreatedUsers(list6))), ExchangeErrorCategory.Client, null);
                        }
                    }
                    IList <ADObjectId> userList = this.tm.Members;
                    if (base.Fields.IsModified("Members"))
                    {
                        IList <RecipientIdParameter> list5;
                        IList <ADUser> list6;
                        userList = this.teamMailboxHelper.RecipientIds2ADObjectIds(this.Members, out list5, out list6);
                        if (list5 != null && list5.Count > 0)
                        {
                            base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxUserNotResolved(TeamMailboxHelper.GetAggreatedIds(list5))), ExchangeErrorCategory.Client, null);
                        }
                        if (list6 != null && list6.Count > 0)
                        {
                            base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxUserNotResolved(TeamMailboxHelper.GetAggreatedUsers(list6))), ExchangeErrorCategory.Client, null);
                        }
                    }
                    IList <ADObjectId> newUserList = TeamMailbox.MergeUsers(list4, userList);
                    if (base.Fields.IsModified("Owners") && this.membershipHelper.UpdateTeamMailboxUserList(this.tm.Owners, list4, out list, out list2))
                    {
                        this.changeTracking = true;
                    }
                    if (this.membershipHelper.UpdateTeamMailboxUserList(this.tm.OwnersAndMembers, newUserList, out list3, out usersToRemove))
                    {
                        if (list != null && list.Count != 0)
                        {
                            TeamMailbox.DiffUsers(list3, list);
                        }
                        Exception ex = null;
                        try
                        {
                            this.membershipHelper.SetTeamMailboxUserPermissions(list3, usersToRemove, null, true);
                        }
                        catch (OverflowException ex2)
                        {
                            ex = ex2;
                        }
                        catch (COMException ex3)
                        {
                            ex = ex3;
                        }
                        catch (UnauthorizedAccessException ex4)
                        {
                            ex = ex4;
                        }
                        catch (TransientException ex5)
                        {
                            ex = ex5;
                        }
                        catch (DataSourceOperationException ex6)
                        {
                            ex = ex6;
                        }
                        if (ex != null)
                        {
                            base.WriteError(new RecipientTaskException(Strings.ErrorSetTeamMailboxUserPermissions(this.tm.DisplayName, ex.Message)), ExchangeErrorCategory.Client, null);
                        }
                        try
                        {
                            new TeamMailboxSecurityRefresher().Refresh(this.DataObject, (IRecipientSession)base.DataSession);
                        }
                        catch (DatabaseNotFoundException ex7)
                        {
                            ex = ex7;
                        }
                        catch (ObjectNotFoundException ex8)
                        {
                            ex = ex8;
                        }
                        catch (FormatException ex9)
                        {
                            ex = ex9;
                        }
                        if (ex != null)
                        {
                            base.WriteError(new RecipientTaskException(Strings.ErrorSetTeamMailboxUserPermissions(this.tm.DisplayName, ex.Message)), ExchangeErrorCategory.Client, null);
                        }
                        this.changeTracking = true;
                    }
                }
                if (base.Fields.IsModified("SharePointUrl"))
                {
                    try
                    {
                        this.changeTracking = this.teamMailboxHelper.LinkSharePointSite(this.SharePointUrl, false, this.Force);
                    }
                    catch (RecipientTaskException exception)
                    {
                        base.WriteError(exception, ExchangeErrorCategory.Client, this.Identity);
                    }
                }
            }
            if (base.Fields.IsModified("ShowInMyClient"))
            {
                if (!this.tm.Active)
                {
                    base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxSetShowInMyClientForClosedMailbox(this.DataObject.DisplayName)), ExchangeErrorCategory.Client, this.Identity);
                }
                bool      flag2;
                Exception ex10;
                if (this.membershipHelper.SetShowInMyClient(this.executingUserId, this.ShowInMyClient, out flag2, out ex10))
                {
                    this.changeTracking = true;
                }
                else if (ex10 != null)
                {
                    base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxSetShowInMyClient(this.DataObject.DisplayName, ex10.ToString())), ExchangeErrorCategory.Client, this.Identity);
                }
                else if (flag2)
                {
                    base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxMaxShowInMyClientReached(this.DataObject.DisplayName, 10)), ExchangeErrorCategory.Client, this.Identity);
                }
            }
            base.InternalProcessRecord();
            if (flag)
            {
                TeamMailboxADUserResolver.RemoveIdIfExists(this.tm.Id);
            }
            IList <Exception> list7;

            this.membershipHelper.SetShowInMyClient(list3, usersToRemove, out list7);
            foreach (Exception ex11 in list7)
            {
                this.WriteWarning(Strings.ErrorTeamMailboxResolveUser(ex11.Message));
            }
        }