From 2923d4448bdc8c40f006f24aa593052d8f4703f3 Mon Sep 17 00:00:00 2001 From: Simon Lehericey Date: Mon, 28 Aug 2017 14:16:13 +0200 Subject: [PATCH] NewDesign: can ask a new avis --- .../new_design/dossier_instruction.scss | 4 ++++ .../new_gestionnaire/dossiers_controller.rb | 9 +++++++++ .../dossiers/instruction.html.haml | 6 ++++++ config/routes.rb | 1 + .../dossiers_controller_spec.rb | 18 ++++++++++++++++++ 5 files changed, 38 insertions(+) diff --git a/app/assets/stylesheets/new_design/dossier_instruction.scss b/app/assets/stylesheets/new_design/dossier_instruction.scss index bfa5ceb20..68edfe61c 100644 --- a/app/assets/stylesheets/new_design/dossier_instruction.scss +++ b/app/assets/stylesheets/new_design/dossier_instruction.scss @@ -14,4 +14,8 @@ color: $grey; margin-bottom: 2 * $default-padding; } + + input[type=email] { + max-width: 500px; + } } diff --git a/app/controllers/new_gestionnaire/dossiers_controller.rb b/app/controllers/new_gestionnaire/dossiers_controller.rb index 6b37461f9..af7eeaa7f 100644 --- a/app/controllers/new_gestionnaire/dossiers_controller.rb +++ b/app/controllers/new_gestionnaire/dossiers_controller.rb @@ -61,6 +61,11 @@ module NewGestionnaire render json: { lon: lon, lat: lat, zoom: zoom, dossier_id: params[:dossier_id] } end + def create_avis + Avis.create(avis_params.merge(claimant: current_gestionnaire, dossier: dossier)) + redirect_to instruction_dossier_path(dossier.procedure, dossier) + end + private def dossier @@ -70,5 +75,9 @@ module NewGestionnaire def commentaire_params params.require(:commentaire).permit(:body) end + + def avis_params + params.require(:avis).permit(:email, :introduction) + end end end diff --git a/app/views/new_gestionnaire/dossiers/instruction.html.haml b/app/views/new_gestionnaire/dossiers/instruction.html.haml index 4323c8afa..62c654281 100644 --- a/app/views/new_gestionnaire/dossiers/instruction.html.haml +++ b/app/views/new_gestionnaire/dossiers/instruction.html.haml @@ -4,3 +4,9 @@ %section %h1 Inviter une personne à donner son avis %p.avis-notice Elle pourra consulter, donner un avis sur le dossier et contribuer au fil de messagerie, mais elle ne pourra le modifier. + + = form_for Avis.new, url: avis_dossier_path(@dossier.procedure, @dossier), html: { class: 'form' } do |f| + = f.email_field :email, placeholder: 'Adresse email', required: true + = f.text_area :introduction, rows: 3, value: 'Bonjour, merci de me donner votre avis sur ce dossier.', required: true + .send-wrapper + = f.submit 'Demander un avis', class: 'button send' diff --git a/config/routes.rb b/config/routes.rb index 1b8eb1f22..ca60cdae1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -252,6 +252,7 @@ Rails.application.routes.draw do scope :carte do get 'position' end + post 'avis' => 'dossiers#create_avis' end end end diff --git a/spec/controllers/new_gestionnaire/dossiers_controller_spec.rb b/spec/controllers/new_gestionnaire/dossiers_controller_spec.rb index c1e5ac4c2..946a4e5aa 100644 --- a/spec/controllers/new_gestionnaire/dossiers_controller_spec.rb +++ b/spec/controllers/new_gestionnaire/dossiers_controller_spec.rb @@ -94,4 +94,22 @@ describe NewGestionnaire::DossiersController, type: :controller do it { expect(saved_commentaire.dossier).to eq(dossier) } it { expect(response).to redirect_to(messagerie_dossier_path(dossier.procedure, dossier)) } end + + describe "#create_avis" do + let(:saved_avis) { dossier.avis.first } + + before do + post :create_avis, params: { + procedure_id: procedure.id, + dossier_id: dossier.id, + avis: { email: 'email@a.com', introduction: 'intro' } + } + end + + it { expect(saved_avis.email).to eq('email@a.com') } + it { expect(saved_avis.introduction).to eq('intro') } + it { expect(saved_avis.dossier).to eq(dossier) } + it { expect(saved_avis.claimant).to eq(gestionnaire) } + it { expect(response).to redirect_to(instruction_dossier_path(dossier.procedure, dossier)) } + end end