gestionnaire invited on dossier for avis, can update Avis
This commit is contained in:
parent
f24e4a77d3
commit
f6359cb7aa
7 changed files with 86 additions and 1 deletions
|
@ -17,14 +17,30 @@ class Backoffice::AvisController < ApplicationController
|
|||
redirect_to backoffice_dossier_path(dossier)
|
||||
end
|
||||
|
||||
def update
|
||||
if avis.update(update_params)
|
||||
flash[:notice] = 'Merci, votre avis a été enregistré.'
|
||||
end
|
||||
|
||||
redirect_to backoffice_dossier_path(avis.dossier_id)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def dossier
|
||||
current_gestionnaire.dossiers.find(params[:dossier_id])
|
||||
end
|
||||
|
||||
def avis
|
||||
current_gestionnaire.avis.find(params[:id])
|
||||
end
|
||||
|
||||
def create_params
|
||||
params.require(:avis).permit(:email, :introduction)
|
||||
end
|
||||
|
||||
def update_params
|
||||
params.require(:avis).permit(:answer)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -4,6 +4,7 @@ class Avis < ApplicationRecord
|
|||
|
||||
scope :with_answer, -> { where.not(answer: nil) }
|
||||
scope :without_answer, -> { where(answer: nil) }
|
||||
scope :for_dossier, ->(dossier_id) { where(dossier_id: dossier_id) }
|
||||
scope :by_latest, -> { order(updated_at: :desc) }
|
||||
|
||||
def email_to_display
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
= render partial: 'dossiers/edit_avis', locals: { dossier_facade: @facade }
|
||||
|
||||
= render partial: 'dossiers/messagerie', locals: { dossier_facade: @facade }
|
||||
|
||||
- if @facade.procedure.individual_with_siret
|
||||
|
|
13
app/views/dossiers/_edit_avis.html.haml
Normal file
13
app/views/dossiers/_edit_avis.html.haml
Normal file
|
@ -0,0 +1,13 @@
|
|||
- if current_gestionnaire
|
||||
- avis_for_dossier = current_gestionnaire.avis.for_dossier(dossier_facade.dossier.id).by_latest
|
||||
- if avis_for_dossier.any?
|
||||
.panel.panel-default
|
||||
.panel-body
|
||||
%h4 Votre avis est sollicité sur le dossier :
|
||||
- avis_for_dossier.each do |avis|
|
||||
%hr
|
||||
%p= avis.introduction
|
||||
= simple_form_for avis, url: backoffice_dossier_avis_path(dossier_facade.dossier, avis) do |f|
|
||||
= f.input 'answer', label: "Votre avis"
|
||||
- submit_label = if avis.answer then "Modifier votre avis" else "Enregistrer votre avis" end
|
||||
= f.submit submit_label, class: 'btn btn-default'
|
|
@ -181,7 +181,7 @@ Rails.application.routes.draw do
|
|||
post 'reopen' => 'dossiers#reopen'
|
||||
put 'follow' => 'dossiers#follow'
|
||||
resources :commentaires, only: [:index]
|
||||
resources :avis, only: [:create]
|
||||
resources :avis, only: [:create, :update]
|
||||
end
|
||||
|
||||
namespace :dossiers do
|
||||
|
|
|
@ -32,4 +32,38 @@ describe Backoffice::AvisController, type: :controller do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#POST update' do
|
||||
let(:gestionnaire){ create(:gestionnaire) }
|
||||
let(:dossier){ create(:dossier, state: 'received') }
|
||||
let(:avis){ create(:avis, dossier: dossier, gestionnaire: gestionnaire )}
|
||||
|
||||
subject { post :update, params: { dossier_id: dossier.id, id: avis.id, avis: { answer: "Ok ce dossier est valide." } } }
|
||||
|
||||
context 'when gestionnaire is not authenticated' do
|
||||
it { is_expected.to redirect_to new_user_session_path }
|
||||
it { expect(avis.answer).to be_nil }
|
||||
end
|
||||
|
||||
context 'when gestionnaire is authenticated' do
|
||||
before do
|
||||
sign_in gestionnaire
|
||||
end
|
||||
|
||||
context 'and is invited on dossier' do
|
||||
it { is_expected.to redirect_to backoffice_dossier_path(dossier.id) }
|
||||
it do
|
||||
subject
|
||||
expect(avis.reload.answer).to eq("Ok ce dossier est valide.")
|
||||
end
|
||||
end
|
||||
|
||||
context 'but is not invited on dossier' do
|
||||
let(:gestionnaire2) { create(:gestionnaire) }
|
||||
let(:avis){ create(:avis, dossier: dossier, gestionnaire: gestionnaire2 )}
|
||||
|
||||
it { expect{ subject }.to raise_error(ActiveRecord::RecordNotFound) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -109,6 +109,25 @@ describe Backoffice::DossiersController, type: :controller do
|
|||
|
||||
it { expect(subject).to redirect_to('/backoffice') }
|
||||
end
|
||||
|
||||
describe 'he can invite somebody for avis' do
|
||||
render_views
|
||||
|
||||
it { expect(subject.body).to include("Invitez une personne externe à consulter le dossier et à vous donner un avis sur celui ci.") }
|
||||
end
|
||||
|
||||
context 'and is invited on a dossier' do
|
||||
let(:dossier_invited){ create(:dossier, procedure: create(:procedure)) }
|
||||
let!(:avis){ create(:avis, dossier: dossier_invited, gestionnaire: gestionnaire) }
|
||||
|
||||
subject { get :show, params: { id: dossier_invited.id } }
|
||||
|
||||
render_views
|
||||
|
||||
it { expect(subject.status).to eq(200) }
|
||||
it { expect(subject.body).to include("Votre avis est sollicité sur le dossier") }
|
||||
it { expect(subject.body).to_not include("Invitez une personne externe à consulter le dossier et à vous donner un avis sur celui ci.") }
|
||||
end
|
||||
end
|
||||
|
||||
context 'gestionnaire does not connected but dossier id is correct' do
|
||||
|
|
Loading…
Add table
Reference in a new issue