# app/controllers/dashboards_controller.rb class DashboardsController < ApplicationController def show @entries = current_user.entries.order(date: :desc) valid_entries = @entries.select { |e| e.date.present? } @report = valid_entries.group_by { |e| e.date.beginning_of_month } .transform_values do |entries| entries.group_by { |e| [e.praktikums_typ, e.entry_art] } .transform_values do |subset| minutes = subset.sum(&:total_minutes) { hours: minutes / 60, minutes: minutes % 60 } end end @monthly_minutes_chart_data = @report.transform_keys { |date| date.strftime("%b") } .transform_values do |groups| groups.values.sum { |data| data[:hours] * 60 + data[:minutes] } end @monthly_targets = Hash.new(1500) # z.B. 25h im Monat als Ziel → 1500min @total_minutes = @entries.sum(&:total_minutes) @last_entry = @entries.first @completed_percent = ((@total_minutes.to_f / 10000) * 100).round(1) @remaining_total = [10000 - @total_minutes, 0].max end end