Merge pull request #1043 from sgmap/fix_363_delete_dossier_next_step
Fix 363 delete dossier next step
This commit is contained in:
commit
18eef80e31
8 changed files with 22 additions and 266 deletions
|
@ -115,20 +115,25 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
|
||||||
|
|
||||||
case params[:process_action]
|
case params[:process_action]
|
||||||
when "refuse"
|
when "refuse"
|
||||||
next_step = "refuse"
|
dossier.refuse!
|
||||||
notice = "Dossier considéré comme refusé."
|
notice = "Dossier considéré comme refusé."
|
||||||
template = dossier.procedure.refused_mail_template
|
template = dossier.procedure.refused_mail_template
|
||||||
when "without_continuation"
|
when "without_continuation"
|
||||||
next_step = "without_continuation"
|
dossier.sans_suite!
|
||||||
notice = "Dossier considéré comme sans suite."
|
notice = "Dossier considéré comme sans suite."
|
||||||
template = dossier.procedure.without_continuation_mail_template
|
template = dossier.procedure.without_continuation_mail_template
|
||||||
when "close"
|
when "close"
|
||||||
next_step = "close"
|
dossier.attestation = dossier.build_attestation
|
||||||
|
dossier.accepte!
|
||||||
notice = "Dossier traité avec succès."
|
notice = "Dossier traité avec succès."
|
||||||
template = dossier.procedure.closed_mail_template
|
template = dossier.procedure.closed_mail_template
|
||||||
end
|
end
|
||||||
|
|
||||||
dossier.next_step! 'gestionnaire', next_step, motivation
|
if motivation
|
||||||
|
dossier.motivation = motivation
|
||||||
|
end
|
||||||
|
|
||||||
|
dossier.save
|
||||||
|
|
||||||
# needed to force Carrierwave to provide dossier.attestation.pdf.read
|
# needed to force Carrierwave to provide dossier.attestation.pdf.read
|
||||||
# when the Feature.remote_storage is true, otherwise pdf.read is a closed stream.
|
# when the Feature.remote_storage is true, otherwise pdf.read is a closed stream.
|
||||||
|
|
|
@ -19,11 +19,9 @@ class CommentairesController < ApplicationController
|
||||||
if is_gestionnaire?
|
if is_gestionnaire?
|
||||||
@commentaire.email = current_gestionnaire.email
|
@commentaire.email = current_gestionnaire.email
|
||||||
@commentaire.dossier = current_gestionnaire.dossiers.find_by(id: dossier_id) || current_gestionnaire.avis.find_by!(dossier_id: dossier_id).dossier
|
@commentaire.dossier = current_gestionnaire.dossiers.find_by(id: dossier_id) || current_gestionnaire.avis.find_by!(dossier_id: dossier_id).dossier
|
||||||
@commentaire.dossier.next_step! 'gestionnaire', 'comment'
|
|
||||||
else
|
else
|
||||||
@commentaire.email = current_user.email
|
@commentaire.email = current_user.email
|
||||||
@commentaire.dossier = current_user.dossiers.find_by(id: dossier_id) || current_user.invites.find_by!(dossier_id: dossier_id).dossier
|
@commentaire.dossier = current_user.dossiers.find_by(id: dossier_id) || current_user.invites.find_by!(dossier_id: dossier_id).dossier
|
||||||
@commentaire.dossier.next_step! 'user', 'comment' if current_user.email == @commentaire.dossier.user.email
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@commentaire.file = params["file"]
|
@commentaire.file = params["file"]
|
||||||
|
|
|
@ -37,7 +37,6 @@ module NewGestionnaire
|
||||||
|
|
||||||
def follow
|
def follow
|
||||||
current_gestionnaire.follow(dossier)
|
current_gestionnaire.follow(dossier)
|
||||||
dossier.next_step!('gestionnaire', 'follow')
|
|
||||||
flash.notice = 'Dossier suivi'
|
flash.notice = 'Dossier suivi'
|
||||||
redirect_back(fallback_location: procedures_url)
|
redirect_back(fallback_location: procedures_url)
|
||||||
end
|
end
|
||||||
|
@ -82,20 +81,25 @@ module NewGestionnaire
|
||||||
|
|
||||||
case params[:process_action]
|
case params[:process_action]
|
||||||
when "refuser"
|
when "refuser"
|
||||||
next_step = "refuse"
|
dossier.refuse!
|
||||||
notice = "Dossier considéré comme refusé."
|
notice = "Dossier considéré comme refusé."
|
||||||
template = procedure.refused_mail_template
|
template = procedure.refused_mail_template
|
||||||
when "classer_sans_suite"
|
when "classer_sans_suite"
|
||||||
next_step = "without_continuation"
|
dossier.sans_suite!
|
||||||
notice = "Dossier considéré comme sans suite."
|
notice = "Dossier considéré comme sans suite."
|
||||||
template = procedure.without_continuation_mail_template
|
template = procedure.without_continuation_mail_template
|
||||||
when "accepter"
|
when "accepter"
|
||||||
next_step = "close"
|
dossier.attestation = dossier.build_attestation
|
||||||
|
dossier.accepte!
|
||||||
notice = "Dossier traité avec succès."
|
notice = "Dossier traité avec succès."
|
||||||
template = procedure.closed_mail_template
|
template = procedure.closed_mail_template
|
||||||
end
|
end
|
||||||
|
|
||||||
dossier.next_step!('gestionnaire', next_step, motivation)
|
if motivation
|
||||||
|
dossier.motivation = motivation
|
||||||
|
end
|
||||||
|
|
||||||
|
dossier.save
|
||||||
|
|
||||||
# needed to force Carrierwave to provide dossier.attestation.pdf.read
|
# needed to force Carrierwave to provide dossier.attestation.pdf.read
|
||||||
# when the Feature.remote_storage is true, otherwise pdf.read is a closed stream.
|
# when the Feature.remote_storage is true, otherwise pdf.read is a closed stream.
|
||||||
|
|
|
@ -83,7 +83,6 @@ class Users::DescriptionController < UsersController
|
||||||
|
|
||||||
else
|
else
|
||||||
flash.notice = 'Nouveaux fichiers envoyés' if flash.alert.nil?
|
flash.notice = 'Nouveaux fichiers envoyés' if flash.alert.nil?
|
||||||
@dossier.next_step! 'user', 'update'
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return redirect_to users_dossiers_invite_path(id: current_user.invites.find_by_dossier_id(@dossier.id).id) if invite
|
return redirect_to users_dossiers_invite_path(id: current_user.invites.find_by_dossier_id(@dossier.id).id) if invite
|
||||||
|
|
|
@ -10,7 +10,7 @@ class Users::RecapitulatifController < UsersController
|
||||||
def initiate
|
def initiate
|
||||||
create_dossier_facade
|
create_dossier_facade
|
||||||
|
|
||||||
@facade.dossier.next_step! 'user', 'initiate'
|
@facade.dossier.en_construction!
|
||||||
flash.notice = 'Dossier soumis avec succès.'
|
flash.notice = 'Dossier soumis avec succès.'
|
||||||
|
|
||||||
redirect_to users_dossier_recapitulatif_path
|
redirect_to users_dossier_recapitulatif_path
|
||||||
|
|
|
@ -144,61 +144,6 @@ class Dossier < ActiveRecord::Base
|
||||||
champs.joins(', types_de_piece_justificative').where("pieces_justificatives.type_de_piece_justificative_id = types_de_piece_justificative.id AND types_de_piece_justificative.procedure_id = #{procedure.id}").order('order_place ASC')
|
champs.joins(', types_de_piece_justificative').where("pieces_justificatives.type_de_piece_justificative_id = types_de_piece_justificative.id AND types_de_piece_justificative.procedure_id = #{procedure.id}").order('order_place ASC')
|
||||||
end
|
end
|
||||||
|
|
||||||
def next_step! role, action, motivation = nil
|
|
||||||
unless %w(initiate follow update comment receive refuse without_continuation close).include?(action)
|
|
||||||
fail 'action is not valid'
|
|
||||||
end
|
|
||||||
|
|
||||||
unless %w(user gestionnaire).include?(role)
|
|
||||||
fail 'role is not valid'
|
|
||||||
end
|
|
||||||
|
|
||||||
case role
|
|
||||||
when 'user'
|
|
||||||
case action
|
|
||||||
when 'initiate'
|
|
||||||
if brouillon?
|
|
||||||
en_construction!
|
|
||||||
end
|
|
||||||
end
|
|
||||||
when 'gestionnaire'
|
|
||||||
case action
|
|
||||||
when 'close'
|
|
||||||
if en_instruction?
|
|
||||||
self.attestation = build_attestation
|
|
||||||
save
|
|
||||||
|
|
||||||
accepte!
|
|
||||||
|
|
||||||
if motivation
|
|
||||||
self.motivation = motivation
|
|
||||||
save
|
|
||||||
end
|
|
||||||
end
|
|
||||||
when 'refuse'
|
|
||||||
if en_instruction?
|
|
||||||
refuse!
|
|
||||||
|
|
||||||
if motivation
|
|
||||||
self.motivation = motivation
|
|
||||||
save
|
|
||||||
end
|
|
||||||
end
|
|
||||||
when 'without_continuation'
|
|
||||||
if en_instruction?
|
|
||||||
sans_suite!
|
|
||||||
|
|
||||||
if motivation
|
|
||||||
self.motivation = motivation
|
|
||||||
save
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
state
|
|
||||||
end
|
|
||||||
|
|
||||||
def brouillon?
|
def brouillon?
|
||||||
BROUILLON.include?(state)
|
BROUILLON.include?(state)
|
||||||
end
|
end
|
||||||
|
@ -379,14 +324,14 @@ class Dossier < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def build_attestation
|
def build_attestation
|
||||||
if procedure.attestation_template.present? && procedure.attestation_template.activated?
|
if procedure.attestation_template.present? && procedure.attestation_template.activated?
|
||||||
procedure.attestation_template.attestation_for(self)
|
procedure.attestation_template.attestation_for(self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
def update_state_dates
|
def update_state_dates
|
||||||
if en_construction? && !self.en_construction_at
|
if en_construction? && !self.en_construction_at
|
||||||
self.en_construction_at = DateTime.now
|
self.en_construction_at = DateTime.now
|
||||||
|
|
|
@ -32,7 +32,6 @@ describe NewGestionnaire::DossiersController, type: :controller do
|
||||||
|
|
||||||
describe '#follow' do
|
describe '#follow' do
|
||||||
before do
|
before do
|
||||||
expect_any_instance_of(Dossier).to receive(:next_step!).with('gestionnaire', 'follow')
|
|
||||||
patch :follow, params: { procedure_id: procedure.id, dossier_id: dossier.id }
|
patch :follow, params: { procedure_id: procedure.id, dossier_id: dossier.id }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -116,200 +116,6 @@ describe Dossier do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#next_step' do
|
|
||||||
let(:dossier) { create(:dossier) }
|
|
||||||
let(:role) { 'user' }
|
|
||||||
let(:action) { 'initiate' }
|
|
||||||
|
|
||||||
subject { dossier.next_step! role, action }
|
|
||||||
|
|
||||||
context 'when action is not valid' do
|
|
||||||
let(:action) { 'test' }
|
|
||||||
it { expect { subject }.to raise_error('action is not valid') }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when role is not valid' do
|
|
||||||
let(:role) { 'test' }
|
|
||||||
it { expect { subject }.to raise_error('role is not valid') }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when dossier is at state brouillon' do
|
|
||||||
before do
|
|
||||||
dossier.brouillon!
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when user is connected' do
|
|
||||||
let(:role) { 'user' }
|
|
||||||
|
|
||||||
context 'when he updates dossier informations' do
|
|
||||||
let(:action) { 'update' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('brouillon') }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when he posts a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('brouillon') }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when he initiate a dossier' do
|
|
||||||
let(:action) { 'initiate' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('en_construction') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when dossier is at state en_construction' do
|
|
||||||
before do
|
|
||||||
dossier.en_construction!
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when user is connect' do
|
|
||||||
let(:role) { 'user' }
|
|
||||||
|
|
||||||
context 'when is update dossier informations' do
|
|
||||||
let(:action) { 'update' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('en_construction') }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when is post a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('en_construction') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when gestionnaire is connect' do
|
|
||||||
let(:role) { 'gestionnaire' }
|
|
||||||
|
|
||||||
context 'when is post a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('en_construction') }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when is follow' do
|
|
||||||
let(:action) { 'follow' }
|
|
||||||
|
|
||||||
it { is_expected.to eq 'en_construction' }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when dossier is at state en_instruction' do
|
|
||||||
before do
|
|
||||||
dossier.en_instruction!
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when user is connected' do
|
|
||||||
let(:role) { 'user' }
|
|
||||||
|
|
||||||
context 'when he posts a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('en_instruction') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when gestionnaire is connect' do
|
|
||||||
let(:role) { 'gestionnaire' }
|
|
||||||
|
|
||||||
context 'when he posts a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('en_instruction') }
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when he closes the dossier' do
|
|
||||||
let(:action) { 'close' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('accepte') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when dossier is at state refuse' do
|
|
||||||
before do
|
|
||||||
dossier.refuse!
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when user is connected' do
|
|
||||||
let(:role) { 'user' }
|
|
||||||
|
|
||||||
context 'when he posts a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('refuse') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when gestionnaire is connect' do
|
|
||||||
let(:role) { 'gestionnaire' }
|
|
||||||
|
|
||||||
context 'when he posts a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('refuse') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when dossier is at state sans_suite' do
|
|
||||||
before do
|
|
||||||
dossier.sans_suite!
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when user is connected' do
|
|
||||||
let(:role) { 'user' }
|
|
||||||
|
|
||||||
context 'when he posts a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('sans_suite') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when gestionnaire is connect' do
|
|
||||||
let(:role) { 'gestionnaire' }
|
|
||||||
|
|
||||||
context 'when he posts a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('sans_suite') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when dossier is at state accepte' do
|
|
||||||
before do
|
|
||||||
dossier.accepte!
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when user is connect' do
|
|
||||||
let(:role) { 'user' }
|
|
||||||
|
|
||||||
context 'when is post a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('accepte') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'when gestionnaire is connect' do
|
|
||||||
let(:role) { 'gestionnaire' }
|
|
||||||
|
|
||||||
context 'when is post a comment' do
|
|
||||||
let(:action) { 'comment' }
|
|
||||||
|
|
||||||
it { is_expected.to eq('accepte') }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#cerfa_available?' do
|
describe '#cerfa_available?' do
|
||||||
|
@ -818,7 +624,7 @@ describe Dossier do
|
||||||
let(:procedure) { create(:procedure, attestation_template: attestation_template) }
|
let(:procedure) { create(:procedure, attestation_template: attestation_template) }
|
||||||
|
|
||||||
before :each do
|
before :each do
|
||||||
dossier.next_step!('gestionnaire', 'close')
|
dossier.attestation = dossier.build_attestation
|
||||||
dossier.reload
|
dossier.reload
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue