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);
        }
示例#2
0
        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));
        }