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)
|
redirect_to backoffice_dossier_path(dossier)
|
||||||
end
|
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
|
private
|
||||||
|
|
||||||
def dossier
|
def dossier
|
||||||
current_gestionnaire.dossiers.find(params[:dossier_id])
|
current_gestionnaire.dossiers.find(params[:dossier_id])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def avis
|
||||||
|
current_gestionnaire.avis.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
def create_params
|
def create_params
|
||||||
params.require(:avis).permit(:email, :introduction)
|
params.require(:avis).permit(:email, :introduction)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def update_params
|
||||||
|
params.require(:avis).permit(:answer)
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,6 +4,7 @@ class Avis < ApplicationRecord
|
||||||
|
|
||||||
scope :with_answer, -> { where.not(answer: nil) }
|
scope :with_answer, -> { where.not(answer: nil) }
|
||||||
scope :without_answer, -> { where(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) }
|
scope :by_latest, -> { order(updated_at: :desc) }
|
||||||
|
|
||||||
def email_to_display
|
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 }
|
= render partial: 'dossiers/messagerie', locals: { dossier_facade: @facade }
|
||||||
|
|
||||||
- if @facade.procedure.individual_with_siret
|
- 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'
|
post 'reopen' => 'dossiers#reopen'
|
||||||
put 'follow' => 'dossiers#follow'
|
put 'follow' => 'dossiers#follow'
|
||||||
resources :commentaires, only: [:index]
|
resources :commentaires, only: [:index]
|
||||||
resources :avis, only: [:create]
|
resources :avis, only: [:create, :update]
|
||||||
end
|
end
|
||||||
|
|
||||||
namespace :dossiers do
|
namespace :dossiers do
|
||||||
|
|
|
@ -32,4 +32,38 @@ describe Backoffice::AvisController, type: :controller do
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
|
@ -109,6 +109,25 @@ describe Backoffice::DossiersController, type: :controller do
|
||||||
|
|
||||||
it { expect(subject).to redirect_to('/backoffice') }
|
it { expect(subject).to redirect_to('/backoffice') }
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
context 'gestionnaire does not connected but dossier id is correct' do
|
context 'gestionnaire does not connected but dossier id is correct' do
|
||||||
|
|
Loading…
Add table
Reference in a new issue