summaryrefslogtreecommitdiff
path: root/app/finders/issuable_finder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders/issuable_finder.rb')
-rw-r--r--app/finders/issuable_finder.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb
index 5eb1d3f5aac..5e08193b5cf 100644
--- a/app/finders/issuable_finder.rb
+++ b/app/finders/issuable_finder.rb
@@ -39,6 +39,7 @@ class IssuableFinder
items = by_assignee(items)
items = by_author(items)
items = by_label(items)
+ items = by_due_date(items)
sort(items)
end
@@ -112,6 +113,14 @@ class IssuableFinder
end
end
+ def due_date?
+ params[:due_date].present?
+ end
+
+ def filter_by_no_due_date?
+ due_date? && params[:due_date] == Issue::NO_DUE_DATE[1]
+ end
+
def labels?
params[:label_name].present?
end
@@ -283,6 +292,19 @@ class IssuableFinder
items.distinct
end
+ def by_due_date(items)
+ if due_date?
+ if filter_by_no_due_date?
+ items = items.no_due_date
+ else
+ items = items.has_due_date
+ # Must use issues prefix to avoid ambiguous match with Milestone#due_date
+ items = items.where("issues.due_date > ? AND issues.due_date <= ?", Date.today, params[:due_date])
+ end
+ end
+ items
+ end
+
def label_names
params[:label_name].split(',')
end