diff --git a/app/helpers/jobs_helper.rb b/app/helpers/jobs_helper.rb index 380a898..a8b21ee 100644 --- a/app/helpers/jobs_helper.rb +++ b/app/helpers/jobs_helper.rb @@ -3,10 +3,13 @@ module JobsHelper progress_bar(job.done_ratio, legend: "#{job.done_ratio}% (#{l_hours_short(job.total_time_logged)}/#{l_hours_short(job.total_time_budget)})", - class: "progress") + class: "progress") end def progress_bar_for(budget) - l_hours_short(budget.hours) + progress_bar(budget.done_ratio, + legend: "#{budget.done_ratio}% + (#{l_hours_short(budget.total_time_logged)}/#{l_hours_short(budget.hours)})", + class: "progress") end end diff --git a/app/models/job.rb b/app/models/job.rb index e9d65bb..07c33f7 100644 --- a/app/models/job.rb +++ b/app/models/job.rb @@ -35,12 +35,6 @@ class Job < ActiveRecord::Base time_budgets.sum(&:hours) end - def time_budget_for(category) - return 0 if category.nil? || time_budgets.find_by(category_id: category.id).nil? - - time_budgets.find_by(category_id: category.id).hours - end - def total_time_logged TimeEntry.where(job_id: id) .sum(:hours) diff --git a/app/models/time_budget.rb b/app/models/time_budget.rb index 05ffbf1..c6e9109 100644 --- a/app/models/time_budget.rb +++ b/app/models/time_budget.rb @@ -10,4 +10,18 @@ class TimeBudget < ActiveRecord::Base belongs_to :job belongs_to :category, class_name: "TimeBudgetCategory" + + def done_ratio + return 0 if hours.zero? + + (total_time_logged / hours * 100).to_i + end + + def total_time_logged + TimeEntry.joins(:user) + .where( + job_id: job_id, + users: { time_budget_category_id: category_id } + ).sum(:hours) + end end