From 47e4a9afdf5bc45fc0ab861a46355b9272c1d401 Mon Sep 17 00:00:00 2001 From: Patrick Gansterer Date: Fri, 20 Oct 2017 01:01:12 +0200 Subject: [PATCH] Show only 2 tasks of the same periodic_task_group at dashboard --- app/controllers/home_controller.rb | 2 +- app/models/task.rb | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 97525f5c..8845b1db 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -8,7 +8,7 @@ class HomeController < ApplicationController @next_tasks = Task.order(:due_date).next_assigned_tasks_for(current_user) # count tasks with no responsible person # tasks for groups the current user is not a member are ignored - @unassigned_tasks = Task.order(:due_date).unassigned_tasks_for(current_user) + @unassigned_tasks = Task.order(:due_date).next_unassigned_tasks_for(current_user) end def profile diff --git a/app/models/task.rb b/app/models/task.rb index 7f7165d6..85303bba 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -52,6 +52,16 @@ class Task < ActiveRecord::Base end end + def self.next_unassigned_tasks_for(user, max = 2) + periodic_task_group_count = {} + self.unassigned_tasks_for(user).reject do |item| + return false unless item.periodic_task_group + count = periodic_task_group_count[item.periodic_task_group] || 0 + periodic_task_group_count[item.periodic_task_group] = count + 1 + count >= max + end + end + def periodic? not periodic_task_group.nil? end @@ -59,11 +69,11 @@ class Task < ActiveRecord::Base def is_assigned?(user) self.assignments.detect {|ass| ass.user_id == user.id } end - + def is_accepted?(user) self.assignments.detect {|ass| ass.user_id == user.id && ass.accepted } end - + def enough_users_assigned? assignments.to_a.count(&:accepted) >= required_users ? true : false end