From 4a932d4a508321561b2163d32cf41458e1368a96 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Wed, 1 Jul 2015 11:22:16 -0300 Subject: [PATCH] Refactor list of processed tasks --- app/controllers/my_profile/tasks_controller.rb | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/app/controllers/my_profile/tasks_controller.rb b/app/controllers/my_profile/tasks_controller.rb index d669ad4..0086c01 100644 --- a/app/controllers/my_profile/tasks_controller.rb +++ b/app/controllers/my_profile/tasks_controller.rb @@ -21,7 +21,7 @@ class TasksController < MyProfileController end def processed - @tasks = Task.to(profile).without_spam.closed.includes(:requestor, :closed_by).order('tasks.created_at DESC') + @tasks = Task.to(profile).without_spam.closed.order('tasks.created_at DESC') @filter = params[:filter] || {} @tasks = filter_tasks(@filter, @tasks) @tasks = @tasks.paginate(:per_page => Task.per_page, :page => params[:page]) @@ -95,20 +95,30 @@ class TasksController < MyProfileController protected - def filter_tasks(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? + 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.of(filter[:type].presence) - tasks = tasks.where(:status => filter[:status]) unless filter[:status].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_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? 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.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? + def filter_tasks(filter, tasks) + tasks = tasks.includes(: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.like('profiles.name', filter[:requestor]) unless filter[:requestor].blank? tasks = tasks.like('closed_bies_tasks.name', filter[:closed_by]) unless filter[:closed_by].blank? -- libgit2 0.21.2