From de8448078852976bfc8a674f53053cab0e6c3c56 Mon Sep 17 00:00:00 2001 From: rgarcia Date: Fri, 22 Apr 2016 15:01:55 +0200 Subject: [PATCH] adds admin summary page for spending proposals --- .../admin/spending_proposals_controller.rb | 4 ++++ app/helpers/spending_proposals_helper.rb | 9 +++++++++ app/models/abilities/administrator.rb | 2 +- app/models/geozone.rb | 2 ++ app/models/spending_proposal.rb | 4 ++++ app/views/admin/spending_proposals/index.html.erb | 2 ++ .../admin/spending_proposals/summary.html.erb | 15 +++++++++++++++ config/routes.rb | 2 ++ 8 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 app/views/admin/spending_proposals/summary.html.erb 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 d8ae2acf0..51ae06bf8 100644 --- a/app/models/spending_proposal.rb +++ b/app/models/spending_proposal.rb @@ -134,4 +134,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..86dad6bbd 100644 --- a/app/views/admin/spending_proposals/index.html.erb +++ b/app/views/admin/spending_proposals/index.html.erb @@ -36,6 +36,8 @@ <%= render 'shared/filter_subnav', i18n_namespace: "admin.spending_proposals.index" %> +<%= link_to t("admin.spending_proposals.index.summary_link"), + summary_admin_spending_proposals_path %>

<%= page_entries_info @spending_proposals %>

diff --git a/app/views/admin/spending_proposals/summary.html.erb b/app/views/admin/spending_proposals/summary.html.erb new file mode 100644 index 000000000..825b30983 --- /dev/null +++ b/app/views/admin/spending_proposals/summary.html.erb @@ -0,0 +1,15 @@ +

<%= t("admin.spending_proposals.summary.title") %>

+ + + + + + + <% @spending_proposals.each do |geozone, price| %> + + + + + + <% end %> +
<%= t("admin.spending_proposals.summary.geozone_name") %><%= t("admin.spending_proposals.summary.count_for_geozone") %><%= t("admin.spending_proposals.summary.cost_for_geozone") %>
<%= geozone.present? ? geozone.name : t("geozones.none") %><%= spending_proposal_count_for_geozone(geozone) %><%= number_to_currency(price) %>
\ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index dd4281788..43b8b5219 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -135,6 +135,8 @@ Rails.application.routes.draw do patch :assign_admin patch :assign_valuators end + + get :summary, on: :collection end resources :comments, only: :index do