aboutsummaryrefslogtreecommitdiffstats
path: root/services/issue/assignee.go
diff options
context:
space:
mode:
Diffstat (limited to 'services/issue/assignee.go')
-rw-r--r--services/issue/assignee.go39
1 files changed, 38 insertions, 1 deletions
diff --git a/services/issue/assignee.go b/services/issue/assignee.go
index d63c7bf032..f48e55e53c 100644
--- a/services/issue/assignee.go
+++ b/services/issue/assignee.go
@@ -52,7 +52,7 @@ func ToggleAssignee(issue *models.Issue, doer *models.User, assigneeID int64) (r
return
}
-// ReviewRequest add or remove a review for this PR, and make comment for it.
+// ReviewRequest add or remove a review request from a user for this PR, and make comment for it.
func ReviewRequest(issue *models.Issue, doer *models.User, reviewer *models.User, isAdd bool) (err error) {
var comment *models.Comment
if isAdd {
@@ -71,3 +71,40 @@ func ReviewRequest(issue *models.Issue, doer *models.User, reviewer *models.User
return nil
}
+
+// TeamReviewRequest add or remove a review request from a team for this PR, and make comment for it.
+func TeamReviewRequest(issue *models.Issue, doer *models.User, reviewer *models.Team, isAdd bool) (err error) {
+ var comment *models.Comment
+ if isAdd {
+ comment, err = models.AddTeamReviewRequest(issue, reviewer, doer)
+ } else {
+ comment, err = models.RemoveTeamReviewRequest(issue, reviewer, doer)
+ }
+
+ if err != nil {
+ return
+ }
+
+ if comment == nil || !isAdd {
+ return
+ }
+
+ // notify all user in this team
+ if err = comment.LoadIssue(); err != nil {
+ return
+ }
+
+ if err = reviewer.GetMembers(&models.SearchMembersOptions{}); err != nil {
+ return
+ }
+
+ for _, member := range reviewer.Members {
+ if member.ID == comment.Issue.PosterID {
+ continue
+ }
+ comment.AssigneeID = member.ID
+ notification.NotifyPullReviewRequest(doer, issue, member, isAdd, comment)
+ }
+
+ return nil
+}