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:
Xavier J 2015-12-21 14:40:28 +01:00
parent 43779aafee
commit c20f9a87e9
9 changed files with 179 additions and 76 deletions

View file

@ -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

View file

@ -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

View file

@ -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'

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View 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

View file

@ -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