|
|
|
@ -31,14 +31,13 @@ class Entry < ApplicationRecord |
|
|
|
def self.total_kilometer_cost_by_year(user) |
|
|
|
yearly_distances = where(user: user) |
|
|
|
.where.not(distance_km: nil) |
|
|
|
.group("EXTRACT(YEAR FROM date)::int") |
|
|
|
.group(Arel.sql("EXTRACT(YEAR FROM date)")) |
|
|
|
.order(Arel.sql("EXTRACT(YEAR FROM date) DESC")) |
|
|
|
.sum(:distance_km) |
|
|
|
|
|
|
|
# Für jedes Jahr die Pauschale holen und multiplizieren |
|
|
|
yearly_distances.transform_keys(&:to_i).transform_values do |km_sum| |
|
|
|
year = yearly_distances.key(km_sum).to_i |
|
|
|
rate = MileageRate.find_by(year: year)&.rate_per_km || 0.42 |
|
|
|
(km_sum * rate).round(2) |
|
|
|
yearly_distances.each_with_object({}) do |(year, km_sum), result| |
|
|
|
rate = MileageRate.find_by(year: year.to_i)&.rate_per_km || 0.42 |
|
|
|
result[year.to_i] = (km_sum * rate).round(2) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
|