예제 #1
0
        public async Task <PagedList <User> > GetAllUser(QueryParametersForGetAllUsers parameters)
        {
            IQueryable <User> query = _context.Users;

            if (parameters.Id != null)
            {
                query = query.Where(user => user.Id == parameters.Id);
            }
            if (parameters.Name != null)
            {
                query = query.Where(user => user.Name.ToLower().Contains(parameters.Name.ToLower()));
            }
            if (parameters.Email != null)
            {
                query = query.Where(user => user.Email.ToLower().Contains(parameters.Email.ToLower()));
            }
            if (parameters.Gender != null)
            {
                query = query.Where(user => user.Gender.ToLower() == parameters.Gender.ToLower());
            }
            if (parameters.InstitutionId != null)
            {
                query = query.Where(user => user.Id == parameters.Id);
            }
            if (parameters.CategoryId != null)
            {
                query = query.Where(user => user.CategoryId == parameters.CategoryId);
            }
            if (parameters.Role != null)
            {
                query = query.Where(user => user.Role.ToLower().Contains(parameters.Role.ToLower()));
            }
            if (parameters.MobileNumber != null)
            {
                query = query.Where(user => user.MobileNumber.Contains(parameters.MobileNumber));
            }
            if (parameters.IsPaid != null)
            {
                query = query.Where(user => user.IsPaid == parameters.IsPaid);
            }
            if (parameters.ReferrerAmbassadorId != null)
            {
                query = query.Where(user => user.ReferrerAmbassadorId == parameters.ReferrerAmbassadorId);
            }
            switch (parameters.SortOrder)
            {
            case "desc":
                query = query.OrderByDescending(on => on.Name);
                break;

            default:
                query = query.OrderBy(on => on.Name);
                break;
            }

            var users = await PagedList <User> .ToPagedList(query, parameters.PageNumber, parameters.PageSize);

            return(users);
        }
        public async Task <ActionResult <OkResponseWithPagination <User> > > GetAllUsers([FromQuery] QueryParametersForGetAllUsers parameters)
        {
            var users = await _profileRepository.GetAllUser(parameters);

            var metadata = new Pagination()
            {
                TotalCount  = users.TotalCount,
                PageSize    = users.PageSize,
                CurrentPage = users.CurrentPage,
                TotalPages  = users.TotalPages,
                HasNext     = users.HasNext,
                HasPrevious = users.HasPrevious
            };

            return(Ok(new OkResponseWithPagination <User>()
            {
                Data = users, Pagination = metadata
            }));
        }