Commit 3a7f48306c355e761fee7514f5cbf1a3638e8269
1 parent
be57a405
Exists in
send_email_to_admins
and in
5 other branches
Transforms filter methods into scopes
Showing
2 changed files
with
25 additions
and
19 deletions
Show diff stats
app/controllers/my_profile/tasks_controller.rb
@@ -108,30 +108,21 @@ class TasksController < MyProfileController | @@ -108,30 +108,21 @@ class TasksController < MyProfileController | ||
108 | 108 | ||
109 | protected | 109 | protected |
110 | 110 | ||
111 | - def filter_by_closed_date(filter, tasks) | ||
112 | - filter[:closed_from] = Date.parse(filter[:closed_from]) unless filter[:closed_from].blank? | ||
113 | - filter[:closed_until] = Date.parse(filter[:closed_until]) unless filter[:closed_until].blank? | ||
114 | - | ||
115 | - tasks = tasks.where('tasks.end_date >= ?', filter[:closed_from].beginning_of_day) unless filter[:closed_from].blank? | ||
116 | - tasks = tasks.where('tasks.end_date <= ?', filter[:closed_until].end_of_day) unless filter[:closed_until].blank? | ||
117 | - tasks | ||
118 | - end | 111 | + def filter_tasks(filter, tasks) |
112 | + tasks = tasks.eager_load(:requestor, :closed_by) | ||
113 | + tasks = tasks.of(filter[:type].presence) | ||
114 | + tasks = tasks.where(:status => filter[:status]) unless filter[:status].blank? | ||
119 | 115 | ||
120 | - def filter_by_creation_date(filter, tasks) | ||
121 | filter[:created_from] = Date.parse(filter[:created_from]) unless filter[:created_from].blank? | 116 | filter[:created_from] = Date.parse(filter[:created_from]) unless filter[:created_from].blank? |
122 | filter[:created_until] = Date.parse(filter[:created_until]) unless filter[:created_until].blank? | 117 | filter[:created_until] = Date.parse(filter[:created_until]) unless filter[:created_until].blank? |
118 | + filter[:closed_from] = Date.parse(filter[:closed_from]) unless filter[:closed_from].blank? | ||
119 | + filter[:closed_until] = Date.parse(filter[:closed_until]) unless filter[:closed_until].blank? | ||
123 | 120 | ||
124 | - tasks = tasks.where('tasks.created_at >= ?', filter[:created_from].beginning_of_day) unless filter[:created_from].blank? | ||
125 | - tasks = tasks.where('tasks.created_at <= ?', filter[:created_until].end_of_day) unless filter[:created_until].blank? | ||
126 | - tasks | ||
127 | - end | 121 | + tasks = tasks.from_creation_date filter[:created_from] unless filter[:created_from].blank? |
122 | + tasks = tasks.until_creation_date filter[:created_until] unless filter[:created_until].blank? | ||
128 | 123 | ||
129 | - def filter_tasks(filter, tasks) | ||
130 | - tasks = tasks.eager_load(:requestor, :closed_by) | ||
131 | - tasks = tasks.of(filter[:type].presence) | ||
132 | - tasks = tasks.where(:status => filter[:status]) unless filter[:status].blank? | ||
133 | - tasks = filter_by_creation_date(filter, tasks) | ||
134 | - tasks = filter_by_closed_date(filter, tasks) | 124 | + tasks = tasks.from_closed_date filter[:closed_from] unless filter[:closed_from].blank? |
125 | + tasks = tasks.until_closed_date filter[:closed_until] unless filter[:closed_until].blank? | ||
135 | 126 | ||
136 | tasks = tasks.where('profiles.name LIKE ?', filter[:requestor]) unless filter[:requestor].blank? | 127 | tasks = tasks.where('profiles.name LIKE ?', filter[:requestor]) unless filter[:requestor].blank? |
137 | tasks = tasks.where('closed_bies_tasks.name LIKE ?', filter[:closed_by]) unless filter[:closed_by].blank? | 128 | tasks = tasks.where('closed_bies_tasks.name LIKE ?', filter[:closed_by]) unless filter[:closed_by].blank? |
app/models/task.rb
@@ -324,6 +324,21 @@ class Task < ActiveRecord::Base | @@ -324,6 +324,21 @@ class Task < ActiveRecord::Base | ||
324 | where [environment_condition, profile_condition].compact.join(' OR ') | 324 | where [environment_condition, profile_condition].compact.join(' OR ') |
325 | } | 325 | } |
326 | 326 | ||
327 | + scope :from_closed_date, -> closed_from { | ||
328 | + where('tasks.end_date >= ?', closed_from.beginning_of_day) unless closed_from.blank? | ||
329 | + } | ||
330 | + | ||
331 | + scope :until_closed_date, -> closed_until { | ||
332 | + where('tasks.end_date <= ?', closed_until.end_of_day) unless closed_until.blank? | ||
333 | + } | ||
334 | + | ||
335 | + scope :from_creation_date, -> created_from { | ||
336 | + where('tasks.created_at >= ?', created_from.beginning_of_day) unless created_from.blank? | ||
337 | + } | ||
338 | + | ||
339 | + scope :until_creation_date, -> created_until { | ||
340 | + where('tasks.created_at <= ?', created_until.end_of_day) unless created_until.blank? | ||
341 | + } | ||
327 | 342 | ||
328 | def self.pending_types_for(profile) | 343 | def self.pending_types_for(profile) |
329 | Task.to(profile).pending.select('distinct type').map { |t| [t.class.name, t.title] } | 344 | Task.to(profile).pending.select('distinct type').map { |t| [t.class.name, t.title] } |