コード例 #1
0
        public async Task <ActionResult <PaginatedItemsDto <User> > > GetPaginated(
            [FromHeader] string authToken,
            [FromQuery] int pageIndex    = 0,
            [FromQuery] int pageSize     = 1,
            [FromQuery] string orderBy   = "LastName",
            [FromQuery] bool isAscending = true,
            [FromQuery] UserSearchParameters searchParameters = null
            )
        {
            if (pageIndex < 0)
            {
                return(BadRequest("Page index must be greater than or equal to 0."));
            }

            if (pageSize < 1)
            {
                return(BadRequest("Page size must be greater than or equal to 1."));
            }

            if (!await _authenticationService.CheckAccess(authToken, "userView"))
            {
                return(Unauthorized());
            }

            var users = await _userService.Get();

            var queryable = users.AsQueryable();
            var filtered  = GetFiltered(queryable, searchParameters);
            var ordered   = isAscending ? filtered.OrderByMember(orderBy) : filtered.OrderByMemberDescending(orderBy);
            var paginated = ordered.Skip(pageIndex * pageSize).Take(pageSize);

            long totalCount = ordered.LongCount();

            return(Ok(new PaginatedItemsDto <User>(pageIndex, pageSize, totalCount, paginated)));
        }
コード例 #2
0
        private List <LoggedUser> GetUsersEx(UserSearchParameters lp)
        {
            SetSqlFormat("select * from {0}", SynnDataProvider.TableNames.Users);
            ClearParameters();
            if (!string.IsNullOrEmpty(lp.UserName))
            {
                AddSqlWhereLikeField("UserName", lp.UserName, LikeSelectionStyle.AsIs);
            }
            if (!string.IsNullOrEmpty(lp.Password))
            {
                AddSqlWhereLikeField("Password", lp.Password, LikeSelectionStyle.AsIs);
            }
            if (lp.Id.HasValue)
            {
                AddSqlWhereLikeField("Id", lp.Id.ToString());
            }
            if (lp.Ids.NotEmpty())
            {
                StartORGroup();
                foreach (var id in lp.Ids)
                {
                    AddOREqualField("Id", id);
                }
                EndORGroup();
            }
            var lst = new List <LoggedUser>();

            FillList(lst, typeof(LoggedUser));
            return(lst);
        }
コード例 #3
0
        public async Task <IActionResult> OnGetAsync()
        {
            if (string.IsNullOrWhiteSpace(Q))
            {
                return(LocalRedirect("/search/"));
            }
            SearchScreenName = ScreenNameRegex.Match(Q.Trim()).Value;
            if (string.IsNullOrWhiteSpace(SearchScreenName))
            {
                HttpContext.Response.Headers.Add("Location", "/search");
                return(StatusCode(StatusCodes.Status303SeeOther));
            }
            long?TargetUserID = await DBHandler.Instance.SelectID_Unique_screen_name(SearchScreenName).ConfigureAwait(false);

            if (Direct != false && TargetUserID.HasValue)
            {
                HttpContext.Response.Headers.Add("Location", "/users/" + TargetUserID.Value.ToString());
                return(StatusCode(StatusCodes.Status303SeeOther));
            }

            var sw = Stopwatch.StartNew();

            Params = new UserSearchParameters();
            await Params.InitValidate(HttpContext).ConfigureAwait(false);

            Limit = 100;
            //screen_nameを前方一致検索する
            Users = await DB.SelectUserLike(SearchScreenName.Replace(' ', '%').Replace("_", @"\_") + "%", Params.ID, Params.UserSearch_LikeMode.Value, Limit).ConfigureAwait(false);

            QueryElapsedMilliseconds = sw.ElapsedMilliseconds;

            return(Page());
        }
コード例 #4
0
        public void SearchUsers_EmptyParameters_RecordCountSameAsTotal()
        {
            var parameters = new UserSearchParameters();

            var result = userRepository.Search(parameters);

            Assert.AreEqual(result.Records.Count(), result.TotalCount);
        }
コード例 #5
0
        public void SearchUsers_ItHasRecords()
        {
            var parameters = new UserSearchParameters();

            var result = userRepository.Search(parameters);

            Assert.IsTrue(result.Records.Any());
        }
コード例 #6
0
        public IUserSearchParameters CloneUserSearchParameters(IUserSearchParameters userSearchParameters)
        {
            var clone = new UserSearchParameters(userSearchParameters.SearchQuery)
            {
                IncludeEntities        = userSearchParameters.IncludeEntities,
                Page                   = userSearchParameters.Page,
                MaximumNumberOfResults = userSearchParameters.MaximumNumberOfResults
            };

            return(clone);
        }
