@Test public void findMemberListByProject() throws Exception { // Given // When List<ProjectUser> projectUsers = ProjectUser.findMemberListByProject(1l); // Then assertThat(projectUsers.size()).isEqualTo(2); assertThat(projectUsers.get(0).user.id).isEqualTo(2l); assertThat(projectUsers.get(0).user.loginId).isEqualTo("yobi"); assertThat(projectUsers.get(0).role.name).isEqualTo("manager"); }
/** * 대량의 메일목록을 JSON으로 반환한다. * * <p>when 사이트 관리자페이지의 대량 메일 발송시 사용 * * <p>{@code currentUser} 가 사이트관리자가 아니면 경고메세지와 함께 fobidden을 반환한다. 요청 content-type이 * application/json이 아니면 {@link Http.Status#NOT_ACCEPTABLE} 을 반환한다. {@code projects}가 null 이면 비어있는 * json객체를 반환한다. 모두에게 보내기 요청시에는 모든 사용자 목록을 json으로 반환한다. 대상이 특정 프로젝트 멤버일시에는 해당 프로젝트의 멤버를 json으로 * 반환한다. * * @return the result */ public static Result mailList() { Set<String> emails = new HashSet<>(); Map<String, String[]> projects = request().body().asFormUrlEncoded(); if (!UserApp.currentUser().isSiteManager()) { return forbidden(ErrorViews.Forbidden.render("error.auth.unauthorized.waringMessage")); } if (!request().accepts("application/json")) { return status(Http.Status.NOT_ACCEPTABLE); } if (projects == null) { return ok(toJson(new HashSet<String>())); } if (projects.containsKey("all")) { if (projects.get("all")[0].equals("true")) { for (User user : User.find.findList()) { emails.add(user.email); } } } else { for (String[] projectNames : projects.values()) { String projectName = projectNames[0]; String[] parts = projectName.split("/"); String owner = parts[0]; String name = parts[1]; Project project = Project.findByOwnerAndProjectName(owner, name); for (ProjectUser projectUser : ProjectUser.findMemberListByProject(project.id)) { Logger.debug(projectUser.user.email); emails.add(projectUser.user.email); } } } return ok(toJson(emails)); }