diff --git a/app/controllers/management/spending_proposals_controller.rb b/app/controllers/management/spending_proposals_controller.rb
new file mode 100644
index 000000000..3a17d86b1
--- /dev/null
+++ b/app/controllers/management/spending_proposals_controller.rb
@@ -0,0 +1,40 @@
+class Management::SpendingProposalsController < Management::BaseController
+
+ before_action :check_verified_user
+
+ def new
+ @spending_proposal = SpendingProposal.new
+ end
+
+ def create
+ @spending_proposal = SpendingProposal.new(spending_proposal_params)
+ @spending_proposal.author = managed_user
+
+ if @spending_proposal.save_with_captcha
+ redirect_to management_spending_proposal_path(@spending_proposal), notice: t('flash.actions.create.notice', resource_name: t("activerecord.models.spending_proposal", count: 1))
+ else
+ render :new
+ end
+ end
+
+ def show
+ @spending_proposal = SpendingProposal.find(params[:id])
+ end
+
+ private
+
+ def spending_proposal_params
+ params.require(:spending_proposal).permit(:title, :description, :external_url, :geozone_id, :terms_of_service, :captcha, :captcha_key)
+ end
+
+ def check_verified_user
+ unless current_user.level_two_or_three_verified?
+ redirect_to management_document_verifications_path, alert: t("management.spending_proposals.alert.unverified_user")
+ end
+ end
+
+ def current_user
+ managed_user
+ end
+
+end
diff --git a/app/views/management/spending_proposals/new.html.erb b/app/views/management/spending_proposals/new.html.erb
new file mode 100644
index 000000000..c04c81b03
--- /dev/null
+++ b/app/views/management/spending_proposals/new.html.erb
@@ -0,0 +1,10 @@
+
+
+ <%= render '/shared/print' %>
+
+
+
<%= t("management.spending_proposals.create") %>
+ <%= render "spending_proposals/form", form_url: management_spending_proposals_url %>
+
+
+
diff --git a/app/views/management/spending_proposals/show.html.erb b/app/views/management/spending_proposals/show.html.erb
new file mode 100644
index 000000000..babe5cf2e
--- /dev/null
+++ b/app/views/management/spending_proposals/show.html.erb
@@ -0,0 +1,3 @@
+<%= render '/shared/print' %>
+
+<%= render template: 'spending_proposals/show' %>
\ No newline at end of file
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 0e31c1261..f29d4e781 100755
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -400,7 +400,7 @@ en:
unauthorized:
default: You do not have permission to access this page.
manage:
- all: You do not have permission to carry out the action '%{action}' on %{subject}.
+ all: "You do not have permission to carry out the action '%{action}' on %{subject}."
users:
show:
deleted: Deleted
diff --git a/config/locales/es.yml b/config/locales/es.yml
index cbd7c5789..4c5a3b675 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -86,7 +86,7 @@ es:
debate_title: Título del debate
tags_instructions: Etiqueta este debate. Puedes elegir entre nuestras propuestas o introducir las que desees.
tags_label: Temas
- tags_placeholder: Escribe las etiquetas que desees separadas por coma (',')
+ tags_placeholder: "Escribe las etiquetas que desees separadas por coma (',')"
index:
featured_debates: Destacados
filter_topic:
@@ -261,7 +261,7 @@ es:
proposal_video_url_note: Puedes añadir un enlace a YouTube o Vimeo
tags_instructions: Etiqueta esta propuesta. Puedes elegir entre nuestras sugerencias o introducir las que desees.
tags_label: Temas
- tags_placeholder: Escribe las etiquetas que desees separadas por una coma (',')
+ tags_placeholder: "Escribe las etiquetas que desees separadas por una coma (',')"
index:
featured_proposals: Destacadas
filter_topic:
@@ -400,7 +400,7 @@ es:
unauthorized:
default: No tienes permiso para acceder a esta página.
manage:
- all: No tienes permiso para realizar la acción '%{action}' sobre %{subject}.
+ all: "No tienes permiso para realizar la acción '%{action}' sobre %{subject}."
users:
show:
deleted: Eliminado
diff --git a/config/locales/management.en.yml b/config/locales/management.en.yml
index 7ea1dc876..7d8a9f12e 100644
--- a/config/locales/management.en.yml
+++ b/config/locales/management.en.yml
@@ -40,6 +40,7 @@ en:
create_proposal: Create proposal
print_proposals: Print proposals
support_proposals: Support proposals
+ create_spending_proposal: Create spending proposal
title: Management
users: Users
permissions:
@@ -58,6 +59,10 @@ en:
create_proposal: Create proposal
print:
print_button: Print
+ spending_proposals:
+ alert:
+ unverified_user: User is not verified
+ create: Create spending proposal
sessions:
signed_out: Signed out successfully.
signed_out_managed_user: User session signed out successfully.
diff --git a/config/locales/management.es.yml b/config/locales/management.es.yml
index c219b68f4..5c1fe68d9 100644
--- a/config/locales/management.es.yml
+++ b/config/locales/management.es.yml
@@ -40,6 +40,7 @@ es:
create_proposal: Crear propuesta
print_proposals: Imprimir propuestas
support_proposals: Apoyar propuestas
+ create_spending_proposal: Crear propuesta de gasto
title: Gestión
users: Usuarios
permissions:
@@ -58,6 +59,10 @@ es:
create_proposal: Crear propuesta
print:
print_button: Imprimir
+ spending_proposals:
+ alert:
+ unverified_user: Este usuario no está verificado
+ create: Crear propuesta de gasto
sessions:
signed_out: Has cerrado la sesión correctamente.
signed_out_managed_user: Se ha cerrado correctamente la sesión del usuario.
diff --git a/config/routes.rb b/config/routes.rb
index d0fa9f576..8228aade6 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -225,6 +225,8 @@ Rails.application.routes.draw do
get :print
end
end
+
+ resources :spending_proposals, only: [:new, :create, :show]
end
# Example of regular route:
diff --git a/spec/features/management/spending_proposals_spec.rb b/spec/features/management/spending_proposals_spec.rb
new file mode 100644
index 000000000..52ea36801
--- /dev/null
+++ b/spec/features/management/spending_proposals_spec.rb
@@ -0,0 +1,54 @@
+require 'rails_helper'
+
+feature 'Spending Proposals' do
+
+ background do
+ login_as_manager
+ end
+
+ context "Create" do
+
+ scenario 'Creating spending proposals on behalf of someone' do
+ user = create(:user, :level_two)
+ login_managed_user(user)
+
+ click_link "Create spending proposal"
+
+ within(".account-info") do
+ expect(page).to have_content "Identified as"
+ expect(page).to have_content "#{user.username}"
+ expect(page).to have_content "#{user.email}"
+ expect(page).to have_content "#{user.document_number}"
+ end
+
+ fill_in 'spending_proposal_title', with: 'Build a park in my neighborhood'
+ fill_in 'spending_proposal_description', with: 'There is no parks here...'
+ fill_in 'spending_proposal_external_url', with: 'http://moarparks.com'
+ fill_in 'spending_proposal_captcha', with: correct_captcha_text
+ check 'spending_proposal_terms_of_service'
+
+ click_button 'Create'
+
+ expect(page).to have_content 'Spending proposal created successfully.'
+
+ expect(page).to have_content 'Build a park in my neighborhood'
+ expect(page).to have_content 'There is no parks here...'
+ expect(page).to have_content 'All city'
+ expect(page).to have_content 'http://moarparks.com'
+ expect(page).to have_content user.name
+ expect(page).to have_content I18n.l(SpendingProposal.last.created_at.to_date)
+
+ expect(current_path).to eq(management_spending_proposal_path(SpendingProposal.last))
+ end
+
+ scenario "Should not allow unverified users to create spending proposals" do
+ user = create(:user)
+ login_managed_user(user)
+
+ click_link "Create spending proposal"
+
+ expect(page).to have_content "User is not verified"
+ end
+ end
+
+end
\ No newline at end of file