public ActionResult ManageUsers() { var response = AsyncHelpers.RunSync <JObject>(() => ApiCall.CallApi("api/Admin/GetAllUsers", User, null, true, false, null)); SearchUserViewModel model = new SearchUserViewModel(); if (response is Error) { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Internal Server Error")); } else { model = response.GetValue("result").ToObject <SearchUserViewModel>(); } foreach (var user in model.Users) { user.StatusName = user.IsDeleted ? "Blocked" : "Active"; //if (user.ProfilePictureUrl == null || user.ProfilePictureUrl == "") // user.ProfilePictureUrl = "UserImages/Default.png"; } model.StatusOptions = Utility.GetUserStatusOptions(); model.SetSharedData(User); // model.Users = model.Users.OrderByDescending(x => x.Id).ToList(); return(View(model)); }
/// <summary> /// 添加用户 /// </summary> public async void Add() { SearchUserViewModel model = new SearchUserViewModel(); var dialog = ServiceProvider.Instance.Get <IModelDialog>("SearchUserDlg"); dialog.BindViewModel(model); var taskResult = await dialog.ShowDialog(); if (taskResult) { var modelList = model.UserModelList.Where(q => q.IsChecked.Equals(true)).ToList(); if (modelList != null) { modelList.ForEach(q => { if (CaCheUser.FirstOrDefault(t => t.Account.Equals(q.User.Account)) == null) { CaCheUser.Add(new View_GroupUser() { Account = q.User.Account, GroupCode = Group.GroupCode, UserName = q.User.UserName }); } }); } this.Query(this.SearchText); } }
/// <summary> /// <inheritdoc /> /// </summary> /// <param name="id"></param> /// <param name="model"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public virtual async Task <User> ChangePasswordAsync(int id, ChangePasswordViewModel model, CancellationToken cancellationToken = default(CancellationToken)) { #region Find user var loadUserCondition = new SearchUserViewModel(); loadUserCondition.Ids = new HashSet <int> { id }; loadUserCondition.Statuses = new HashSet <UserStatus> { UserStatus.Available }; var user = await SearchUserAsync(loadUserCondition, cancellationToken); if (user == null) { throw new ApiException(HttpMessages.AccountIsNotFound, HttpStatusCode.NotFound); } #endregion // Hash the curent password. var hashedCurrentPassword = _encryptionService.Md5Hash(model.OriginalPassword); if (!user.Password.Equals(hashedCurrentPassword, StringComparison.CurrentCultureIgnoreCase)) { throw new ApiException(HttpMessages.CurrentPasswordIsInvalid, HttpStatusCode.Forbidden); } user.Password = _encryptionService.Md5Hash(model.Password); await _unitOfWork.CommitAsync(cancellationToken); return(user); }
/// <summary> /// Search users using specific conditions. /// </summary> /// <param name="condition"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public virtual async Task <SearchResult <IList <User> > > SearchUsersAsync(SearchUserViewModel condition, CancellationToken cancellationToken = default(CancellationToken)) { var users = GetUsers(condition); // Sort by properties. if (condition.Sort != null) { users = _relationalDbService.Sort(users, condition.Sort.Direction, condition.Sort.Property); } else { users = _relationalDbService.Sort(users, SortDirection.Decending, UserSort.JoinedTime); } // Result initialization. var loadUsersResult = new SearchResult <IList <User> >(); loadUsersResult.Total = await users.CountAsync(cancellationToken); loadUsersResult.Records = await _relationalDbService.Paginate(users, condition.Pagination) .ToListAsync(cancellationToken); return(loadUsersResult); }
public async Task <IHttpActionResult> Search([FromBody] SearchUserViewModel condition) { if (condition == null) { condition = new SearchUserViewModel(); Validate(condition); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } // Ids are defined. if (condition.Ids != null) { condition.Ids = condition.Ids.Where(x => x > 0).ToHashSet(); } // Last names are defined. if (condition.LastNames != null) { condition.LastNames = condition.LastNames.Where(x => !string.IsNullOrEmpty(x)).ToHashSet(); } // First names are defined. if (condition.FirstNames != null) { condition.FirstNames = condition.FirstNames.Where(x => !string.IsNullOrEmpty(x)).ToHashSet(); } // Get request profile. var profile = _profileService.GetProfile(Request); // User is anonymous or ordinary. if (profile == null || profile.Role != UserRoles.Admin) { condition.Statuses = new HashSet <UserStatuses>(); condition.Statuses.Add(UserStatuses.Active); } else { // Statuses are defined. if (condition.Statuses != null) { condition.Statuses = condition.Statuses.Where(x => Enum.IsDefined(typeof(UserRoles), x)).ToHashSet(); } // Roles are defined. if (condition.Roles != null) { condition.Roles = condition.Roles.Where(x => Enum.IsDefined(typeof(UserRoles), x)).ToHashSet(); } } var searchResult = await _userService.GetUsersAsync(condition); return(Ok(searchResult)); }
public void RenderTheRightViewWithTheCorrectModel_SearchUserViewModelAndNoModelErrorsAndCorrectContent() { //Arrange var usersServiceMock = new Mock <IUsersService>(); var mappingServiceMock = new Mock <IMappingService>(); var controller = new UsersController(usersServiceMock.Object, mappingServiceMock.Object); string id = Guid.NewGuid().ToString(); var user = new UserViewModel() { Id = id, Username = "******", Email = "*****@*****.**", Role = "User" }; var users = new List <UserViewModel>() { user }; var searchModel = new SearchUserViewModel() { PageSize = 5, TotalRecords = users.Count, Users = users }; //Act & Assert controller.WithCallTo(x => x.Index()) .ShouldRenderView("Index") .WithModel <SearchUserViewModel>( viewModel => Assert.AreEqual(users.ToList()[0].Username, searchModel.Users.ToList()[0].Username)) .AndNoModelErrors(); }
public JsonResult Search(SearchUserViewModel model) { JSonResult objResult = new JSonResult(); try { BE.MUser MUser = new BE.MUser(); List <BE.MUser> MUsers = new List <BE.MUser>(); MUser.User = Extension.ToEmpty(model.User).Trim(); MUser.Name = Extension.ToEmpty(model.UserName).Trim(); MUsers = new WebApiUser().GetUsers(MUser); objResult.data = MUsers; } catch (Exception ex) { objResult.data = null; objResult.isError = true; objResult.message = string.Format(MessageResource.ControllerGetExceptionMessage, "User"); } return(Json(objResult)); }
public IEnumerable <UserViewModel> SearchUsers(SearchUserViewModel SearchUser) { List <User> Users = DbContext.Users.Where(e => e.Email == SearchUser.Email).ToList(); IEnumerable <UserViewModel> _users = Mapper.Map <IEnumerable <UserViewModel> >(Users); return(_users); }
public void CallFriendService_GetAllUserFriendsIdsOnce_WhenUserIdIsNotEmpty() { // Arrange var mockedMapperService = new Mock <IMapperService>(); var mappedUser = new SearchUserViewModel(); mockedMapperService.Setup(x => x.MapObject <SearchUserViewModel>(It.IsAny <CustomUser>())).Returns(mappedUser); var mockedImageService = new Mock <IImageService>(); mockedImageService.Setup(x => x.ByteArrayToImageUrl(It.IsAny <byte[]>())).Returns("some-url"); var mockedUserService = new Mock <IUserService>(); var user = new CustomUser() { Id = 1 }; mockedUserService.Setup(x => x.GetByIndentityId(It.IsAny <string>())).Returns(user); var mockedFriendService = new Mock <IFriendService>(); mockedFriendService.Setup(x => x.GetAllUserFriendsIds(It.IsAny <int>())).Returns(new List <int>()); var viewModelService = new ViewModelService( mockedMapperService.Object, mockedImageService.Object, mockedUserService.Object, mockedFriendService.Object); var users = new List <CustomUser>() { new CustomUser() { ProfileImage = new ProfileImage() { Content = new byte[] { 1, 2 } } }, new CustomUser() { ProfileImage = new ProfileImage() { Content = new byte[] { 1, 2 } } }, new CustomUser() { ProfileImage = new ProfileImage() { Content = new byte[] { 1, 2 } } } }; string userId = "user-xx-id"; // Act viewModelService.GetMappedSearchedUsers(users, userId); // Assert mockedFriendService.Verify(x => x.GetAllUserFriendsIds(It.Is <int>(i => i == user.Id)), Times.Once); }
/// <summary> /// Get users using specific conditions. /// </summary> /// <param name="condition"></param> /// <returns></returns> protected virtual IQueryable <User> GetUsers(SearchUserViewModel condition) { // Get all users. var users = _unitOfWork.Accounts.Search(); // Id have been defined. var ids = condition.Ids; if (ids != null && ids.Count > 0) { ids = ids.Where(x => x > 0).ToHashSet(); if (ids != null && ids.Count > 0) { users = users.Where(x => condition.Ids.Contains(x.Id)); } } // Email have been defined. var emails = condition.Emails; if (emails != null && emails.Count > 0) { emails = emails.Where(x => !string.IsNullOrEmpty(x)).ToHashSet(); if (emails != null && emails.Count > 0) { users = users.Where(x => condition.Emails.Any(y => x.Email.Contains(y))); } } // Statuses have been defined. var statuses = condition.Statuses; if (statuses != null && statuses.Count > 0) { statuses = statuses.Where(x => Enum.IsDefined(typeof(UserStatus), x)).ToHashSet(); if (statuses.Count > 0) { users = users.Where(x => condition.Statuses.Contains(x.Status)); } } // Roles have been defined. var roles = condition.Roles; if (condition.Roles != null && condition.Roles.Count > 0) { roles = roles.Where(x => Enum.IsDefined(typeof(UserRole), x)).ToHashSet(); if (roles.Count > 0) { users = users.Where(x => roles.Contains(x.Role)); } } return(users); }
public IActionResult Search(string userNameSubstr) { SearchUserViewModel model = new SearchUserViewModel { Users = userNameSubstr != String.Empty ? _messenger.GetAllUsersByUserNameSubstring(userNameSubstr) : new List <User>() }; return(View("Search", model)); }
public ActionResult Search(SearchUserViewModel model) { if (!ModelState.IsValid || String.IsNullOrEmpty(model.SearchText)) { return(RedirectToAction("Search", "Membership")); } return(RedirectToAction("Search", "Membership", new { filter = model.SearchCriteria.ToString(), searchText = model.SearchText })); }
public static SearchUserDto ToDto(this SearchUserViewModel source) { return(new SearchUserDto { FullName = source.FullName, PageNumber = source.PageNumber, PageSize = source.PageSize, PhoneNumber = source.PhoneNumber, Type = (Domain.Enumeration.UserType?)source.Type }); }
public async Task <IHttpActionResult> SearchUser([FromBody] SearchUserViewModel model) { if (model == null) { model = new SearchUserViewModel(); Validate(model); } var users = await _userDomain.SearchUserAsync(model); return(Ok(users)); }
public ActionResult Search(string filter, string searchText, int?Page) { int page = Page ?? 1; SearchUserViewModel model = new SearchUserViewModel(); try { // TODO : Better to move paging to the Manager project. // Otherwise, cache the IEnumerable<ApplicationUser> so that // the entire collection does not have to be re-queried when changing page. Result <IEnumerable <ApplicationUser> > result = new Result <IEnumerable <ApplicationUser> >(); if (String.IsNullOrEmpty(searchText) || !Enum.GetNames(typeof(SearchUserEnum)).Contains(filter)) { // Show all accounts model.SearchHeading = "Showing all accounts"; result = userService.GetAllUsers(); } else { // Filter accounts model.SearchCriteria = (SearchUserEnum)Enum.Parse(typeof(SearchUserEnum), filter); model.SearchText = searchText; model.SearchHeading = "Showing accounts with " + filter + " containing \"" + searchText + "\""; result = userService.GetUsersByFilter(model.SearchCriteria, searchText); } switch (result.Status) { case ResultEnum.Success: IEnumerable <ApplicationUser> pagedList = result.Data.ToPagedList <ApplicationUser>(page, 10); model.PagedList = pagedList; model.PagedUsers = GetPagedUsers(pagedList); return(View(model)); case ResultEnum.Fail: break; default: break; } } catch { ModelState.AddModelError("ErrorMessage", "Fail"); return(View(model)); } ModelState.AddModelError("ErrorMessage", "Fail"); return(View(model)); }
/// <summary> /// <inheritdoc /> /// </summary> /// <param name="id"></param> /// <param name="model"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public virtual async Task <User> ChangeUserStatus(int id, ChangeUserStatusViewModel model, CancellationToken cancellationToken = default(CancellationToken)) { #region Find user var loadUserCondition = new SearchUserViewModel(); loadUserCondition.Ids = new HashSet <int> { id }; var user = await SearchUserAsync(loadUserCondition, cancellationToken); if (user == null) { throw new ApiException(HttpMessages.AccountIsNotFound, HttpStatusCode.NotFound); } #endregion #region Update user status // Whether information has been changed or not. var bHasInformationChanged = false; // Status has been defined. if (model.Status != user.Status) { if (model.Status == UserStatus.Pending) { user.Status = UserStatus.Disabled; bHasInformationChanged = true; } else { user.Status = model.Status; bHasInformationChanged = true; } } //todo: Reason // Information has been changed. if (!bHasInformationChanged) { throw new NotModifiedException(); } #endregion await _unitOfWork.CommitAsync(cancellationToken); return(user); }
private IQueryable <ApplicationUser> GetUsers(SearchUserViewModel model, int pageNumber, int usersPageSize = UsersPageSize) { return(this.Data.Users.All() .Where(u => !model.UserLevelId.HasValue || u.UserLevelId == model.UserLevelId) .Where(u => model.Gender == 0 || u.Gender == model.Gender) .Where(u => model.Country == null || u.Addresses.Any(a => a.Country == model.Country)) .Where(u => model.Town == null || u.Addresses.Any(a => a.Town == model.Town)) .Where(u => model.State == null || u.Addresses.Any(a => a.State == model.State)) .Where(u => u.Id != this.UserId) .OrderBy(u => u.Id) .Skip((pageNumber - 1) * usersPageSize) .Take(usersPageSize)); }
public void CallImageService_ByteArrayToImageUrlUsersCountTimes() { // Arrange var mockedMapperService = new Mock <IMapperService>(); var mappedUser = new SearchUserViewModel(); mockedMapperService.Setup(x => x.MapObject <SearchUserViewModel>(It.IsAny <CustomUser>())).Returns(mappedUser); var mockedImageService = new Mock <IImageService>(); mockedImageService.Setup(x => x.ByteArrayToImageUrl(It.IsAny <byte[]>())).Returns("some-url"); var mockedUserService = new Mock <IUserService>(); var mockedFriendService = new Mock <IFriendService>(); var viewModelService = new ViewModelService( mockedMapperService.Object, mockedImageService.Object, mockedUserService.Object, mockedFriendService.Object); var users = new List <CustomUser>() { new CustomUser() { ProfileImage = new ProfileImage() { Content = new byte[] { 1, 2 } } }, new CustomUser() { ProfileImage = new ProfileImage() { Content = new byte[] { 1, 2 } } }, new CustomUser() { ProfileImage = new ProfileImage() { Content = new byte[] { 1, 2 } } } }; // Act viewModelService.GetMappedSearchedUsers(users, string.Empty); // Assert mockedImageService.Verify(x => x.ByteArrayToImageUrl(It.IsAny <byte[]>()), Times.Exactly(users.Count)); }
/// <summary> /// <inheritdoc /> /// </summary> /// <param name="id"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task DeleteUserAsync(int id, CancellationToken cancellationToken = default(CancellationToken)) { // Find users. var loadUserCondition = new SearchUserViewModel(); loadUserCondition.Ids = new HashSet <int>(); loadUserCondition.Ids.Add(id); var user = await GetUserAsync(loadUserCondition, cancellationToken); if (user == null) { throw new Exception(HttpMessages.UserNotFound); } user.Status = UserStatuses.Disabled; await _unitOfWork.CommitAsync(); }
/// <summary> /// <inheritdoc /> /// </summary> /// <param name="id"></param> /// <param name="model"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public virtual async Task <User> EditUserAsync(int id, EditUserViewModel model, CancellationToken cancellationToken = default(CancellationToken)) { //Find user var loadUserCondition = new SearchUserViewModel(); loadUserCondition.Ids = new HashSet <int>(); loadUserCondition.Ids.Add(id); var user = await GetUserAsync(loadUserCondition, cancellationToken); if (user == null) { throw new Exception(HttpMessages.UserNotFound); } if (!string.IsNullOrEmpty(model.FirstName)) { user.FirstName = model.FirstName; } if (!string.IsNullOrEmpty(model.LastName)) { user.LastName = model.LastName; } if (model.Birthday != null) { user.Birthday = model.Birthday.Value; } // Photo is defined. Save photo to path. if (model.Photo != null) { var relativeProfileImagePath = await _fileService.AddFileToDirectory(model.Photo.Buffer, _appPath.ProfileImage, null, CancellationToken.None); user.Photo = _urlHelper.Content(relativeProfileImagePath); } //Save to database await _unitOfWork.CommitAsync(); return(user); }
public ActionResult ManageUser(SearchUserViewModel model) { BreadCrumb.Clear(); BreadCrumb.Add(Url.Action("Index", "Home"), "Home"); BreadCrumb.Add(Url.Action("ManageUser", "Home"), "Manage User"); var pageIndex = 1; if (!string.IsNullOrEmpty(model.SearchButton) || model.Page.HasValue) { pageIndex = model.Page ?? 1; model.SearchResults = _unitOfWork.UserProfile.GetAll() .Select(u => new UserInfoListViewModel() { UserName = u.UserName, FirstName = u.FirstName, LastName = u.LastName, Email = u.Email, Phone = u.Phone }).Where(c => (c.LastName.StartsWith(model.LastName) || string.IsNullOrEmpty(model.LastName)) && (c.Email.StartsWith(model.Email) || string.IsNullOrEmpty(model.Email))) .OrderBy(o => o.LastName) .ToPagedList(pageIndex, 15); } else { model.SearchResults = _unitOfWork.UserProfile.GetAll() .Select(u => new UserInfoListViewModel() { UserName = u.UserName, FirstName = u.FirstName, LastName = u.LastName, Email = u.Email, Phone = u.Phone }).Where(c => (c.LastName.StartsWith(model.LastName) || string.IsNullOrEmpty(model.LastName)) && (c.Email.StartsWith(model.Email) || string.IsNullOrEmpty(model.Email))) .OrderBy(o => o.LastName) .ToPagedList(pageIndex, 15); } return(Request.IsAjaxRequest() ? (ActionResult)PartialView("_UserInfo", model) : View("ManageUser", "_AdsLayout1", model)); }
public async Task <IHttpActionResult> GetProfile([FromUri] int?id) { // Get profile from request. var profile = _profileService.GetProfile(Request); // No profile is found. if (id == null || id < 1) { if (profile == null) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, HttpMessages.ProfileNotFound))); } profile.Password = null; profile.AccessToken = null; return(Ok(profile)); } // Find profile. var conditions = new SearchUserViewModel(); conditions.Ids = new HashSet <int>(); conditions.Ids.Add(id.Value); if (profile.Role != UserRoles.Admin) { conditions.Statuses = new HashSet <UserStatuses>(); conditions.Statuses.Add(UserStatuses.Active); } // Find the first matched record. var user = await _userService.GetUserAsync(conditions); if (user == null) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, HttpMessages.ProfileNotFound))); } return(Ok(user)); }
public async Task <ActionResult <List <SearchUserViewModel> > > SearchForUser(string username) { List <SearchUserViewModel> userVm = new List <SearchUserViewModel>(); List <User> user = await _context.Users.Where(u => u.Username.StartsWith(username)).ToListAsync(); if (user == null) { return(BadRequest()); } foreach (User usr in user) { SearchUserViewModel vm = new SearchUserViewModel(); vm.UserId = usr.Id; vm.Username = usr.Username; userVm.Add(vm); } return(userVm); }
public IActionResult SearchUsers(string q) { if (string.IsNullOrEmpty(q)) { ViewBag.Message = "Please provide a keyword for searching"; } ViewBag.SearchQuery = q; var model= _accountClient.SerachUsers(q); var currentUserId = HttpContext.User.Identity.Name; var list = new List<SearchUserViewModel>(); foreach (var item in model) { var viewModel = new SearchUserViewModel(_accountClient); viewModel.User = item; viewModel.GetRelationship(currentUserId); list.Add(viewModel); } if(!list.Any()) ViewBag.Message = "Not found"; return View(list); }
public ActionResult Index() { var users = this.usersService.GetAllUsersWithRoles() .Select(u => new UserViewModel { Username = u.UserName, Email = u.Email, Role = u.Roles.First().RoleId.Equals("0") ? "Admin" : "User" }) .ToList(); var searchModel = new SearchUserViewModel(); if (users != null) { searchModel.Users = users; searchModel.PageSize = gridPageSize; searchModel.TotalRecords = users.Count(); } return(this.View(searchModel)); }
public ActionResult Search(SearchUserViewModel model, int?pageNumber) { var page = pageNumber.GetValueOrDefault(1); ViewBag.UserLevelId = new SelectList(this.Data.UserLevels.All().ToList(), "Id", "Level", model.UserLevelId); ViewBag.SelectedPage = page; if (ModelState.IsValid) { var currenlyLoggedUser = string.IsNullOrEmpty(this.UserId) ? 0 : 1; var users = this.GetUsers(model, page).Select(UserViewModel.FromUsers).ToList(); var usersCount = this.GetUsers(model, 1, int.MaxValue).Count(); ViewBag.UserPages = Math.Ceiling((decimal)usersCount / UsersPageSize); var searchResultViewModel = new SearchResultViewModel { SearchUserViewModel = model, UserViewModel = users }; return(View("SearchResultTennisPlayer", searchResultViewModel)); } return(View("Index", model)); }
public async Task <IActionResult> Index(SearchUserViewModel searchUserViewModel = null, int currentPage = 1, string sortOrder = null) { ViewBag.CurrentSort = sortOrder; ViewBag.SortPossibilities = new Dictionary <string, string>() { { "id", "asc" }, { "username", "asc" }, { "email", "asc" }, { "registrationdate", "asc" }, { "lastlogindate", "asc" } }; ControllerUtils.ManageSortingPossibilities(ViewBag.SortPossibilities, sortOrder); if (searchUserViewModel == null) { searchUserViewModel = new SearchUserViewModel(); } if (currentPage < 1 || currentPage > 999) { return(View(searchUserViewModel)); } UserViewModel userViewModel; const int pageSize = 10; int currentRecordIndex = (currentPage - 1) * pageSize; var userViewModels = new List <UserViewModel>(); UserCriteria userCriteria = null; if (!string.IsNullOrWhiteSpace(searchUserViewModel.UserId)) { if (userCriteria == null) { userCriteria = new UserCriteria(); } userCriteria.Id = new StringCriteria(); userCriteria.Id.StartsWithList = new List <string>() { searchUserViewModel.UserId }; } if (!string.IsNullOrWhiteSpace(searchUserViewModel.UserName)) { if (userCriteria == null) { userCriteria = new UserCriteria(); } userCriteria.UserName = new StringCriteria(); userCriteria.UserName.StartsWithList = new List <string>() { searchUserViewModel.UserName }; } ApplyUserSort(ref userCriteria, sortOrder); int totalRecords; var users = _usersService.FindUsers(out totalRecords, userCriteria, true, currentRecordIndex, pageSize); if (users != null) { ApplicationUser appUser; bool emailConfirmed; foreach (var user in users) { appUser = await _identityUserManager.FindByIdAsync(user.Id); emailConfirmed = appUser != null && appUser.EmailConfirmed; userViewModel = new UserViewModel() { Id = user.Id, Name = user.Name, Email = user.Email, RegistrationDate = user.RegistrationDate, LastLoginDate = user.LastLoginDate, Suspended = user.Suspended, EmailConfirmed = emailConfirmed }; if (user.Role != null) { userViewModel.RoleId = user.Role.Id; userViewModel.RoleName = user.Role.Name; } userViewModels.Add(userViewModel); } } ViewBag.Users = userViewModels; ViewBag.CurrentPage = currentPage; ViewBag.PageSize = pageSize; ViewBag.TotalRecords = totalRecords; //Security if (currentRecordIndex > totalRecords) { ViewBag.CurrentPage = 1; } return(View(searchUserViewModel)); }
/// <summary> /// <inheritdoc /> /// </summary> /// <param name="condition"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public virtual async Task <SearchResultViewModel <IList <User> > > GetUsersAsync(SearchUserViewModel condition, CancellationToken cancellationToken = default(CancellationToken)) { var users = FindUsers(condition); // Initialize search result. var searchResult = new SearchResultViewModel <IList <User> >(); // Count total users. searchResult.Total = await users.CountAsync(cancellationToken); // Get pagination information. var pagination = condition.Pagination; users = _dbService.Paginate(users, pagination); searchResult.Records = await users.ToListAsync(cancellationToken); return(searchResult); }
/// <summary> /// <inheritdoc /> /// </summary> /// <param name="condition"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public virtual async Task <User> GetUserAsync(SearchUserViewModel condition, CancellationToken cancellationToken = default(CancellationToken)) { return(await FindUsers(condition).FirstOrDefaultAsync(cancellationToken)); }
/// <summary> /// Search users by using specific conditions. /// </summary> /// <param name="condition"></param> /// <returns></returns> protected virtual IQueryable <User> FindUsers(SearchUserViewModel condition) { // Get list of users. var users = _unitOfWork.Users.Search(); // Ids are defined. if (condition.Ids != null) { var ids = condition.Ids.Where(c => c > 0).ToList(); if (ids.Count > 0) { users = users.Where(c => condition.Ids.Contains(c.Id)); } } // Last names are defined. if (condition.LastNames != null) { var lastNames = condition.LastNames.Where(c => !string.IsNullOrEmpty(c)).ToList(); if (lastNames.Count > 0) { users = users.Where(c => lastNames.Contains(c.LastName)); } } // First names are defined. if (condition.FirstNames != null) { var firstNames = condition.FirstNames.Where(c => !string.IsNullOrEmpty(c)).ToList(); if (firstNames.Count > 0) { users = users.Where(c => firstNames.Contains(c.FirstName)); } } // Birthday range is defined. if (condition.Birthday != null) { var birthday = condition.Birthday; if (birthday.From != null) { users = users.Where(c => c.Birthday >= birthday.From); } if (birthday.To != null) { users = users.Where(user => user.Birthday <= birthday.To); } } // Statuses are defined. if (condition.Statuses != null) { var statuses = condition.Statuses.Where(x => Enum.IsDefined(typeof(UserRoles), x)).ToList(); if (statuses.Count > 0) { users = users.Where(x => statuses.Contains(x.Status)); } } // Roles are defined. if (condition.Roles != null) { var roles = condition.Roles.Where(x => Enum.IsDefined(typeof(UserRoles), x)).ToList(); if (roles.Count > 0) { users = users.Where(x => roles.Contains(x.Role)); } } return(users); }