summaryrefslogtreecommitdiff
path: root/app/contexts
diff options
context:
space:
mode:
Diffstat (limited to 'app/contexts')
-rw-r--r--app/contexts/filter_context.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/app/contexts/filter_context.rb b/app/contexts/filter_context.rb
new file mode 100644
index 00000000000..401d19b31c8
--- /dev/null
+++ b/app/contexts/filter_context.rb
@@ -0,0 +1,31 @@
+class FilterContext
+ attr_accessor :items, :params
+
+ def initialize(items, params)
+ @items = items
+ @params = params
+ end
+
+ def execute
+ apply_filter(items)
+ end
+
+ def apply_filter items
+ if params[:project_id]
+ items = items.where(project_id: params[:project_id])
+ end
+
+ if params[:search].present?
+ items = items.search(params[:search])
+ end
+
+ case params[:status]
+ when 'closed'
+ items.closed
+ when 'all'
+ items
+ else
+ items.opened
+ end
+ end
+end