summaryrefslogtreecommitdiff
path: root/app/models/concerns
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-17 11:32:02 -0200
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-17 11:32:02 -0200
commit9823d00e0b13224ae9e820e7d3f9fade69201e99 (patch)
tree9a37f949fdfbd560e23150b1a42ca3979fe9c51e /app/models/concerns
parent943bed68bc42d02246ddea63a25432d3aba709e7 (diff)
downloadgitlab-ce-9823d00e0b13224ae9e820e7d3f9fade69201e99.tar.gz
Add ability to see and sort on vote count from Issues and MR listssee-and-sort-on-vote-count-mr-issues
Diffstat (limited to 'app/models/concerns')
-rw-r--r--app/models/concerns/issuable.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 5136d0196a5..e5f089fb8a0 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -69,10 +69,35 @@ module Issuable
case method.to_s
when 'milestone_due_asc' then order_milestone_due_asc
when 'milestone_due_desc' then order_milestone_due_desc
+ when 'downvotes_desc' then order_downvotes_desc
+ when 'upvotes_desc' then order_upvotes_desc
else
order_by(method)
end
end
+
+ def order_downvotes_desc
+ order_votes_desc('thumbsdown')
+ end
+
+ def order_upvotes_desc
+ order_votes_desc('thumbsup')
+ end
+
+ def order_votes_desc(award_emoji_name)
+ issuable_table = self.arel_table
+ note_table = Note.arel_table
+
+ join_clause = issuable_table.join(note_table, Arel::Nodes::OuterJoin).on(
+ note_table[:noteable_id].eq(issuable_table[:id]).and(
+ note_table[:noteable_type].eq(self.name).and(
+ note_table[:is_award].eq(true).and(note_table[:note].eq(award_emoji_name))
+ )
+ )
+ ).join_sources
+
+ joins(join_clause).group(issuable_table[:id]).reorder("COUNT(notes.id) DESC")
+ end
end
def today?