コード例 #7
0
        public void SearchUsers_FilterEndsWithUsername_ResultsOnlyWithUsernameEndsWith()
        {
            var parameters = new UserSearchParameters
            {
                UserName = new SearchFilter <string>
                {
                    Value      = "com",
                    FilterType = FilterType.EndsWith
                }
            };

            var result = userRepository.Search(parameters);

            Assert.IsTrue(result.FilteredCount > 0);
            Assert.IsTrue(result.Records.All(x => x.UserName.EndsWith(parameters.UserName.Value)));
        }
コード例 #8
0
        public void SearchUsers_FilterByUserName_ResultsOnlyWithUsernameContaining()
        {
            var parameters = new UserSearchParameters
            {
                UserName = new SearchFilter <string>
                {
                    Value      = "oct",
                    FilterType = FilterType.Like
                }
            };

            var result = userRepository.Search(parameters);

            Assert.IsTrue(result.FilteredCount > 0);
            Assert.IsTrue(result.Records.All(x => x.UserName.Contains(parameters.UserName.Value)));
        }
コード例 #9
0
        public void SearchUsers_FilterTypeGreaterThanZero_ResultsAllGreaterThanZero()
        {
            var parameters = new UserSearchParameters
            {
                Type = new SearchFilter <byte?>
                {
                    Value      = 0,
                    FilterType = FilterType.GreaterThan
                }
            };

            var result = userRepository.Search(parameters);

            Assert.IsTrue(result.FilteredCount > 0);
            Assert.IsTrue(result.Records.All(x => x.Type > 0));
        }
コード例 #10
0
        public void SearchUsers_FilterTypeLessThanFour_ResultsAllLessThanFour()
        {
            var parameters = new UserSearchParameters
            {
                Type = new SearchFilter <byte?>
                {
                    Value      = 4,
                    FilterType = FilterType.LessThan
                }
            };

            var result = userRepository.Search(parameters);

            Assert.IsTrue(result.FilteredCount > 0);
            Assert.IsTrue(result.Records.All(x => x.Type < 4));
        }
コード例 #11
0
        public void SearchUsers_SortByUserNameDesc_ResultsSortedByUserNameDescending()
        {
            var parameters = new UserSearchParameters
            {
                LastName = new SearchFilter <string>
                {
                    SortOrder = SortOrder.Descending
                }
            };

            var result             = userRepository.Search(parameters);
            var resultLastNames    = result.Records.Select(x => x.LastName).ToList();
            var inMemoryDescSorted = resultLastNames.OrderByDescending(x => x).ToList();

            Assert.IsTrue(resultLastNames.SequenceEqual(inMemoryDescSorted));
        }
コード例 #12
0
        public async Task <ActionResult> LoadUserData(UserSearchParameters searchParam)
        {
            var draw   = Request.Form.GetValues("draw") == null ? "1" : Request.Form.GetValues("draw").FirstOrDefault();
            var start  = Request.Form.GetValues("start") == null ? "0" : Request.Form.GetValues("start").FirstOrDefault();
            var length = Request.Form.GetValues("length") == null ? "10" : Request.Form.GetValues("length").FirstOrDefault();
            //Find Order Column

            var sortColumn    = Request.Form.GetValues("order[0][column]") == null ? "" : Request.Form.GetValues("columns[" + Request.Form.GetValues("order[0][column]").FirstOrDefault() + "][name]").FirstOrDefault();
            var sortColumnDir = Request.Form.GetValues("order[0][dir]") == null ? "asc" : Request.Form.GetValues("order[0][dir]").FirstOrDefault();
            var sort          = new ReturnObject().GetSortModels((sortColumn == "" ? "Id" : sortColumn), sortColumnDir);
            int pageSize      = length != null?Convert.ToInt32(length) : 0;

            int skip = start != null?Convert.ToInt32(start) : 0;

            var parameters = new GetAllUserParameters()
            {
                UserName     = searchParam.UserName,
                OrderByValue = sort,
                PageNumber   = skip,
                PageSize     = pageSize
            };
            var returnedData = await restClientContainer.SendRequest <DataPagging>("User/GetAll", RestSharp.Method.POST, parameters);

            int recordsTotal = returnedData?.TotalPage ?? 0;
            var data         = returnedData?.Result?.Data;

            if (returnedData == null || returnedData.Result == null || data == null)
            {
                return(Json(new { draw = draw, recordsFiltered = 0, recordsTotal = 0, data = new fillGrids.UsersViewModel() }, JsonRequestBehavior.AllowGet));
            }
            string json            = JsonConvert.SerializeObject(data);
            var    jsonDeserialize = Helper <List <fillGrids.UsersViewModel> > .Convert(json);

            var listSerialized = new
            {
                draw            = draw,
                recordsFiltered = recordsTotal,
                recordsTotal    = recordsTotal,
                data            = jsonDeserialize
            };

            return(Json(listSerialized, JsonRequestBehavior.AllowGet));
        }
