From 3a7f48306c355e761fee7514f5cbf1a3638e8269 Mon Sep 17 00:00:00 2001 From: Marcos Ronaldo Date: Tue, 19 Apr 2016 15:23:18 -0300 Subject: [PATCH] Transforms filter methods into scopes --- app/controllers/my_profile/tasks_controller.rb | 29 ++++++++++------------------- app/models/task.rb | 15 +++++++++++++++ 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/app/controllers/my_profile/tasks_controller.rb b/app/controllers/my_profile/tasks_controller.rb index 22398a6..9b1bac5 100644 --- a/app/controllers/my_profile/tasks_controller.rb +++ b/app/controllers/my_profile/tasks_controller.rb @@ -108,30 +108,21 @@ class TasksController < MyProfileController protected - def filter_by_closed_date(filter, tasks) - filter[:closed_from] = Date.parse(filter[:closed_from]) unless filter[:closed_from].blank? - filter[:closed_until] = Date.parse(filter[:closed_until]) unless filter[:closed_until].blank? - - tasks = tasks.where('tasks.end_date >= ?', filter[:closed_from].beginning_of_day) unless filter[:closed_from].blank? - tasks = tasks.where('tasks.end_date <= ?', filter[:closed_until].end_of_day) unless filter[:closed_until].blank? - tasks - end + def filter_tasks(filter, tasks) + tasks = tasks.eager_load(:requestor, :closed_by) + tasks = tasks.of(filter[:type].presence) + tasks = tasks.where(:status => filter[:status]) unless filter[:status].blank? - def filter_by_creation_date(filter, tasks) filter[:created_from] = Date.parse(filter[:created_from]) unless filter[:created_from].blank? filter[:created_until] = Date.parse(filter[:created_until]) unless filter[:created_until].blank? + filter[:closed_from] = Date.parse(filter[:closed_from]) unless filter[:closed_from].blank? + filter[:closed_until] = Date.parse(filter[:closed_until]) unless filter[:closed_until].blank? - tasks = tasks.where('tasks.created_at >= ?', filter[:created_from].beginning_of_day) unless filter[:created_from].blank? - tasks = tasks.where('tasks.created_at <= ?', filter[:created_until].end_of_day) unless filter[:created_until].blank? - tasks - end + tasks = tasks.from_creation_date filter[:created_from] unless filter[:created_from].blank? + tasks = tasks.until_creation_date filter[:created_until] unless filter[:created_until].blank? - def filter_tasks(filter, tasks) - tasks = tasks.eager_load(:requestor, :closed_by) - tasks = tasks.of(filter[:type].presence) - tasks = tasks.where(:status => filter[:status]) unless filter[:status].blank? - tasks = filter_by_creation_date(filter, tasks) - tasks = filter_by_closed_date(filter, tasks) + tasks = tasks.from_closed_date filter[:closed_from] unless filter[:closed_from].blank? + tasks = tasks.until_closed_date filter[:closed_until] unless filter[:closed_until].blank? tasks = tasks.where('profiles.name LIKE ?', filter[:requestor]) unless filter[:requestor].blank? tasks = tasks.where('closed_bies_tasks.name LIKE ?', filter[:closed_by]) unless filter[:closed_by].blank? diff --git a/app/models/task.rb b/app/models/task.rb index 2477704..d290d5b 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -324,6 +324,21 @@ class Task < ActiveRecord::Base where [environment_condition, profile_condition].compact.join(' OR ') } + scope :from_closed_date, -> closed_from { + where('tasks.end_date >= ?', closed_from.beginning_of_day) unless closed_from.blank? + } + + scope :until_closed_date, -> closed_until { + where('tasks.end_date <= ?', closed_until.end_of_day) unless closed_until.blank? + } + + scope :from_creation_date, -> created_from { + where('tasks.created_at >= ?', created_from.beginning_of_day) unless created_from.blank? + } + + scope :until_creation_date, -> created_until { + where('tasks.created_at <= ?', created_until.end_of_day) unless created_until.blank? + } def self.pending_types_for(profile) Task.to(profile).pending.select('distinct type').map { |t| [t.class.name, t.title] } -- libgit2 0.21.2