public override T Read(RequestIndexEntryProvider requestIndexEntryProvider, RequestIndexEntryObjectId identity) { ArgumentValidator.ThrowIfNull("targetExchangeGuid", identity.TargetExchangeGuid); ADRecipient adrecipient = requestIndexEntryProvider.Read <ADRecipient>((IRecipientSession session) => session.FindByExchangeGuidIncludingAlternate(identity.TargetExchangeGuid)); if (adrecipient == null) { MrsTracer.Common.Warning("No ADRecipient found with ExchangeGuid '{0}' including alternates.", new object[] { identity.TargetExchangeGuid }); return(default(T)); } ADUser aduser = adrecipient as ADUser; if (aduser == null) { MrsTracer.Common.Warning("'{0}' is not a user.", new object[] { adrecipient.Id.ToString() }); return(default(T)); } T t = Activator.CreateInstance <T>(); t.TargetUser = aduser; t.TargetExchangeGuid = identity.TargetExchangeGuid; t.TargetMDB = aduser.Database; T result = t; result.RequestGuid = identity.RequestGuid; result.SetExchangePrincipal(); return(result); }
internal IEnumerable <T> InternalGetObjects <T>(ObjectId rootId, IConfigDataProvider session, OptionalIdentityData optionalData, out LocalizedString?notFoundReason) where T : IConfigurable, new() { if (session == null) { throw new ArgumentNullException("session"); } RequestIndexEntryProvider requestIndexEntryProvider = session as RequestIndexEntryProvider; if (requestIndexEntryProvider == null) { throw new ArgumentException(MrsStrings.MustProvideValidSessionForFindingRequests); } if (this.requestGuid != Guid.Empty && this.indexToUse != null) { List <T> list = new List <T>(1); RequestIndexEntryObjectId identity = new RequestIndexEntryObjectId(this.requestGuid, this.RequestType, this.OrganizationId, this.indexToUse, null); T t = (T)((object)requestIndexEntryProvider.Read <T>(identity)); if (t != null) { list.Add(t); notFoundReason = null; } else { notFoundReason = new LocalizedString?(MrsStrings.NoSuchRequestInSpecifiedIndex); } return(list); } if (string.IsNullOrEmpty(this.requestName) || this.indexToUse == null) { notFoundReason = new LocalizedString?(MrsStrings.NotEnoughInformationSupplied); return(new List <T>(0)); } if (this.mailboxId != null) { QueryFilter filter = new RequestIndexEntryQueryFilter(this.requestName, this.mailboxId, this.RequestType, this.indexToUse, true); notFoundReason = new LocalizedString?(MrsStrings.NoSuchRequestInSpecifiedIndex); return(requestIndexEntryProvider.FindPaged <T>(filter, rootId, true, null, 2)); } QueryFilter filter2 = new RequestIndexEntryQueryFilter(this.requestName, null, this.RequestType, this.indexToUse, false); notFoundReason = new LocalizedString?(MrsStrings.NoSuchRequestInSpecifiedIndex); return(requestIndexEntryProvider.FindPaged <T>(filter2, rootId, true, null, 2)); }