Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.92 KB | None | 0 0
  1. class InsuranceReportController < ApplicationController
  2.   before_action :set_location
  3.  
  4.   def index
  5.     assets = Asset.includes(:location).includes(:asset_class)
  6.     assets = assets.where(location_id: @location.id) if @location
  7.  
  8.     sum_grouped_assets = assets.group(:asset_class_id).sum(:value)
  9.     count_grouped_assets = assets.group(:asset_class_id).count(:id)
  10.  
  11.     @classes = []
  12.     AssetClass.all.each do |klass|
  13.       sum = sum_grouped_assets.find{|x| x[0] == klass.id}
  14.       count = count_grouped_assets.find{|x| x[0] == klass.id}
  15.  
  16.       @classes << {
  17.         name: klass.name,
  18.         description: klass.description,
  19.         total_count: count ? count[1] : 0,
  20.         total_value: sum ? sum[1] : 0
  21.       }
  22.     end
  23.   end
  24.  
  25.   private
  26.     # Use callbacks to share common setup or constraints between actions.
  27.     def set_location
  28.       @location = Location.find(params[:id]) if params[:id]
  29.     end
  30.  
  31. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement