diff --git a/app/controllers/admin/valuators_controller.rb b/app/controllers/admin/valuators_controller.rb
index 4561e7579..2ea14d0fa 100644
--- a/app/controllers/admin/valuators_controller.rb
+++ b/app/controllers/admin/valuators_controller.rb
@@ -25,6 +25,10 @@ class Admin::ValuatorsController < Admin::BaseController
redirect_to admin_valuators_path
end
+ def summary
+ @valuators = Valuator.all
+ end
+
private
def create_params
params[:valuator][:description] = nil if params[:valuator][:description].blank?
diff --git a/app/models/abilities/administrator.rb b/app/models/abilities/administrator.rb
index f043a3c86..587b4954b 100644
--- a/app/models/abilities/administrator.rb
+++ b/app/models/abilities/administrator.rb
@@ -36,7 +36,7 @@ module Abilities
can :comment_as_administrator, [Debate, Comment, Proposal]
can [:search, :create, :index, :destroy], ::Moderator
- can [:search, :create, :index], ::Valuator
+ can [:search, :create, :index, :summary], ::Valuator
can :manage, Annotation
diff --git a/app/views/admin/spending_proposals/index.html.erb b/app/views/admin/spending_proposals/index.html.erb
index 5bbcee57f..a3337cec8 100644
--- a/app/views/admin/spending_proposals/index.html.erb
+++ b/app/views/admin/spending_proposals/index.html.erb
@@ -2,6 +2,10 @@
summary_admin_spending_proposals_path,
class: "button float-right" %>
+<%= link_to t("admin.spending_proposals.index.valuator_summary_link"),
+ summary_admin_valuators_path,
+ class: "button float-right" %>
+
diff --git a/app/views/admin/valuators/summary.html.erb b/app/views/admin/valuators/summary.html.erb
new file mode 100644
index 000000000..6de304cb1
--- /dev/null
+++ b/app/views/admin/valuators/summary.html.erb
@@ -0,0 +1,42 @@
+<%= link_to admin_spending_proposals_path, class: "back" do %>
+
+ <%= t("shared.back") %>
+<% end %>
+
+
<%= t("admin.valuators.summary.title") %>
+
+
+ | <%= t("admin.valuators.summary.valuator_name") %> |
+ <%= t("admin.valuators.summary.finished_and_feasible_count") %> |
+ <%= t("admin.valuators.summary.finished_and_unfeasible_count") %> |
+ <%= t("admin.valuators.summary.finished_count") %> |
+ <%= t("admin.valuators.summary.in_evaluation_count") %> |
+ <%= t("admin.valuators.summary.total_count") %> |
+ <%= t("admin.valuators.summary.cost") %> |
+
+ <% @valuators.each do |valuator| %>
+
+ |
+ <%= valuator.description_or_email %>
+ |
+
+ <%= valuator.spending_proposals.finished_and_feasible.count %>
+ |
+
+ <%= valuator.spending_proposals.finished_and_unfeasible.count %>
+ |
+
+ <%= valuator.spending_proposals.valuation_finished.count %>
+ |
+
+ <%= valuator.spending_proposals.valuating.count %>
+ |
+
+ <%= valuator.spending_proposals.count %>
+ |
+
+ <%= number_to_currency(valuator.spending_proposals.sum(:price)) %>
+ |
+
+ <% end %>
+
\ No newline at end of file
diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml
index 6c74574c1..15b3870d8 100755
--- a/config/locales/admin.en.yml
+++ b/config/locales/admin.en.yml
@@ -83,6 +83,15 @@ en:
email_placeholder: Search user by email
search: Search
user_not_found: User not found
+ summary:
+ title: Valuator summary for investment projects
+ valuator_name: Valuator
+ finished_and_feasible_count: Finished and feasible
+ finished_and_unfeasible_count: Finished and unfeasible
+ finished_count: Finished
+ in_evaluation_count: In evaluation
+ total_count: Total
+ cost: Cost
officials:
edit:
back: Back
@@ -170,7 +179,8 @@ en:
assigned_admin: Assigned administrator
no_admin_assigned: No admin assigned
no_valuators_assigned: No valuators assigned
- summary_link: "Summary"
+ summary_link: "Investment project summary"
+ valuator_summary_link: "Valuator summary"
feasibility:
feasible: "Feasible (%{price})"
not_feasible: "Not feasible"
diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml
index f26c10712..803073b2d 100644
--- a/config/locales/admin.es.yml
+++ b/config/locales/admin.es.yml
@@ -83,6 +83,15 @@ es:
email_placeholder: Buscar usuario por email
search: Buscar
user_not_found: Usuario no encontrado
+ summary:
+ title: Resumen de evaluación de propuestas de inversión
+ valuator_name: Evaluador
+ finished_and_feasible_count: Finalizadas viables
+ finished_and_unfeasible_count: Finalizadas inviables
+ finished_count: Finalizadas
+ in_evaluation_count: En evaluación
+ total_count: Total
+ cost: Coste total
officials:
edit:
back: Volver
@@ -170,7 +179,8 @@ es:
assigned_admin: Administrador asignado
no_admin_assigned: Sin admin asignado
no_valuators_assigned: Sin evaluador
- summary_link: "Resumen"
+ summary_link: "Resumen de propuestas"
+ valuator_summary_link: "Resumen de evaluadores"
feasibility:
feasible: "Viable (%{price})"
not_feasible: "Inviable"
@@ -203,7 +213,7 @@ es:
title_proposals_with_supports: Resumen para propuestas que han superado la fase de apoyos
geozone_name: Ámbito de ciudad
finished_and_feasible_count: Finalizadas viables
- finished_and_unfeasible_count: Finished inviables
+ finished_and_unfeasible_count: Finalizadas inviables
finished_count: Finalizadas
in_evaluation_count: En evaluación
total_count: Total
diff --git a/config/routes.rb b/config/routes.rb
index fa414c8b0..9c125664b 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -162,6 +162,7 @@ Rails.application.routes.draw do
resources :valuators, only: [:index, :create] do
get :search, on: :collection
+ get :summary, on: :collection
end
resources :verifications, controller: :verifications, only: :index do
diff --git a/spec/features/admin/spending_proposals_spec.rb b/spec/features/admin/spending_proposals_spec.rb
index caaa108ad..ab749819a 100644
--- a/spec/features/admin/spending_proposals_spec.rb
+++ b/spec/features/admin/spending_proposals_spec.rb
@@ -458,7 +458,7 @@ feature 'Admin spending proposals' do
visit admin_spending_proposals_path
- click_link "Summary"
+ click_link "Investment project summary"
expect(page).to have_content "Summary for investment projects"
@@ -493,7 +493,7 @@ feature 'Admin spending proposals' do
visit admin_spending_proposals_path
- click_link "Summary"
+ click_link "Investment project summary"
expect(page).to have_content "Summary for investment projects"
@@ -524,7 +524,7 @@ feature 'Admin spending proposals' do
visit admin_spending_proposals_path
- click_link "Summary"
+ click_link "Investment project summary"
expect(page).to have_content "Summary for investment projects"
@@ -554,7 +554,7 @@ feature 'Admin spending proposals' do
visit admin_spending_proposals_path
- click_link "Summary"
+ click_link "Investment project summary"
expect(page).to have_content "Summary for investment projects"
@@ -590,7 +590,7 @@ feature 'Admin spending proposals' do
visit admin_spending_proposals_path
- click_link "Summary"
+ click_link "Investment project summary"
expect(page).to have_content "Summary for investment projects"
@@ -627,7 +627,7 @@ feature 'Admin spending proposals' do
visit admin_spending_proposals_path
- click_link "Summary"
+ click_link "Investment project summary"
expect(page).to have_content "Summary for investment projects"
diff --git a/spec/features/valuation/spending_proposals_spec.rb b/spec/features/valuation/spending_proposals_spec.rb
index 98037607c..c028f7c7c 100644
--- a/spec/features/valuation/spending_proposals_spec.rb
+++ b/spec/features/valuation/spending_proposals_spec.rb
@@ -388,4 +388,70 @@ feature 'Valuation spending proposals' do
end
end
+ context "Summary" do
+
+ background do
+ admin = create(:administrator)
+ login_as(admin.user)
+ end
+
+ scenario "Summary table" do
+ scarlett = create(:valuator)
+ john = create(:valuator)
+
+ finished_and_feasible1 = create(:spending_proposal, valuation_finished: true, feasible: true, price: '3000000')
+ finished_and_feasible2 = create(:spending_proposal, valuation_finished: true, feasible: true, price: '7000000')
+
+ finished_and_unfeasible1 = create(:spending_proposal, valuation_finished: true, feasible: false)
+ finished_and_unfeasible2 = create(:spending_proposal, valuation_finished: true, feasible: false)
+
+ in_evaluation1 = create(:spending_proposal, feasible: true, valuation_finished: false)
+ in_evaluation2 = create(:spending_proposal, feasible: true, valuation_finished: false)
+
+
+ finished_and_feasible1.valuators << scarlett
+ finished_and_feasible2.valuators << scarlett
+
+ finished_and_unfeasible1.valuators << john
+ finished_and_unfeasible2.valuators << john
+
+ in_evaluation1.valuators << scarlett
+ in_evaluation2.valuators << john
+
+ visit admin_spending_proposals_path
+
+ click_link "Valuator Summary"
+
+ expect(page).to have_content "Valuator summary for investment projects"
+
+ within("#valuator_#{scarlett.id}") do
+ expect(page).to have_css(".finished-and-feasible-count", text: '2')
+ expect(page).to have_css(".finished-and-unfeasible-count", text: '0')
+ expect(page).to have_css(".finished-count", text: '2')
+ expect(page).to have_css(".in-evaluation-count", text: '1')
+ expect(page).to have_css(".total-count", text: '3')
+ expect(page).to have_css(".total-price", text: "$10,000,000.00")
+ end
+
+ within("#valuator_#{john.id}") do
+ expect(page).to have_css(".finished-and-feasible-count", text: '0')
+ expect(page).to have_css(".finished-and-unfeasible-count", text: '2')
+ expect(page).to have_css(".finished-count", text: '2')
+ expect(page).to have_css(".in-evaluation-count", text: '1')
+ expect(page).to have_css(".total-count", text: '3')
+ expect(page).to have_css(".total-price", text: '$0.00')
+ end
+ end
+
+ scenario "Back link" do
+ visit admin_spending_proposals_path
+
+ click_link "Valuator Summary"
+ expect(page).to have_content "Valuator summary for investment projects"
+
+ click_link "Back"
+ expect(page).to have_content "Investment projects for participatory budgeting"
+ end
+
+ end
end