Esempio n. 1
0
        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
            }));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }