示例#1
0
        public async Task <QueryResult <UserViewModel> > GetUsersViewAsync(ApplicationUserQuery queryObj)
        {
            var result = new QueryResult <UserViewModel>();

            var query = (from u in context.Users
                         join uc in context.UserClaims on u.Id equals uc.UserId
                         where uc.ClaimType.Equals(Policies.RoleClaimTypeValue)
                         select new UserViewModel
            {
                Id = u.Id,
                FirstName = u.FirstName,
                LastName = u.LastName,
                IdentificationCard = u.IdentificationCard,
                UserName = u.UserName,
                Email = u.Email,
                Role = uc.ClaimValue,
                IsActive = u.IsActive
            }).AsQueryable();

            query = query.ApplyFiltering(queryObj);

            var columnsMap = new Dictionary <string, Expression <Func <UserViewModel, object> > >()
            {
                ["firstName"]          = u => u.FirstName,
                ["lastName"]           = u => u.LastName,
                ["identificationCard"] = u => u.IdentificationCard,
                ["userName"]           = u => u.UserName,
                ["email"] = u => u.Email
            };

            query = query.ApplyOrdering(queryObj, columnsMap);

            result.TotalItems = await query.CountAsync();

            query        = query.ApplyPaging(queryObj);
            result.Items = await query.ToListAsync();

            return(result);
        }
        public static IEnumerable<ApplicationUserViewModel> GetUsersInRole(
            this IUrfIdentityRepositoryAsync<ApplicationUser> repository,
            Guid roleId)
        {
            var query = new ApplicationUserQuery().SelectByRole(roleId);

            return repository
                .Query(query)
                .OrderBy(
                    u =>
                        u.OrderBy(x => x.UserDetails.LastName)
                            .ThenBy(x => x.UserDetails.FirstName))
                .Select(
                    u =>
                        new ApplicationUserViewModel
                        {
                            UserId = u.Id,
                            Email = u.Email,
                            FirstName = u.UserDetails.FirstName,
                            LastName = u.UserDetails.LastName
                        });
        }
示例#3
0
        GetUsersInRole(
            this IUrfIdentityRepositoryAsync <ApplicationUser> repository,
            Guid roleId)
        {
            var query = new ApplicationUserQuery().SelectByRole(roleId);

            return(repository
                   .Query(query)
                   .OrderBy(
                       u =>
                       u.OrderBy(x => x.UserDetails.LastName)
                       .ThenBy(x => x.UserDetails.FirstName))
                   .Select(
                       u =>
                       new ApplicationUserViewModel
            {
                UserId = u.Id,
                Email = u.Email,
                FirstName = u.UserDetails.FirstName,
                LastName = u.UserDetails.LastName
            }));
        }
示例#4
0
 public async Task <QueryResult <UserViewModel> > GetUsersViewAsync(ApplicationUserQuery queryObj)
 {
     return(await unitOfWork.UserRepository.GetUsersViewAsync(queryObj));
 }
示例#5
0
        public static IQueryable <UserViewModel> ApplyFiltering(this IQueryable <UserViewModel> query, ApplicationUserQuery queryObj)
        {
            if (!string.IsNullOrEmpty(queryObj.FirstName))
            {
                query = query.Where(c => c.FirstName.Contains(queryObj.FirstName.Trim()));
            }

            if (!string.IsNullOrEmpty(queryObj.LastName))
            {
                query = query.Where(c => c.LastName.Contains(queryObj.LastName.Trim()));
            }

            if (!string.IsNullOrEmpty(queryObj.IdentificationCard))
            {
                query = query.Where(c => c.IdentificationCard.Contains(queryObj.IdentificationCard.Trim()));
            }

            if (!string.IsNullOrEmpty(queryObj.UserName))
            {
                query = query.Where(c => c.UserName.Contains(queryObj.UserName.Trim()));
            }

            if (!string.IsNullOrEmpty(queryObj.Email))
            {
                query = query.Where(c => c.Email.Contains(queryObj.Email.Trim()));
            }

            if (!string.IsNullOrEmpty(queryObj.Role))
            {
                query = query.Where(c => c.Role.Contains(queryObj.Role.Trim()));
            }

            return(query);
        }