Avis: add messagerie

This commit is contained in:
Simon Lehericey 2017-09-06 17:06:03 +02:00
parent d1540c4a68
commit 3dfd77e914
5 changed files with 57 additions and 1 deletions

View file

@ -35,14 +35,28 @@ module NewGestionnaire
redirect_to instruction_avis_path(avis)
end
def messagerie
@avis = avis
@dossier = avis.dossier
end
def create_commentaire
Commentaire.create(commentaire_params.merge(email: current_gestionnaire.email, dossier: avis.dossier))
redirect_to messagerie_avis_path(avis)
end
private
def avis
current_gestionnaire.avis.includes(dossier: [:avis]).find(params[:id])
current_gestionnaire.avis.includes(dossier: [:avis, :commentaires]).find(params[:id])
end
def avis_params
params.require(:avis).permit(:answer)
end
def commentaire_params
params.require(:commentaire).permit(:body)
end
end
end

View file

@ -9,3 +9,5 @@
= link_to 'Demande', avis_path(avis)
%li{ class: current_page?(instruction_avis_path(avis)) ? 'active' : nil }
= link_to 'Instruction', instruction_avis_path(avis)
%li{ class: current_page?(messagerie_avis_path(avis)) ? 'active' : nil }
= link_to 'Messagerie', messagerie_avis_path(avis)

View file

@ -0,0 +1,21 @@
= render partial: 'header', locals: { avis: @avis, dossier: @dossier }
.messagerie.container
%ul
- @dossier.commentaires.ordered.each do |commentaire|
%li
= render partial: 'new_gestionnaire/dossiers/commentaire_icon', locals: { commentaire: commentaire, current_gestionnaire: current_gestionnaire }
.width-100
%h2
%span.mail
= render partial: 'new_gestionnaire/dossiers/commentaire_issuer', locals: { commentaire: commentaire, current_gestionnaire: current_gestionnaire }
- if ![current_gestionnaire.email, @dossier.user.email, 'contact@tps.apientreprise.fr'].include?(commentaire.email)
%span.guest Invité
%span.date= I18n.l(commentaire.created_at.localtime, format: '%H:%M le %d/%m/%Y')
%p= sanitize(commentaire.body)
= form_for(Commentaire.new, url: commentaire_avis_path(@avis), html: { class: 'form' }) do |f|
= f.text_area :body, rows: 5, placeholder: 'Répondre ici', required: true
.send-wrapper
= f.submit 'Envoyer', class: 'button send'

View file

@ -261,6 +261,8 @@ Rails.application.routes.draw do
resources :avis, only: [:index, :show, :update] do
member do
get 'instruction'
get 'messagerie'
post 'commentaire' => 'avis#create_commentaire'
end
end
get "recherche" => "recherches#index"

View file

@ -43,6 +43,14 @@ describe NewGestionnaire::AvisController, type: :controller do
it { expect(assigns(:dossier)).to eq(dossier) }
end
describe '#messagerie' do
before { get :messagerie, { 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' } }
@ -53,4 +61,13 @@ describe NewGestionnaire::AvisController, type: :controller do
it { expect(avis_without_answer.answer).to eq('answer') }
it { expect(flash.notice).to eq('Votre réponse est enregistrée.') }
end
describe '#create_commentaire' do
before do
post :create_commentaire, { id: avis_without_answer.id, commentaire: { body: 'commentaire body' } }
end
it { expect(response).to redirect_to(messagerie_avis_path(avis_without_answer)) }
it { expect(dossier.commentaires.map(&:body)).to match(['commentaire body']) }
end
end