Beispiel #1
0
 @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");
 }
Beispiel #2
0
  /**
   * 대량의 메일목록을 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));
  }