protected override string CheckRequestNameAvailability(string name, ADObjectId identifyingObjectId, bool objectIsMailbox, MRSRequestType requestType, object errorObject, bool wildcardedSearch)
        {
            string text = string.Format("{0}*", name);
            RequestIndexEntryQueryFilter requestIndexEntryQueryFilter = new RequestIndexEntryQueryFilter(wildcardedSearch ? text : name, identifyingObjectId, requestType, new RequestIndexId(RequestIndexLocation.AD), objectIsMailbox);

            requestIndexEntryQueryFilter.WildcardedNameSearch = wildcardedSearch;
            ObjectId rootId = ADHandler.GetRootId(base.CurrentOrgConfigSession, requestType);
            IEnumerable <FolderMoveRequest> enumerable = ((RequestJobProvider)base.DataSession).IndexProvider.FindPaged <FolderMoveRequest>(requestIndexEntryQueryFilter, rootId, rootId == null, null, 10);
            string result;

            using (IEnumerator <FolderMoveRequest> enumerator = enumerable.GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    bool flag = true;
                    while (this.IsNewRequestAllowed(enumerator.Current))
                    {
                        if (!enumerator.MoveNext())
                        {
IL_93:
                            if (!flag)
                            {
                                base.WriteError(new NameMustBeUniquePermanentException(name, (identifyingObjectId == null) ? string.Empty : identifyingObjectId.ToString()), ErrorCategory.InvalidArgument, errorObject);
                                return(null);
                            }
                            return(name);
                        }
                    }
                    flag = false;
                    goto IL_93;
                }
                result = name;
            }
            return(result);
        }
Example #2
0
        protected override RequestIndexEntryQueryFilter InternalFilterBuilder()
        {
            RequestIndexEntryQueryFilter requestIndexEntryQueryFilter = base.InternalFilterBuilder();

            if (requestIndexEntryQueryFilter == null)
            {
                requestIndexEntryQueryFilter = new RequestIndexEntryQueryFilter();
            }
            requestIndexEntryQueryFilter.RequestType = this.RequestType;
            requestIndexEntryQueryFilter.IndexId     = new RequestIndexId(RequestIndexLocation.AD);
            return(requestIndexEntryQueryFilter);
        }
Example #3
0
        protected override RequestIndexEntryQueryFilter InternalFilterBuilder()
        {
            RequestIndexEntryQueryFilter requestIndexEntryQueryFilter = base.InternalFilterBuilder();

            if (requestIndexEntryQueryFilter == null)
            {
                requestIndexEntryQueryFilter = new RequestIndexEntryQueryFilter();
            }
            requestIndexEntryQueryFilter.RequestType   = this.RequestType;
            requestIndexEntryQueryFilter.IndexId       = this.DefaultRequestIndexId;
            requestIndexEntryQueryFilter.TargetMailbox = this.targetUser.Id;
            return(requestIndexEntryQueryFilter);
        }
Example #4
0
        protected virtual RequestIndexEntryQueryFilter InternalFilterBuilder()
        {
            RequestIndexEntryQueryFilter requestIndexEntryQueryFilter = new RequestIndexEntryQueryFilter();

            if (this.IsFieldSet("BatchName"))
            {
                requestIndexEntryQueryFilter.BatchName = (this.BatchName ?? string.Empty);
            }
            if (this.IsFieldSet("Name"))
            {
                requestIndexEntryQueryFilter.RequestName = (this.Name ?? string.Empty);
            }
            if (this.IsFieldSet("Status"))
            {
                requestIndexEntryQueryFilter.Status = this.Status;
            }
            if (this.IsFieldSet("Suspend"))
            {
                if (this.Suspend)
                {
                    requestIndexEntryQueryFilter.Flags |= RequestFlags.Suspend;
                }
                else
                {
                    requestIndexEntryQueryFilter.NotFlags |= RequestFlags.Suspend;
                }
            }
            if (this.IsFieldSet("HighPriority"))
            {
                if (this.HighPriority)
                {
                    requestIndexEntryQueryFilter.Flags |= RequestFlags.HighPriority;
                }
                else
                {
                    requestIndexEntryQueryFilter.NotFlags |= RequestFlags.HighPriority;
                }
            }
            if (this.queueId != null)
            {
                requestIndexEntryQueryFilter.RequestQueueId = this.queueId;
            }
            if (this.userId != null)
            {
                requestIndexEntryQueryFilter.MailboxId          = this.userId;
                requestIndexEntryQueryFilter.LooseMailboxSearch = true;
            }
            return(requestIndexEntryQueryFilter);
        }
