diff --git a/app/assets/stylesheets/admin.scss b/app/assets/stylesheets/admin.scss index 1ccd7c880..7f05b47f8 100644 --- a/app/assets/stylesheets/admin.scss +++ b/app/assets/stylesheets/admin.scss @@ -354,6 +354,18 @@ body.admin { .investment-projects-list.medium-9 { width: 100%; } + + .investment-projects-summary { + + th { + text-align: center; + width: 33%; + + &:first-child { + text-align: left; + } + } + } } .admin-content .select-geozone { diff --git a/app/controllers/admin/spending_proposals_controller.rb b/app/controllers/admin/spending_proposals_controller.rb index e7d1cc45c..bd139dc9a 100644 --- a/app/controllers/admin/spending_proposals_controller.rb +++ b/app/controllers/admin/spending_proposals_controller.rb @@ -28,6 +28,10 @@ class Admin::SpendingProposalsController < Admin::BaseController end end + def summary + @spending_proposals = SpendingProposal.for_summary.group(:geozone).sum(:price) + end + private def spending_proposal_params diff --git a/app/helpers/spending_proposals_helper.rb b/app/helpers/spending_proposals_helper.rb index ba68ad42a..030b53f8f 100644 --- a/app/helpers/spending_proposals_helper.rb +++ b/app/helpers/spending_proposals_helper.rb @@ -13,4 +13,13 @@ module SpendingProposalsHelper spending_proposal_path(spending_proposal, options) end end + + def spending_proposal_count_for_geozone(geozone) + if geozone.present? + geozone.spending_proposals.for_summary.count + else + SpendingProposal.where(geozone: nil).for_summary.count + end + end + end \ No newline at end of file diff --git a/app/models/abilities/administrator.rb b/app/models/abilities/administrator.rb index 1b440795f..ee5e963f2 100644 --- a/app/models/abilities/administrator.rb +++ b/app/models/abilities/administrator.rb @@ -37,7 +37,7 @@ module Abilities can :manage, Annotation - can [:read, :update, :destroy], SpendingProposal + can [:read, :update, :destroy, :summary], SpendingProposal end end end diff --git a/app/models/geozone.rb b/app/models/geozone.rb index ee612f355..787e2b7e2 100644 --- a/app/models/geozone.rb +++ b/app/models/geozone.rb @@ -1,7 +1,9 @@ class Geozone < ActiveRecord::Base + has_many :spending_proposals validates :name, presence: true def self.names Geozone.pluck(:name) end + end diff --git a/app/models/spending_proposal.rb b/app/models/spending_proposal.rb index eed1d21fa..d2c2be34c 100644 --- a/app/models/spending_proposal.rb +++ b/app/models/spending_proposal.rb @@ -135,4 +135,8 @@ class SpendingProposal < ActiveRecord::Base self.responsible_name = author.try(:document_number) if author.try(:document_number).present? end + def self.for_summary + valuation_finished.feasible + end + end diff --git a/app/views/admin/spending_proposals/index.html.erb b/app/views/admin/spending_proposals/index.html.erb index 1ad804c51..cd30f121d 100644 --- a/app/views/admin/spending_proposals/index.html.erb +++ b/app/views/admin/spending_proposals/index.html.erb @@ -1,4 +1,8 @@ -
| <%= t("admin.spending_proposals.summary.geozone_name") %> | +<%= t("admin.spending_proposals.summary.count_for_geozone") %> | +<%= t("admin.spending_proposals.summary.cost_for_geozone") %> | + + <% @spending_proposals.each do |geozone, price| %> +
|---|---|---|
| <%= geozone.present? ? geozone.name : t("geozones.none") %> | +<%= spending_proposal_count_for_geozone(geozone) %> | +<%= number_to_currency(price) %> | +