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" %> +

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

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") %>

+ + + + + + + + + + + <% @valuators.each do |valuator| %> + + + + + + + + + + <% end %> +
<%= 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") %>
+ <%= 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)) %> +
\ 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