Example #1
0
        public async Task <ListResponse <UserListGetResponse> > GetList(UserListGetRequest dto)
        {
            var query = DbSession.Query <UserIndexedForList, Users_ForList>();

            query = ApplySearch(query, dto.Search);

            var totalRecords = await query.CountAsync();

            query = ApplySorting(query, dto);
            query = query.Skip(dto.PageIndex * dto.PageSize).Take(dto.PageSize);

            var ret = await(from u in query
                            select new UserListGetResponse
            {
                Id               = u.Id,
                FirstName        = u.FirstName,
                LastName         = u.LastName,
                NameWithInitials = u.NameWithInitials,
                Email            = u.Email,
                RegistrationDate = u.RegistrationDate
            }
                            ).ToListAsync();

            return(new ListResponse <UserListGetResponse>(ret, totalRecords, dto.PageIndex, dto.PageSize));
        }
Example #2
0
        private IRavenQueryable <UserIndexedForList> ApplySorting(IRavenQueryable <UserIndexedForList> query, UserListGetRequest dto)
        {
            if (dto.OrderBy == UsersOrderColumns.Default)
            {
                if (IsSearchResult)
                {
                    return(query);                      // Use default order by relevance. Otherwise descending sort by number
                }
                dto.OrderBy        = UsersOrderColumns.Name;
                dto.OrderDirection = OrderDirections.Asc;
            }

            return(dto.OrderBy switch
            {
                UsersOrderColumns.Name => dto.OrderDirection == OrderDirections.Asc ? query.OrderBy(t => t.FullName)                   : query.OrderByDescending(t => t.FullName),
                UsersOrderColumns.Email => dto.OrderDirection == OrderDirections.Asc ? query.OrderBy(t => t.Email)                              : query.OrderByDescending(t => t.Email),
                UsersOrderColumns.RegistrationDate => dto.OrderDirection == OrderDirections.Asc ? query.OrderBy(t => t.RegistrationDate)   : query.OrderByDescending(t => t.RegistrationDate),
                _ => throw new NotImplementedException()
            });
Example #3
0
 public Task <ListResponse <UserListGetResponse> > GetList([FromServices] IUserQueryService service,
                                                           [FromQuery] UserListGetRequest dto
                                                           )
 => service.GetList(dto);