public Result <PagedListResponse <UserDto> > Execute(GetUsersPagedListRequest request) { try { var response = new PagedListResponse <UserDto>(); var userRepository = Uow.GetRepository <User>(); var usersQuery = userRepository .AsQueryable() .Where(u => u.IsDeleted == false); usersQuery = ProcessRequest(request, usersQuery); response.Items = usersQuery .Include(u => u.UserRoles) .ThenInclude(ur => ur.Role) .ApplyPagedListRequest(request, response) .ToArray() .Select(UserDto.MapFromUser) .ToArray(); return(Result <PagedListResponse <UserDto> > .Ok(response)); } catch (Exception exception) { return(Result <PagedListResponse <UserDto> > .Fail(null, exception.Message)); } }
private static IQueryable <User> ProcessRequest(GetUsersPagedListRequest request, IQueryable <User> usersQuery) { if (request.HasRequestFirstName) { usersQuery = usersQuery.Where(u => u.FirstName.Trim().ToLower().Contains(request.FirstName.Trim().ToLower())); } if (request.HasRequestMiddleName) { usersQuery = usersQuery.Where(u => u.MiddleName.Trim().ToLower().Contains(request.MiddleName.Trim().ToLower())); } if (request.HasRequestSecondName) { usersQuery = usersQuery.Where(u => u.SecondName.Trim().ToLower().Contains(request.SecondName.Trim().ToLower())); } if (request.HasRequestPosition) { usersQuery = usersQuery.Where(u => u.Position.Trim().ToLower().Contains(request.Position.Trim().ToLower())); } if (request.HasRequestInn) { usersQuery = usersQuery.Where(u => u.Inn.Contains(request.Inn)); } if (request.HasRequestBirthdate) { usersQuery = usersQuery.Where(u => u.Birthdate == request.Birthdate); } if (request.HasRequestAddress) { usersQuery = usersQuery.Where(u => u.Address.Trim().ToLower().Contains(request.Address.Trim().ToLower())); } if (request.HasRequestIsActive) { usersQuery = usersQuery.Where(u => u.IsActive == request.IsActive); } if (request.HasRole) { usersQuery = usersQuery.Where(u => u.UserRoles.Any(r => r.RoleId == request.RoleId)); } return(usersQuery); }
public void GetUsersPagedList_ReturnList_Success() { var executor = GetExecutor(); var userPagedListRequest = new GetUsersPagedListRequest { Skip = 0, Take = 10 }; var users = executor.GetQuery <GetUsersPagedListQuery>().Process(c => c.Execute(userPagedListRequest)); users.Should().NotBeNull(); users.IsFailure.Should().BeFalse(users.Error); users.IsSuccess.Should().BeTrue(); users.Error.Should().BeNullOrEmpty(); users.Value.Should().NotBeNull(); users.Value.TotalCount.Should().BeGreaterThan(0); users.Value.Items.Should().NotBeNullOrEmpty(); users.Value.Items.Length.Should().BeGreaterThan(0); }
public Result <PagedListResponse <UserDto> > GetUsersPagedList([FromBody] GetUsersPagedListRequest request) { return(Executor.GetQuery <GetUsersPagedListQuery>().Process(q => q.Execute(request))); }
public async ValueTask <Result <PagedListResponse <UserDto> > > GetUsersPagedList(GetUsersPagedListRequest usersPagedListRequest) { return(await ProcessPostRequest <Result <PagedListResponse <UserDto> >, GetUsersPagedListRequest>("api/users/getUsersPagedList", usersPagedListRequest)); }