protected override void InternalProcessRecord() { try { base.InternalProcessRecord(); if (this.removeTeamMailboxFromResolverCache) { TeamMailboxADUserResolver.RemoveIdIfExists(base.DataObject.Id); } } finally { ProvisioningPerformanceHelper.StopLatencyDetection(this.latencyContext); } }
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)); } }