Task <GrigData <CoreModels.User> > IAuthService.GetAllAsync(UserTableSettings settings) { Guard.ArgumentIsNotNull(settings, nameof(settings)); Guard.ArgumentIsNotNull(settings.PagingSettings, nameof(settings.PagingSettings)); Guard.ArgumentIsNotNull(settings.UserFilter, nameof(settings.UserFilter)); IEnumerable <IdentityUser> preselectedData = GetPreselectedData(settings); List <CoreModels.User> dtoList = GetFilteredData(preselectedData, settings); int totalCount = preselectedData.ToList().Count; // TODO: find employee with companyEmail = Login //Dictionary<string, string> employees = await _employeeRepositoryAdmin.GetAllCompanyEmailFullNameAsync(); //foreach (Crosscutting.Common.Models.User.User user in result) //{ // if (employees.ContainsKey(user.Login)) // { // user.AssignedEmployeeName = employees[user.Login]; // } //} return(Task.FromResult(new GrigData <CoreModels.User> { Data = dtoList, TotalCount = totalCount })); }
private IEnumerable <IdentityUser> GetPreselectedData(UserTableSettings settings) { IQueryable <IdentityUser> filteredBySearchKeyword = _userManager.Users.Where(x => x.UserName.Contains(settings.SearchKeyword)); if (settings.UserFilter.IsActivated.HasValue) { DateTime currentDateTime = DateTime.UtcNow; filteredBySearchKeyword = filteredBySearchKeyword.Where( x => settings.UserFilter.IsActivated.Value ? (x.LockoutEndDateUtc == null || DateTime.Compare(x.LockoutEndDateUtc.Value, currentDateTime) < 0) : (x.LockoutEndDateUtc.HasValue && DateTime.Compare(x.LockoutEndDateUtc.Value, currentDateTime) >= 0)); } List <string> roleIdList = settings.UserFilter.Roles.Select(x => x.Id).ToList(); IEnumerable <IdentityUser> filteredByRoles = filteredBySearchKeyword.ToList().Where(x => { List <string> idList = x.Roles.Select(xx => xx.RoleId).ToList(); return(roleIdList.All(roleId => idList.Contains(roleId))); }); filteredByRoles = filteredByRoles.OrderByDescending <IdentityUser, DateTime>(x => { if (x.LockoutEndDateUtc != null) { return(x.LockoutEndDateUtc.Value); } return(DateTime.Now); }) .ThenBy(x => x.UserName); return(filteredByRoles); }
private List <CoreModels.User> GetFilteredData(IEnumerable <IdentityUser> preselectedUsers, UserTableSettings settings) { int itemsPerPage = Convert.ToInt32(settings.PagingSettings.ItemsPerPage); int currentPage = Convert.ToInt32(settings.PagingSettings.CurrentPage); List <IdentityUser> users = preselectedUsers .Skip(itemsPerPage * (currentPage - 1)) .Take(itemsPerPage).ToList(); List <CoreModels.User> res = MapIdentityUserListToUserList(users, settings.UserFilter.IsActivated); return(res); }