diff --git a/src/main/scala/app/DashboardController.scala b/src/main/scala/app/DashboardController.scala index 719ed37..a825193 100644 --- a/src/main/scala/app/DashboardController.scala +++ b/src/main/scala/app/DashboardController.scala @@ -97,7 +97,7 @@ condition, None, false), - getPullRequestCountGroupByUser(condition.state == "closed", None, None), + getAllPullRequestCountGroupByUser(condition.state == "closed", userName), userRepos.map { case (userName, repoName) => (userName, repoName, counts.find { x => x._1 == userName && x._2 == repoName }.map(_._3).getOrElse(0)) }.sortBy(_._3).reverse, diff --git a/src/main/scala/service/PullRequestService.scala b/src/main/scala/service/PullRequestService.scala index 2129d07..a329445 100644 --- a/src/main/scala/service/PullRequestService.scala +++ b/src/main/scala/service/PullRequestService.scala @@ -36,6 +36,23 @@ .list .map { x => PullRequestCount(x._1, x._2) } + def getAllPullRequestCountGroupByUser(closed: Boolean, userName: String)(implicit s: Session): List[PullRequestCount] = + PullRequests + .innerJoin(Issues).on { (t1, t2) => t1.byPrimaryKey(t2.userName, t2.repositoryName, t2.issueId) } + .innerJoin(Repositories).on { (t, t3) => t._2.byRepository(t3.userName, t3.repositoryName) } + .filter { case (t, t3) => + (t._2.closed === closed.bind) && ( + (t3.isPrivate === false.bind) || + (t3.userName === userName.bind) || + (Collaborators.filter { t4 => t4.byRepository(t3.userName, t3.repositoryName) && (t4.collaboratorName === userName.bind)} exists) + ) + } + .groupBy { case (t, t3) => t._2.openedUserName } + .map { case (userName, t) => userName -> t.length } + .sortBy(_._2 desc) + .list + .map { x => PullRequestCount(x._1, x._2) } + def createPullRequest(originUserName: String, originRepositoryName: String, issueId: Int, originBranch: String, requestUserName: String, requestRepositoryName: String, requestBranch: String, commitIdFrom: String, commitIdTo: String)(implicit s: Session): Unit =