コード例 #13
0
        public void SearchUsers_PageSize2_OnlyTwoRecordsReturnedAndTotalRemainsSame()
        {
            var parameters = new UserSearchParameters
            {
                Page      = 1,
                PageSize  = 2,
                FirstName = new SearchFilter <string>
                {
                    SortOrder = SortOrder.Ascending
                }
            };

            var pagedResult = userRepository.Search(parameters);

            parameters = new UserSearchParameters();
            var noPageResult = userRepository.Search(parameters);

            Assert.AreEqual(pagedResult.TotalCount, noPageResult.TotalCount);
            Assert.AreNotEqual(pagedResult.Records.Count(), noPageResult.Records.Count());
        }
コード例 #14
0
        private IQueryable <User> GetFiltered(IQueryable <User> query, UserSearchParameters search)
        {
            var result = query;

            if (search == null)
            {
                return(result);
            }

            if (!string.IsNullOrEmpty(search.TechId))
            {
                result = result.Where(e => e.TechId.ToLower().Contains(search.TechId.ToLower()));
            }

            if (!string.IsNullOrEmpty(search.LastName))
            {
                result = result.Where(e => !string.IsNullOrEmpty(e.LastName) && e.LastName.ToLower().Contains(search.LastName.ToLower()));
            }

            if (!string.IsNullOrEmpty(search.FirstName))
            {
                result = result.Where(e => !string.IsNullOrEmpty(e.FirstName) && e.FirstName.ToLower().Contains(search.FirstName.ToLower()));
            }

            if (!string.IsNullOrEmpty(search.Username))
            {
                result = result.Where(e => !string.IsNullOrEmpty(e.Username) && e.Username.ToLower().Contains(search.Username.ToLower()));
            }

            if (!string.IsNullOrEmpty(search.Status))
            {
                result = result.Where(e => !string.IsNullOrEmpty(e.Status) && e.Status.ToLower().Contains(search.Status.ToLower()));
            }

            return(result);
        }
コード例 #15
0
 public List <LoggedUser> GetUsers(UserSearchParameters lp)
 {
     return(GetUsersEx(lp));
 }
コード例 #16
0
        public dynamic SearchAjax(bool?active = true, byte?userType = null, string userName = null, string firstName = null, string lastName = null, string sortBy = "UserName", int page = 0)
        {
            var appSettings = configService.GetApplicationSettings();

            var parameters = new UserSearchParameters()
            {
                Active    = new SearchFilter <bool>(FilterType.Equals),
                UserName  = new SearchFilter <string>(userName, FilterType.Like),
                FirstName = new SearchFilter <string>(firstName, FilterType.Like),
                LastName  = new SearchFilter <string>(lastName, FilterType.Like),
                Type      = new SearchFilter <byte?>(userType, FilterType.Equals),
                PageSize  = appSettings.MaxPerPage
            };

            if (active.HasValue)
            {
                parameters.Active.Value = active.Value;
            }

            if (!string.IsNullOrEmpty(sortBy))
            {
                var sortSplit = sortBy.Split(',');

                var sortOperator = sortSplit.Length == 0 || sortSplit[1] == "asc"
                    ? SortOrder.Ascending
                    : SortOrder.Descending;

                switch (sortSplit[0].ToLower())
                {
                case "2":
                    parameters.FirstName.SortOrder = sortOperator;
                    break;

                case "3":
                    parameters.LastName.SortOrder = sortOperator;
                    break;

                case "0":
                    parameters.UserName.SortOrder = sortOperator;
                    break;

                case "1":
                    parameters.Type.SortOrder = sortOperator;
                    break;
                }
            }

            var result = userRepository.Search(parameters);

            return(new
            {
                recordsTotal = result.TotalCount,
                recordsFiltered = result.FilteredCount,
                data = result.Records.Select(userRecord =>
                {
                    var row = new List <string>();

                    row.Add(userRecord.UserName);
                    row.Add(userRecord.Type != null
                        ? Enum.Parse(typeof(UserType), userRecord.Type.ToString()).ToString()
                        : "");
                    row.Add(userRecord.FirstName);
                    row.Add(userRecord.LastName);
                    row.Add(userRecord.Id.ToString());

                    return row;
                })
            });
        }
コード例 #17
0
 public SearchResult <Entities.User.User> Search(UserSearchParameters parameters)
 {
     return(DapperHelper.SearchDapper <Entities.User.User, SearchParameters, MainDatabase>(parameters, FullTableName, new MainDatabase()));
 }
コード例 #18
0
 /// <summary>
 /// Implements <see cref="BaseDataRepository{TResource}.Find(CommonClasses.BaseSearchParameters)"/>
 /// </summary>
 /// <param name="parameters"><see cref="UserSearchParameters"/></param>
 /// <returns><see cref="IEnumerable{T}"/> of <see cref="UserResource"/></returns>
 public async Task <IEnumerable <UserResource> > Find(UserSearchParameters parameters) => await base.Find(parameters);