Front : Procedure can not be edited when at least one file with state other what draft is created by user
This commit is contained in:
parent
43779aafee
commit
c20f9a87e9
9 changed files with 179 additions and 76 deletions
|
@ -10,7 +10,7 @@ class AdminController < ApplicationController
|
|||
|
||||
@procedure = current_administrateur.procedures.find(id)
|
||||
|
||||
unless @procedure.dossiers.count == 0
|
||||
if @procedure.locked?
|
||||
render json: {message: 'Procedure locked'}, status: 403
|
||||
end
|
||||
|
||||
|
|
|
@ -27,4 +27,8 @@ class Procedure < ActiveRecord::Base
|
|||
types_de_champ_tmp[index_of_first_element + 1].update_attributes(order_place: index_of_first_element)
|
||||
true
|
||||
end
|
||||
|
||||
def locked?
|
||||
dossiers.where.not(state: :draft).count > 0
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,10 +3,14 @@
|
|||
%br
|
||||
|
||||
%ul.nav.nav-tabs
|
||||
%li= link_to('Informations', admin_procedure_path(@procedure))
|
||||
%li= link_to('Description', edit_admin_procedure_path(@procedure))
|
||||
%li= link_to('Champs', admin_procedure_types_de_champ_path(@procedure))
|
||||
%li.active= link_to('Pièces justificatives', admin_procedure_pieces_justificatives_path(@procedure))
|
||||
%li
|
||||
= link_to('Informations', admin_procedure_path(@procedure))
|
||||
%li
|
||||
= link_to('Description', edit_admin_procedure_path(@procedure))
|
||||
%li
|
||||
= link_to('Champs', admin_procedure_types_de_champ_path(@procedure))
|
||||
%li.active
|
||||
= link_to('Pièces justificatives', admin_procedure_pieces_justificatives_path(@procedure))
|
||||
|
||||
#piece_justificative_form
|
||||
= render 'form'
|
|
@ -1,78 +1,89 @@
|
|||
%h2.text-info
|
||||
=@procedure.libelle
|
||||
%br
|
||||
#procedure_show
|
||||
%h2.text-info
|
||||
=@procedure.libelle
|
||||
%br
|
||||
|
||||
%ul.nav.nav-tabs
|
||||
%li.active
|
||||
= link_to('Informations', admin_procedure_path(@procedure))
|
||||
%li
|
||||
= link_to('Description', edit_admin_procedure_path(@procedure))
|
||||
%li
|
||||
= link_to('Champs', admin_procedure_types_de_champ_path(@procedure))
|
||||
%li
|
||||
= link_to('Pièces justificatives', admin_procedure_pieces_justificatives_path(@procedure))
|
||||
%li{style:'float:right'}
|
||||
= form_tag admin_procedure_archive_path(procedure_id: @procedure.id, archive: !@procedure.archived?), method: :put do
|
||||
%button#archive.btn.btn-nav.text-info{type: :button}
|
||||
%i.fa.fa-eraser
|
||||
- if @procedure.archived
|
||||
= 'Réactiver'
|
||||
- else
|
||||
= 'Archiver'
|
||||
#confirm
|
||||
%button#valid.btn.btn-nav.text-success{type: :submit}
|
||||
%i.fa.fa-check
|
||||
Valider
|
||||
%button#cancel.btn.btn-nav.text-danger{type: :button}
|
||||
%i.fa.fa-remove
|
||||
Annuler
|
||||
%ul.nav.nav-tabs
|
||||
%li.active
|
||||
= link_to('Informations', admin_procedure_path(@procedure))
|
||||
|
||||
%li{ class: ('disabled' if @procedure.locked?) }
|
||||
= link_to_unless(@procedure.locked?, 'Description', edit_admin_procedure_path(@procedure)) do
|
||||
= link_to('Description', '#')
|
||||
|
||||
%li{ class: ('disabled' if @procedure.locked?) }
|
||||
= link_to_unless(@procedure.locked?, 'Champs', admin_procedure_types_de_champ_path(@procedure)) do
|
||||
= link_to('Champs', '#')
|
||||
|
||||
%li{ class: ('disabled' if @procedure.locked?) }
|
||||
= link_to_unless(@procedure.locked?, 'Pièces justificatives', admin_procedure_pieces_justificatives_path(@procedure)) do
|
||||
= link_to('Pièces justificatives', '#')
|
||||
|
||||
|
||||
%br
|
||||
%div
|
||||
%li{style:'float:right'}
|
||||
= form_tag admin_procedure_archive_path(procedure_id: @procedure.id, archive: !@procedure.archived?), method: :put do
|
||||
%button#archive.btn.btn-nav.text-info{type: :button}
|
||||
%i.fa.fa-eraser
|
||||
- if @procedure.archived
|
||||
= 'Réactiver'
|
||||
- else
|
||||
= 'Archiver'
|
||||
#confirm
|
||||
%button#valid.btn.btn-nav.text-success{type: :submit}
|
||||
%i.fa.fa-check
|
||||
Valider
|
||||
%button#cancel.btn.btn-nav.text-danger{type: :button}
|
||||
%i.fa.fa-remove
|
||||
Annuler
|
||||
|
||||
%h3 Lien procédure
|
||||
%div{style:'margin-left:3%'}
|
||||
= @procedure.lien
|
||||
- if @procedure.locked?
|
||||
#procedure_locked.center
|
||||
%h5
|
||||
.label.label-info La procédure ne peut plus être modifiée car un usagé a déjà déposé un dossier
|
||||
|
||||
%br
|
||||
%h3 Dossiers
|
||||
%div
|
||||
%h3 Lien procédure
|
||||
%div{style:'margin-left:3%'}
|
||||
= @procedure.lien
|
||||
|
||||
.row
|
||||
.col-md-6.col-lg-6{style:'margin-left:3%'}
|
||||
%h4 Total
|
||||
%div
|
||||
= @facade.dossiers_total
|
||||
%br
|
||||
%h3 Dossiers
|
||||
|
||||
%h4.text-danger Attente Accompagnateur
|
||||
%div
|
||||
= @facade.dossiers_waiting_gestionnaire_total
|
||||
.row
|
||||
.col-md-6.col-lg-6{style:'margin-left:3%'}
|
||||
%h4 Total
|
||||
%div
|
||||
= @facade.dossiers_total
|
||||
|
||||
%h4.text-info Attente Utilisateur
|
||||
%div
|
||||
= @facade.dossiers_waiting_user_total
|
||||
%h4.text-danger Attente Accompagnateur
|
||||
%div
|
||||
= @facade.dossiers_waiting_gestionnaire_total
|
||||
|
||||
%h4.text-success Terminé
|
||||
%div
|
||||
= @facade.dossiers_termine_total
|
||||
%h4.text-info Attente Utilisateur
|
||||
%div
|
||||
= @facade.dossiers_waiting_user_total
|
||||
|
||||
%h4 Archivé
|
||||
%h4.text-success Terminé
|
||||
%div
|
||||
= @facade.dossiers_termine_total
|
||||
|
||||
- unless @facade.dossiers_archived_total == 0
|
||||
%ul
|
||||
- @facade.dossiers_archived_by_state_total.each do |dossier|
|
||||
%li
|
||||
= dossier.state_fr
|
||||
\:
|
||||
= dossier.total
|
||||
- else
|
||||
%p
|
||||
0
|
||||
%h4 Archivé
|
||||
|
||||
.col-md-5.col-lg-5
|
||||
%h4 Non archivés
|
||||
= javascript_include_tag "https://code.highcharts.com/highcharts.js", "chartkick"
|
||||
- if @facade.dossiers_for_pie_highchart.blank?
|
||||
Aucune statistique pour le moment
|
||||
-else
|
||||
=pie_chart @facade.dossiers_for_pie_highchart
|
||||
- unless @facade.dossiers_archived_total == 0
|
||||
%ul
|
||||
- @facade.dossiers_archived_by_state_total.each do |dossier|
|
||||
%li
|
||||
= dossier.state_fr
|
||||
\:
|
||||
= dossier.total
|
||||
- else
|
||||
%p
|
||||
0
|
||||
|
||||
.col-md-5.col-lg-5
|
||||
%h4 Non archivés
|
||||
= javascript_include_tag "https://code.highcharts.com/highcharts.js", "chartkick"
|
||||
- if @facade.dossiers_for_pie_highchart.blank?
|
||||
Aucune statistique pour le moment
|
||||
-else
|
||||
=pie_chart @facade.dossiers_for_pie_highchart
|
|
@ -18,7 +18,7 @@ describe Admin::PiecesJustificativesController, type: :controller do
|
|||
end
|
||||
|
||||
context 'when procedure have at least a file' do
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure) }
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure, state: :initiated) }
|
||||
it { expect(subject.status).to eq(403) }
|
||||
end
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ describe Admin::ProceduresController, type: :controller do
|
|||
end
|
||||
|
||||
context 'when procedure have at least a file' do
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure) }
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure, state: :initiated) }
|
||||
it { expect(subject.status).to eq(403) }
|
||||
end
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ describe Admin::TypesDeChampController, type: :controller do
|
|||
end
|
||||
|
||||
context 'when procedure have at least a file' do
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure) }
|
||||
let!(:dossier) { create(:dossier, :with_user, procedure: procedure, state: :initiated) }
|
||||
it { expect(subject.status).to eq(403) }
|
||||
end
|
||||
|
||||
|
|
58
spec/features/admin/procedure_locked_spec.rb
Normal file
58
spec/features/admin/procedure_locked_spec.rb
Normal file
|
@ -0,0 +1,58 @@
|
|||
require 'spec_helper'
|
||||
|
||||
feature 'procedure locked' do
|
||||
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
let(:procedure) { create(:procedure, administrateur: administrateur) }
|
||||
|
||||
before do
|
||||
login_as administrateur, scope: :administrateur
|
||||
visit admin_procedure_path(procedure)
|
||||
end
|
||||
|
||||
context 'when procedure have no file' do
|
||||
scenario 'info label is not present' do
|
||||
expect(page).not_to have_content('La procédure ne peut plus être modifiée car un usagé a déjà déposé un dossier')
|
||||
end
|
||||
end
|
||||
context 'when procedure have at least a file' do
|
||||
before do
|
||||
create(:dossier, :with_user, procedure: procedure, state: :initiated)
|
||||
visit admin_procedure_path(procedure)
|
||||
end
|
||||
|
||||
scenario 'info label is present' do
|
||||
expect(page).to have_content('La procédure ne peut plus être modifiée car un usagé a déjà déposé un dossier')
|
||||
end
|
||||
|
||||
context 'when user click on Description tab' do
|
||||
before do
|
||||
page.click_on 'Description'
|
||||
end
|
||||
|
||||
scenario 'page doest not change' do
|
||||
expect(page).to have_css('#procedure_show')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user click on Champs tab' do
|
||||
before do
|
||||
page.click_on 'Champs'
|
||||
end
|
||||
|
||||
scenario 'page doest not change' do
|
||||
expect(page).to have_css('#procedure_show')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user click on Pieces Justificatiives tab' do
|
||||
before do
|
||||
page.click_on 'Pièces justificatives'
|
||||
end
|
||||
|
||||
scenario 'page doest not change' do
|
||||
expect(page).to have_css('#procedure_show')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -51,7 +51,7 @@ describe Procedure do
|
|||
describe '#switch_types_de_champ' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:index) { 0 }
|
||||
subject { procedure.switch_types_de_champ index}
|
||||
subject { procedure.switch_types_de_champ index }
|
||||
|
||||
context 'when procedure have no types_de_champ' do
|
||||
it { expect(subject).to eq(false) }
|
||||
|
@ -74,5 +74,31 @@ describe Procedure do
|
|||
it { expect(subject).to eq(false) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'locked?' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
|
||||
subject { procedure.locked? }
|
||||
|
||||
context 'when procedure does not have dossier' do
|
||||
it { is_expected.to be_falsey }
|
||||
end
|
||||
|
||||
context 'when procedure have dossier with state draft' do
|
||||
before do
|
||||
create(:dossier, :with_user, procedure: procedure, state: :draft)
|
||||
end
|
||||
|
||||
it { is_expected.to be_falsey }
|
||||
end
|
||||
|
||||
context 'when procedure have dossier with state initiated' do
|
||||
before do
|
||||
create(:dossier, :with_user, procedure: procedure, state: :initiated)
|
||||
end
|
||||
|
||||
it { is_expected.to be_truthy }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue