예제 #1
0
        public async Task <IUser> FindUserAsync(string type, string searchString, UserSearchMode searchMode)
        {
            foreach (var userProvider in UserProviders.Where(d => d.SupportsUserType(type)))
            {
                var user = await userProvider.FindUserAsync(type, searchString, searchMode);

                if (user != null)
                {
                    return(user);
                }
            }

            return(null);
        }
예제 #2
0
 public UnturnedUser?FindUser(string searchString, UserSearchMode searchMode)
 {
     return(AsyncHelper.RunSync(async() =>
     {
         try
         {
             var result = await m_UserManager.FindUserAsync(KnownActorTypes.Player, searchString, searchMode);
             return result as UnturnedUser;
         }
         catch (Exception)
         {
             return null;
         }
     }));
 }
예제 #3
0
        public IEnumerable <UserModel> FindUsers(String term, UserSearchMode mode)
        {
            if (mode == UserSearchMode.Id)
            {
                if (Int64.TryParse(term, out Int64 id))
                {
                    return(this.mainCtx.Accounts.Where(a => a.Id == id).Select(a => new UserModel {
                        Id = a.Id, Username = a.Username
                    }).ToList());
                }
            }
            else if (mode == UserSearchMode.UserName)
            {
                return(this.mainCtx.Accounts.Where(a => a.Username != null && a.Username.ToUpper().Contains(term.ToUpper()))
                       .Select(acc => new UserModel {
                    Id = acc.Id, Username = acc.Username
                }).ToList());
            }

            return(Enumerable.Empty <UserModel>());
        }
예제 #4
0
        public Task <IUser> FindUserAsync(string userType, string searchString, UserSearchMode searchMode)
        {
            var confidence   = 0;
            var unturnedUser = (IUser)null;

            foreach (var user in m_UnturnedUsers)
            {
                switch (searchMode)
                {
                case UserSearchMode.NameOrId:
                case UserSearchMode.Id:
                    if (user.Id.Equals(searchString, StringComparison.OrdinalIgnoreCase))
                    {
                        return(Task.FromResult((IUser)user));
                    }

                    if (searchMode == UserSearchMode.NameOrId)
                    {
                        goto case UserSearchMode.Name;
                    }
                    break;

                case UserSearchMode.Name:
                    var currentConfidence = NameConfidence(user.DisplayName, searchString, confidence);
                    if (currentConfidence > confidence)
                    {
                        unturnedUser = user;
                        confidence   = currentConfidence;
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(searchMode), searchMode, null);
                }
            }

            return(Task.FromResult(unturnedUser));
        }
예제 #5
0
        public async Task <IUser?> FindUserAsync(string userType, string searchString, UserSearchMode searchMode)
        {
            if (searchMode != UserSearchMode.FindById && searchMode != UserSearchMode.FindByNameOrId)
            {
                return(null);
            }

            var data = await m_UserDataStore.GetUserDataAsync(searchString, userType);

            if (data == null)
            {
                return(null);
            }

            return(new OfflineUser(this, m_UserDataStore, data));
        }
예제 #6
0
 private IQueryable <PlayerData> FindMultiplePlayersInternal(string searchTerm, UserSearchMode searchMode)
 {
     return(searchMode switch
     {
         UserSearchMode.FindById => GetPlayerByIdInternal(searchTerm),
         UserSearchMode.FindByName => GetPlayerByNameInternal(searchTerm),
         UserSearchMode.FindByNameOrId => GetPlayerByIdInternal(searchTerm)
         .Concat(GetPlayerByNameInternal(searchTerm)),
         _ => m_DbContext.Players.Take(0)
     });
예제 #7
0
 public List <PlayerData> FindMultiplePlayers(string searchTerm, UserSearchMode searchMode)
 {
     return(FindMultiplePlayersInternal(searchTerm, searchMode).ToList());
 }
예제 #8
0
 public async Task <List <PlayerData> > FindMultiplePlayersAsync(string searchTerm, UserSearchMode searchMode)
 {
     return(await FindMultiplePlayersInternal(searchTerm, searchMode).ToListAsync());
 }
예제 #9
0
 public PlayerData FindPlayer(string searchTerm, UserSearchMode searchMode)
 {
     return(FindMultiplePlayersInternal(searchTerm, searchMode).FirstOrDefault());
 }
예제 #10
0
 public async Task <PlayerData> FindPlayerAsync(string searchTerm, UserSearchMode searchMode)
 {
     return(await FindMultiplePlayersInternal(searchTerm, searchMode).FirstOrDefaultAsync());
 }
 public List <PlayerData> FindMultiplePlayers(string searchTerm, UserSearchMode searchMode)
 {
     return(RunOperation(dbContext => FindMultiplePlayersInternal(dbContext, searchTerm, searchMode).ToList()));
 }
 public async Task <List <PlayerData> > FindMultiplePlayersAsync(string searchTerm, UserSearchMode searchMode)
 {
     return(await RunOperation(dbContext =>
                               FindMultiplePlayersInternal(dbContext, searchTerm, searchMode).ToListAsync()));
 }
 public PlayerData FindPlayer(string searchTerm, UserSearchMode searchMode)
 {
     return(RunOperation(dbContext =>
                         FindMultiplePlayersInternal(dbContext, searchTerm, searchMode).FirstOrDefault()));
 }
 public async Task <PlayerData> FindPlayerAsync(string searchTerm, UserSearchMode searchMode)
 {
     return(await RunOperation(dbContext =>
                               FindMultiplePlayersInternal(dbContext, searchTerm, searchMode).FirstOrDefaultAsync()));
 }
예제 #15
0
        public virtual async Task <IUser?> FindUserAsync(string userType, string searchString, UserSearchMode searchMode)
        {
            if (string.IsNullOrEmpty(userType))
            {
                throw new ArgumentException(nameof(userType));
            }

            if (string.IsNullOrEmpty(searchString))
            {
                throw new ArgumentException(nameof(searchString));
            }

            foreach (var userProvider in UserProviders.Where(d => d.SupportsUserType(userType)))
            {
                var user = await userProvider.FindUserAsync(userType, searchString, searchMode);

                if (user != null)
                {
                    return(user);
                }
            }

            return(null);
        }