Avis: instruction
This commit is contained in:
parent
a1f9f7aa75
commit
88c27479ee
6 changed files with 102 additions and 1 deletions
|
@ -2,6 +2,20 @@
|
||||||
@import "common";
|
@import "common";
|
||||||
@import "constants";
|
@import "constants";
|
||||||
|
|
||||||
|
.give-avis {
|
||||||
|
h1 {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: $default-padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avis-notice {
|
||||||
|
font-size: 12px;
|
||||||
|
color: $grey;
|
||||||
|
margin-bottom: 2 * $default-padding;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.ask-avis {
|
.ask-avis {
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
|
|
|
@ -24,10 +24,25 @@ module NewGestionnaire
|
||||||
@dossier = avis.dossier
|
@dossier = avis.dossier
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def instruction
|
||||||
|
@avis = avis
|
||||||
|
@dossier = avis.dossier
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
avis.update_attributes(avis_params)
|
||||||
|
flash.notice = 'Votre réponse est enregistrée.'
|
||||||
|
redirect_to instruction_avis_path(avis)
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def avis
|
def avis
|
||||||
current_gestionnaire.avis.includes(dossier: [:avis]).find(params[:id])
|
current_gestionnaire.avis.includes(dossier: [:avis]).find(params[:id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def avis_params
|
||||||
|
params.require(:avis).permit(:answer)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,3 +7,5 @@
|
||||||
%ul.tabs
|
%ul.tabs
|
||||||
%li{ class: current_page?(avis_path(avis)) ? 'active' : nil }
|
%li{ class: current_page?(avis_path(avis)) ? 'active' : nil }
|
||||||
= link_to 'Demande', avis_path(avis)
|
= link_to 'Demande', avis_path(avis)
|
||||||
|
%li{ class: current_page?(instruction_avis_path(avis)) ? 'active' : nil }
|
||||||
|
= link_to 'Instruction', instruction_avis_path(avis)
|
||||||
|
|
47
app/views/new_gestionnaire/avis/instruction.html.haml
Normal file
47
app/views/new_gestionnaire/avis/instruction.html.haml
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
#avis-show
|
||||||
|
= render partial: 'header', locals: { avis: @avis, dossier: @dossier }
|
||||||
|
|
||||||
|
.container
|
||||||
|
%section.give-avis
|
||||||
|
%h1 Donner votre avis
|
||||||
|
%p.avis-notice= "#{@avis.claimant.email}: #{@avis.introduction}"
|
||||||
|
|
||||||
|
= form_for @avis, url: avis_path(@avis), html: { class: 'form' } do |f|
|
||||||
|
= f.text_area :answer, rows: 3, placeholder: 'Votre avis', required: true
|
||||||
|
.send-wrapper
|
||||||
|
= f.submit 'Envoyer votre avis', class: 'button send'
|
||||||
|
|
||||||
|
%section.ask-avis
|
||||||
|
%h1 Inviter une personne à donner son avis
|
||||||
|
%p.avis-notice L'invité pourra consulter, donner un avis sur le dossier et contribuer au fil de messagerie, mais il 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'
|
||||||
|
|
||||||
|
- if @dossier.avis.present?
|
||||||
|
%section.list-avis
|
||||||
|
%h1.title
|
||||||
|
Avis des invités
|
||||||
|
%span.count= @dossier.avis.count
|
||||||
|
|
||||||
|
%ul
|
||||||
|
- @dossier.avis.each do |avis|
|
||||||
|
%li.one-avis
|
||||||
|
%h2.claimant
|
||||||
|
= (avis.claimant.email == current_gestionnaire.email) ? 'Vous' : avis.claimant.email
|
||||||
|
%span.date Demande d'avis envoyée le #{I18n.l(avis.created_at.localtime, format: '%d/%m/%y')}
|
||||||
|
%p= avis.introduction
|
||||||
|
|
||||||
|
.answer.flex.align-start
|
||||||
|
%i.bubble.avis-icon
|
||||||
|
.width-100
|
||||||
|
%h2.gestionnaire
|
||||||
|
= avis.gestionnaire.email
|
||||||
|
- if avis.answer.present?
|
||||||
|
%span.date Réponse donnée le #{I18n.l(avis.updated_at.localtime, format: '%d/%m/%y')}
|
||||||
|
- else
|
||||||
|
%span.waiting En attente de réponse
|
||||||
|
%p= avis.answer
|
|
@ -258,7 +258,11 @@ Rails.application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
resources :avis, only: [:index, :show]
|
resources :avis, only: [:index, :show, :update] do
|
||||||
|
member do
|
||||||
|
get 'instruction'
|
||||||
|
end
|
||||||
|
end
|
||||||
get "recherche" => "recherches#index"
|
get "recherche" => "recherches#index"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -34,4 +34,23 @@ describe NewGestionnaire::AvisController, type: :controller do
|
||||||
it { expect(assigns(:avis)).to eq(avis_without_answer) }
|
it { expect(assigns(:avis)).to eq(avis_without_answer) }
|
||||||
it { expect(assigns(:dossier)).to eq(dossier) }
|
it { expect(assigns(:dossier)).to eq(dossier) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#instruction' do
|
||||||
|
before { get :instruction, { id: avis_without_answer.id } }
|
||||||
|
|
||||||
|
it { expect(response).to have_http_status(:success) }
|
||||||
|
it { expect(assigns(:avis)).to eq(avis_without_answer) }
|
||||||
|
it { expect(assigns(:dossier)).to eq(dossier) }
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#update' do
|
||||||
|
before do
|
||||||
|
patch :update, { id: avis_without_answer.id, avis: { answer: 'answer' } }
|
||||||
|
avis_without_answer.reload
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(response).to redirect_to(instruction_avis_path(avis_without_answer)) }
|
||||||
|
it { expect(avis_without_answer.answer).to eq('answer') }
|
||||||
|
it { expect(flash.notice).to eq('Votre réponse est enregistrée.') }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue