Commit 3a7f48306c355e761fee7514f5cbf1a3638e8269

Authored by Marcos Pereira
1 parent be57a405

Transforms filter methods into scopes

app/controllers/my_profile/tasks_controller.rb
... ... @@ -108,30 +108,21 @@ class TasksController < MyProfileController
108 108  
109 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 116 filter[:created_from] = Date.parse(filter[:created_from]) unless filter[:created_from].blank?
122 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 127 tasks = tasks.where('profiles.name LIKE ?', filter[:requestor]) unless filter[:requestor].blank?
137 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 &lt; ActiveRecord::Base
324 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 343 def self.pending_types_for(profile)
329 344 Task.to(profile).pending.select('distinct type').map { |t| [t.class.name, t.title] }
... ...