Example #5
0
        protected bool CheckRequestOfTypeExists(MRSRequestType requestType)
        {
            RequestIndexEntryQueryFilter filter = new RequestIndexEntryQueryFilter(null, null, requestType, this.DefaultRequestIndexId, false);
            ObjectId rootId = ADHandler.GetRootId(this.CurrentOrgConfigSession, requestType);
            IEnumerable <TRequest> enumerable = ((RequestJobProvider)base.DataSession).IndexProvider.FindPaged <TRequest>(filter, rootId, rootId == null, null, 10);

            foreach (TRequest trequest in enumerable)
            {
                if (trequest.Type == requestType)
                {
                    return(true);
                }
            }
            return(false);
        }
        protected override RequestIndexEntryQueryFilter InternalFilterBuilder()
        {
            RequestIndexEntryQueryFilter requestIndexEntryQueryFilter = base.InternalFilterBuilder();

            if (requestIndexEntryQueryFilter == null)
            {
                requestIndexEntryQueryFilter = new RequestIndexEntryQueryFilter();
            }
            requestIndexEntryQueryFilter.RequestType = this.RequestType;
            requestIndexEntryQueryFilter.IndexId     = new RequestIndexId(RequestIndexLocation.AD);
            if (this.targetUserId != null)
            {
                requestIndexEntryQueryFilter.TargetMailbox = this.targetUserId;
            }
            if (this.sourceDatabaseId != null)
            {
                requestIndexEntryQueryFilter.SourceDatabase = this.sourceDatabaseId;
            }
            return(requestIndexEntryQueryFilter);
        }
Example #7
0
        protected virtual string CheckRequestNameAvailability(string name, ADObjectId identifyingObjectId, bool objectIsMailbox, MRSRequestType requestType, object errorObject, bool wildcardedSearch)
        {
            string text = string.Format("{0}*", name);
            RequestIndexEntryQueryFilter requestIndexEntryQueryFilter = new RequestIndexEntryQueryFilter(wildcardedSearch ? text : name, identifyingObjectId, requestType, this.DefaultRequestIndexId, objectIsMailbox);

            requestIndexEntryQueryFilter.WildcardedNameSearch = wildcardedSearch;
            ObjectId rootId = ADHandler.GetRootId(this.CurrentOrgConfigSession, requestType);
            IEnumerable <TRequest> enumerable = ((RequestJobProvider)base.DataSession).IndexProvider.FindPaged <TRequest>(requestIndexEntryQueryFilter, rootId, rootId == null, null, 10);
            string result;

            using (IEnumerator <TRequest> enumerator = enumerable.GetEnumerator())
            {
                if (!enumerator.MoveNext())
                {
                    result = name;
                }
                else if (!wildcardedSearch)
                {
                    if (requestType.Equals(MRSRequestType.PublicFolderMigration) || requestType.Equals(MRSRequestType.PublicFolderMove))
                    {
                        base.WriteError(new MultipleSamePublicFolderMRSJobInstancesNotAllowedException(requestType.ToString()), ErrorCategory.InvalidArgument, errorObject);
                    }
                    else
                    {
                        base.WriteError(new NameMustBeUniquePermanentException(name, (identifyingObjectId == null) ? string.Empty : identifyingObjectId.ToString()), ErrorCategory.InvalidArgument, errorObject);
                    }
                    result = null;
                }
                else
                {
                    Regex       regex = new Regex(string.Format("^{0}(\\d)?$", name));
                    List <uint> list  = new List <uint>(10);
                    for (uint num = 0U; num < 10U; num += 1U)
                    {
                        list.Add(num);
                    }
                    do
                    {
                        TRequest trequest = enumerator.Current;
                        Match    match    = regex.Match(trequest.Name);
                        if (match.Success)
                        {
                            string value = match.Groups[1].Value;
                            uint   num2;
                            if (string.IsNullOrEmpty(value))
                            {
                                list.Remove(0U);
                            }
                            else if (uint.TryParse(value, out num2) && list.Contains(num2) && num2 != 0U)
                            {
                                list.Remove(num2);
                            }
                        }
                    }while (enumerator.MoveNext() && list.Count > 0);
                    if (list.Count == 0)
                    {
                        base.WriteError(new NoAvailableDefaultNamePermanentException(identifyingObjectId.ToString()), ErrorCategory.InvalidArgument, errorObject);
                        result = null;
                    }
                    else if (list.Contains(0U))
                    {
                        result = name;
                    }
                    else
                    {
                        result = string.Format("{0}{1}", name, list[0]);
                    }
                }
            }
            return(result);
        }