Exemplo n.º 1
0
        public async Task <(List <ApplicationUser> users, int count)> GetUsersAsync(UserRequestParameters parameters)
        {
            int        skipCount  = (parameters.Page - 1) * parameters.PageSize;
            SqlBuilder sqlBuilder = new SqlBuilder();

            SqlBuilder.Template countExpression = sqlBuilder.AddTemplate(
                $@"SELECT COUNT (DISTINCT AspNetUsers.Id) FROM AspNetUsers
                /**where**/");

            SqlBuilder.Template itemsExpression = sqlBuilder.AddTemplate(
                $@"SELECT * FROM 
                (SELECT DISTINCT AspNetUsers.* FROM AspNetUsers
                /**where**/ /**orderby**/) AS FilteredUsers");

            sqlBuilder.Where($"AspNetUsers.UserName != '{AdminCredentials.UserName}'");
            if (!string.IsNullOrWhiteSpace(parameters.KeyWord))
            {
                parameters.KeyWord = parameters.KeyWord.ToLower();
                sqlBuilder.Where($@"LOWER(AspNetUsers.FirstName + ' ' + AspNetUsers.LastName + ' ' + AspNetUsers.UserName + ' ' + AspNetUsers.Email) LIKE '%' + @KeyWord + '%'");
            }

            int count = await _connection.ExecuteScalarAsync <int>(countExpression.RawSql, parameters);

            sqlBuilder.OrderBy($"AspNetUsers.CreationDate DESC OFFSET @Skip ROWS FETCH NEXT @PageSize ROWS ONLY");
            List <ApplicationUser> response = (await _connection.QueryAsync <ApplicationUser>(itemsExpression.RawSql, parameters)).ToList();

            return(response, count);
        }
Exemplo n.º 2
0
        private IDictionary <string, string> GetDetailsParameters(UserRequestParameters requestParameters)
        {
            IDictionary <string, string> parameters = new Dictionary <string, string>
            {
                ["ids"]  = string.Join(",", requestParameters.Ids),
                ["size"] = requestParameters.Size.ToString(),
            };

            return(parameters);
        }
Exemplo n.º 3
0
        public async Task <UserResponseModel> GetUsersAsync(UserRequestModel requestModel)
        {
            UserRequestParameters parameters = requestModel.MapToRequestParameters();

            (List <ApplicationUser> users, int count) = await _userRepository.GetUsersAsync(parameters);

            List <UserModel>  userModels    = users.Select(item => new UserModel(item)).ToList();
            UserResponseModel responseModel = new UserResponseModel()
            {
                Count = count, UserModels = userModels
            };

            return(responseModel);
        }
Exemplo n.º 4
0
        public UserRequestParameters MapToRequestParameters()
        {
            UserRequestParameters parameters = new UserRequestParameters();

            if (Page != default(int))
            {
                parameters.Page = Page;
            }
            if (PageSize != default(int))
            {
                parameters.PageSize = PageSize;
            }
            if (!string.IsNullOrWhiteSpace(KeyWord))
            {
                parameters.KeyWord = KeyWord;
            }
            return(parameters);
        }
Exemplo n.º 5
0
        public async Task <UserResultSet> Details(UserRequestParameters requestParameters)
        {
            if (requestParameters == null)
            {
                throw new ArgumentNullException(nameof(requestParameters));
            }

            if (requestParameters.Ids == null || !requestParameters.Ids.Any())
            {
                throw new ArgumentException("User Ids are required.", nameof(requestParameters.Ids));
            }

            if (requestParameters.Ids.Count > 100)
            {
                throw new ArgumentException("Maximum size of id list is 100", nameof(requestParameters.Ids));
            }

            var requestUrl = UrlHelper.GenerateApiUrl(_wikiApiUrl, _user);
            var parameters = GetDetailsParameters(requestParameters);
            var json       = await _wikiaHttpClient.Get(requestUrl, parameters);

            return(JsonHelper.Deserialize <UserResultSet>(json));
        }
        public async Task <(List <ApplicationUser> users, int count)> GetUsersAsync(UserRequestParameters parameters)
        {
            IQueryable <ApplicationUser> users = _dbSet;

            users = users.Where(item => item.UserName != AdminCredentials.UserName);
            if (!string.IsNullOrWhiteSpace(parameters.KeyWord))
            {
                users = users.Where(item =>
                                    item.FirstName.Contains(parameters.KeyWord) ||
                                    item.LastName.Contains(parameters.KeyWord) ||
                                    item.Email.Contains(parameters.KeyWord) ||
                                    item.UserName.Contains(parameters.KeyWord));
            }

            int count = await users.CountAsync();

            int countToSkip = (--parameters.Page) * parameters.PageSize;

            users = users.Skip(countToSkip).Take(parameters.PageSize);

            List <ApplicationUser> response = await users.ToListAsync();

            return(response, count);
        }