From aba6ea20ef840a62351dd1bac1df983d97c49983 Mon Sep 17 00:00:00 2001 From: Christoph Matthies Date: Tue, 10 Jan 2017 12:33:52 +0100 Subject: [PATCH] Refactor(dashboard_controller): Move dismissed time sheet logic into model. Adresses https://github.com/hpi-swt2/wimi-portal/commit/3587d02b66e849919bcd51d2f60176f877580547#commitcomment-20407344 --- app/controllers/dashboard_controller.rb | 15 +++------------ app/models/dismissed_missing_timesheet.rb | 10 ++++++++++ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index 3db03aaf..c1d6f12e 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -1,20 +1,11 @@ class DashboardController < ApplicationController def index - result = current_user.create_notification_arrays - - @activities = result[0] - @notifications = result[1] + @activities, @notifications = current_user.create_notification_arrays @ending_contracts = Contract.ends_soon.accessible_by(current_ability, :show) @ending_contracts.sort {|a,b| a.end_date <=> b.end_date } - @missing_timesheets = Contract.accessible_by(current_ability, :show) - @missing_timesheets = @missing_timesheets.collect do |contract| - mt = contract.missing_timesheets - dismissed = DismissedMissingTimesheet.dates_for(current_user, contract) - mt = mt.select{|date| !dismissed.include?(date)} - mt != [] ? [mt,contract] : nil - end - @missing_timesheets.compact! + contracts = Contract.accessible_by(current_ability, :show) + @missing_timesheets = DismissedMissingTimesheet.missing_for(current_user, contracts) end end \ No newline at end of file diff --git a/app/models/dismissed_missing_timesheet.rb b/app/models/dismissed_missing_timesheet.rb index e57975e1..b8061d76 100644 --- a/app/models/dismissed_missing_timesheet.rb +++ b/app/models/dismissed_missing_timesheet.rb @@ -6,4 +6,14 @@ class DismissedMissingTimesheet < ActiveRecord::Base belongs_to :contract validates :user, :contract, presence: true + + def self.missing_for(user, contracts) + missing_ts = contracts.collect do |contract| + missing = contract.missing_timesheets + dismissed = self.dates_for(user, contract) + missing = missing.select{|date| !dismissed.include?(date)} + missing != [] ? [missing, contract] : nil + end + return missing_ts.compact + end end