Skip to content

Commit

Permalink
[Hexlet#106] add handler in WorkspaceController
Browse files Browse the repository at this point in the history
  • Loading branch information
12oprs committed Sep 4, 2022
1 parent c488f9a commit 302ad7f
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 0 deletions.
Expand Up @@ -4,11 +4,21 @@
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import io.hexlet.typoreporter.domain.typo.*;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.data.domain.*;
import org.springframework.data.jpa.repository.*;
import org.springframework.stereotype.Repository;

import java.util.*;

import java.util.Optional;

@Repository
public interface AccountRepository extends JpaRepository<Account, Long> {

Optional<Account> findAccountByEmail(String email);

Page<Account> findPageAccountByWorkspaceName(Pageable pageable, String name);

}
2 changes: 2 additions & 0 deletions src/main/java/io/hexlet/typoreporter/web/Routers.java
Expand Up @@ -21,6 +21,8 @@ public class Routers {

public static final String DEFAULT_SORT_FIELD = "createdDate";

public static final String USERS = "/users";

@NoArgsConstructor(access = AccessLevel.PRIVATE)
public static class Workspace {

Expand Down
3 changes: 3 additions & 0 deletions src/main/java/io/hexlet/typoreporter/web/Templates.java
Expand Up @@ -17,5 +17,8 @@ public class Templates {

static final String WKS_TYPOS_TEMPLATE = WKS_TEMPLATE_DIR + "/wks-typos";

static final String WKS_USERS_TEMPLATE = WKS_TEMPLATE_DIR + "/wks-users";

static final String WKS_UPDATE_TEMPLATE = WKS_TEMPLATE_DIR + "/wks-update";

}
38 changes: 38 additions & 0 deletions src/main/java/io/hexlet/typoreporter/web/WorkspaceController.java
Expand Up @@ -4,6 +4,7 @@
import io.hexlet.typoreporter.service.dto.typo.TypoInfo;
import io.hexlet.typoreporter.service.dto.workspace.CreateWorkspace;
import io.hexlet.typoreporter.web.exception.*;
import io.hexlet.typoreporter.repository.AccountRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.tuple.Pair;
Expand Down Expand Up @@ -40,6 +41,8 @@ public class WorkspaceController {

private final WorkspaceService workspaceService;

private final AccountRepository accountRepository;

@GetMapping
public String getWorkspaceInfoPage(Model model, @PathVariable String wksName) {
var wksOptional = workspaceService.getWorkspaceInfoByName(wksName);
Expand Down Expand Up @@ -191,4 +194,39 @@ private void getLastTypoDataToModel(final Model model, final String wksName) {
model.addAttribute("lastTypoCreatedDate", createdDate);
model.addAttribute("lastTypoCreatedDateAgo", createdDate.map(new PrettyTime()::format));
}

@GetMapping(USERS)
public String getWorkspaceUsersPage(Model model,
@PathVariable String wksName,
@SortDefault(DEFAULT_SORT_FIELD) Pageable pageable) {
var wksOptional = workspaceService.getWorkspaceInfoByName(wksName);
if (wksOptional.isEmpty()) {
//TODO send error page
log.error("Workspace with name {} not found", wksName);
return REDIRECT_ROOT;
}
model.addAttribute("wksName", wksName);
model.addAttribute("wksInfo", wksOptional.get());
getStatisticDataToModel(model, wksName);
getLastTypoDataToModel(model, wksName);

var size = Optional.ofNullable(availableSizes.floor(pageable.getPageSize())).orElseGet(availableSizes::first);
var pageRequest = PageRequest.of(pageable.getPageNumber(), size, pageable.getSort());
var userPage = accountRepository.findPageAccountByWorkspaceName(pageable, wksName);


var sort = userPage.getSort()
.stream()
.findFirst()
.orElseGet(() -> asc(DEFAULT_SORT_FIELD));

model.addAttribute("userPage", userPage);
model.addAttribute("availableSizes", availableSizes);
model.addAttribute("sortProp", sort.getProperty());
model.addAttribute("sortDir", sort.getDirection());
model.addAttribute("DESC", DESC);
model.addAttribute("ASC", ASC);
return WKS_USERS_TEMPLATE;
}

}

0 comments on commit 302ad7f

Please sign in to comment.