First attempt
This commit is contained in:
parent
cef48fb03c
commit
e20de3dba9
16 changed files with 176 additions and 76 deletions
|
@ -86,7 +86,7 @@ class Admin::ProceduresController < AdminController
|
||||||
private
|
private
|
||||||
|
|
||||||
def create_procedure_params
|
def create_procedure_params
|
||||||
params.require(:procedure).permit(:libelle, :description, :organisation, :direction, :lien_demarche, :euro_flag, :logo, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id)
|
params.require(:procedure).permit(:libelle, :description, :organisation, :direction, :lien_demarche, :euro_flag, :logo, :cerfa_flag, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_module_api_carto_params
|
def create_module_api_carto_params
|
||||||
|
|
|
@ -23,6 +23,8 @@ class Users::DescriptionController < UsersController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@dossier = current_user_dossier
|
@dossier = current_user_dossier
|
||||||
|
@procedure = @dossier.procedure
|
||||||
|
|
||||||
unless @dossier.update_attributes(create_params)
|
unless @dossier.update_attributes(create_params)
|
||||||
@dossier = @dossier.decorate
|
@dossier = @dossier.decorate
|
||||||
@procedure = @dossier.procedure
|
@procedure = @dossier.procedure
|
||||||
|
@ -30,11 +32,13 @@ class Users::DescriptionController < UsersController
|
||||||
flash.now.alert = @dossier.errors.full_messages.join('<br />').html_safe
|
flash.now.alert = @dossier.errors.full_messages.join('<br />').html_safe
|
||||||
return render 'show'
|
return render 'show'
|
||||||
end
|
end
|
||||||
|
if @procedure.cerfa_flag?
|
||||||
unless params[:cerfa_pdf].nil?
|
unless params[:cerfa_pdf].nil?
|
||||||
cerfa = @dossier.cerfa
|
cerfa = @dossier.cerfa
|
||||||
cerfa.content = params[:cerfa_pdf]
|
cerfa.content = params[:cerfa_pdf]
|
||||||
cerfa.save
|
cerfa.save
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
unless params[:champs].nil?
|
unless params[:champs].nil?
|
||||||
@dossier.champs.each do |champ|
|
@dossier.champs.each do |champ|
|
||||||
|
|
|
@ -25,8 +25,8 @@ class Dossier < ActiveRecord::Base
|
||||||
delegate :types_de_piece_justificative, to: :procedure
|
delegate :types_de_piece_justificative, to: :procedure
|
||||||
delegate :types_de_champ, to: :procedure
|
delegate :types_de_champ, to: :procedure
|
||||||
|
|
||||||
before_create :build_default_cerfa
|
|
||||||
|
|
||||||
|
before_save :build_default_cerfa, if: Proc.new { procedure_id_changed? }
|
||||||
after_save :build_default_pieces_justificatives, if: Proc.new { procedure_id_changed? }
|
after_save :build_default_pieces_justificatives, if: Proc.new { procedure_id_changed? }
|
||||||
after_save :build_default_champs, if: Proc.new { procedure_id_changed? }
|
after_save :build_default_champs, if: Proc.new { procedure_id_changed? }
|
||||||
|
|
||||||
|
@ -188,10 +188,15 @@ class Dossier < ActiveRecord::Base
|
||||||
return composed_scope, dossier
|
return composed_scope, dossier
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def cerfa_available?
|
||||||
|
procedure.cerfa_flag? && !cerfa.empty?
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def build_default_cerfa
|
def build_default_cerfa
|
||||||
build_cerfa
|
build_cerfa if procedure.cerfa_flag?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,9 +21,10 @@
|
||||||
=f.check_box :euro_flag
|
=f.check_box :euro_flag
|
||||||
Afficher le drapeau européen
|
Afficher le drapeau européen
|
||||||
|
|
||||||
|
|
||||||
%br
|
%br
|
||||||
|
|
||||||
|
.row
|
||||||
|
.col-md-6.col-lg-6
|
||||||
%h4 Cartographie
|
%h4 Cartographie
|
||||||
|
|
||||||
= f.fields_for :module_api_carto, @procedure.module_api_carto do |ff|
|
= f.fields_for :module_api_carto, @procedure.module_api_carto do |ff|
|
||||||
|
@ -40,3 +41,8 @@
|
||||||
%label
|
%label
|
||||||
= ff.check_box :cadastre
|
= ff.check_box :cadastre
|
||||||
Cadastre
|
Cadastre
|
||||||
|
.col-md-6.col-lg-6
|
||||||
|
%h4 Formulaire / CERFA
|
||||||
|
%label
|
||||||
|
=f.check_box :cerfa_flag
|
||||||
|
Activer l'envoi de formulaire / CERFA
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
%th{class:'col-lg-6'}
|
%th{class:'col-lg-6'}
|
||||||
='Formulaire'
|
='Formulaire'
|
||||||
%td.col-lg-6.col-md-6
|
%td.col-lg-6.col-md-6
|
||||||
- if !@facade.dossier.cerfa.empty?
|
- if @facade.dossier.cerfa_available?
|
||||||
- if user_signed_in?
|
- if user_signed_in?
|
||||||
= 'Pièce fournie'
|
= 'Pièce fournie'
|
||||||
- elsif gestionnaire_signed_in?
|
- elsif gestionnaire_signed_in?
|
||||||
|
|
|
@ -49,12 +49,13 @@
|
||||||
%br
|
%br
|
||||||
//TODO a refactorer
|
//TODO a refactorer
|
||||||
%table{class:'table', style:'width:55%; margin-left:5%'}
|
%table{class:'table', style:'width:55%; margin-left:5%'}
|
||||||
|
- if @procedure.cerfa_flag
|
||||||
%tr
|
%tr
|
||||||
%th{class:'col-lg-6'}
|
%th{class:'col-lg-6'}
|
||||||
='Formulaire (.pdf / .doc)'
|
='Formulaire (.pdf / .doc)'
|
||||||
|
|
||||||
%td{class:'col-lg-5'}
|
%td{class:'col-lg-5'}
|
||||||
-if !@dossier.cerfa.empty?
|
-if @dossier.cerfa_available?
|
||||||
%span.btn.btn-sm.btn-file.btn-success
|
%span.btn.btn-sm.btn-file.btn-success
|
||||||
Modifier
|
Modifier
|
||||||
%input{type: 'file', name:'cerfa_pdf', id:'cerfa_pdf', accept: ".pdf"}
|
%input{type: 'file', name:'cerfa_pdf', id:'cerfa_pdf', accept: ".pdf"}
|
||||||
|
|
5
db/migrate/20160127162841_add_cerfa_flag_to_procedure.rb
Normal file
5
db/migrate/20160127162841_add_cerfa_flag_to_procedure.rb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
class AddCerfaFlagToProcedure < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :procedures, :cerfa_flag, :boolean, :default => false
|
||||||
|
end
|
||||||
|
end
|
|
@ -11,8 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
|
ActiveRecord::Schema.define(version: 20160127162841) do
|
||||||
ActiveRecord::Schema.define(version: 20160121110603) do
|
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -190,6 +189,7 @@ ActiveRecord::Schema.define(version: 20160121110603) do
|
||||||
t.boolean "archived", default: false
|
t.boolean "archived", default: false
|
||||||
t.boolean "euro_flag", default: false
|
t.boolean "euro_flag", default: false
|
||||||
t.string "logo"
|
t.string "logo"
|
||||||
|
t.boolean "cerfa_flag", default: false
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "quartier_prioritaires", force: :cascade do |t|
|
create_table "quartier_prioritaires", force: :cascade do |t|
|
||||||
|
|
|
@ -2,7 +2,8 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Users::DescriptionController, type: :controller do
|
describe Users::DescriptionController, type: :controller do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:dossier) { create(:dossier, :with_procedure, user: user) }
|
let(:procedure) { create(:procedure, cerfa_flag: true) }
|
||||||
|
let(:dossier) { create(:dossier, procedure: procedure, user: user) }
|
||||||
let(:dossier_id) { dossier.id }
|
let(:dossier_id) { dossier.id }
|
||||||
let(:bad_dossier_id) { Dossier.count + 10 }
|
let(:bad_dossier_id) { Dossier.count + 10 }
|
||||||
|
|
||||||
|
@ -119,6 +120,7 @@ describe Users::DescriptionController, type: :controller do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'Quand la procédure accepte les CERFA' do
|
||||||
context 'Sauvegarde du CERFA PDF' do
|
context 'Sauvegarde du CERFA PDF' do
|
||||||
before do
|
before do
|
||||||
post :create, dossier_id: dossier_id,
|
post :create, dossier_id: dossier_id,
|
||||||
|
@ -151,6 +153,24 @@ describe Users::DescriptionController, type: :controller do
|
||||||
# TODO à écrire
|
# TODO à écrire
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'Quand la procédure n\'accepte pas les CERFA' do
|
||||||
|
context 'Sauvegarde du CERFA PDF' do
|
||||||
|
let!(:procedure) { create(:procedure) }
|
||||||
|
before do
|
||||||
|
post :create, dossier_id: dossier_id,
|
||||||
|
nom_projet: nom_projet,
|
||||||
|
description: description,
|
||||||
|
cerfa_pdf: cerfa_pdf
|
||||||
|
dossier.reload
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'un CERFA PDF est envoyé' do
|
||||||
|
it { expect(dossier.cerfa_available?).to be_falsey }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'Sauvegarde des champs' do
|
context 'Sauvegarde des champs' do
|
||||||
let(:champs_dossier) { dossier.champs }
|
let(:champs_dossier) { dossier.champs }
|
||||||
|
|
|
@ -4,6 +4,12 @@ FactoryGirl.define do
|
||||||
description "Ma super description"
|
description "Ma super description"
|
||||||
state 'draft'
|
state 'draft'
|
||||||
association :user, factory:[:user]
|
association :user, factory:[:user]
|
||||||
|
unless procedure
|
||||||
|
before(:create) do |dossier, _evaluator|
|
||||||
|
procedure = create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ)
|
||||||
|
dossier.procedure = procedure
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
trait :with_entreprise do
|
trait :with_entreprise do
|
||||||
after(:build) do |dossier, _evaluator|
|
after(:build) do |dossier, _evaluator|
|
||||||
|
@ -15,7 +21,7 @@ FactoryGirl.define do
|
||||||
end
|
end
|
||||||
|
|
||||||
trait :with_procedure do
|
trait :with_procedure do
|
||||||
after(:build) do |dossier, _evaluator|
|
before(:create) do |dossier, _evaluator|
|
||||||
procedure = create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ)
|
procedure = create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ)
|
||||||
dossier.procedure = procedure
|
dossier.procedure = procedure
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
feature 'user is on description page' do
|
feature 'user is on description page' do
|
||||||
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure) }
|
let!(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, cerfa_flag: true) }
|
||||||
|
let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure) }
|
||||||
before do
|
before do
|
||||||
visit users_dossier_description_path dossier
|
visit users_dossier_description_path dossier
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ feature 'user access to the list of his dossier' do
|
||||||
|
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let!(:last_updated_dossier) { create(:dossier, :with_procedure, user: user, state: 'replied')}
|
let!(:last_updated_dossier) { create(:dossier, :with_procedure, user: user, state: 'replied')}
|
||||||
let!(:dossier1) { create(:dossier, :with_procedure, user: user, nom_projet: 'mon permier dossier', state: 'replied') }
|
let!(:dossier1) { create(:dossier, user: user, nom_projet: 'mon permier dossier', state: 'replied') }
|
||||||
let!(:dossier2) { create(:dossier, nom_projet: 'mon deuxième dossier') }
|
let!(:dossier2) { create(:dossier, nom_projet: 'mon deuxième dossier') }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
|
|
@ -63,13 +63,27 @@ describe Dossier do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'creation' do
|
describe 'creation' do
|
||||||
|
describe 'Procedure accepts cerfa upload' do
|
||||||
|
let(:procedure) { create(:procedure, cerfa_flag: true) }
|
||||||
|
let(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, user: user) }
|
||||||
it 'create default cerfa' do
|
it 'create default cerfa' do
|
||||||
expect { described_class.create(user: user) }.to change { Cerfa.count }.by(1)
|
expect { subject.to change(Cerfa.count).by(1) }
|
||||||
|
expect { subject.cerfa_available.to be_truthy }
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'link cerfa to dossier' do
|
it 'link cerfa to dossier' do
|
||||||
dossier = described_class.create
|
expect { subject.cerfa.to eq(Cerfa.last) }
|
||||||
expect(dossier.cerfa).to eq(Cerfa.last)
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'Procedure does not accept cerfa upload' do
|
||||||
|
let(:procedure) { create(:procedure, cerfa_flag: false) }
|
||||||
|
let(:dossier) { create(:dossier, :with_entreprise, :with_procedure, user: user) }
|
||||||
|
it 'default cerfa is not created' do
|
||||||
|
expect { subject.to change(Cerfa.count).by(0) }
|
||||||
|
expect { subject.cerfa.to eq(nil) }
|
||||||
|
expect { subject.cerfa_available.to be_falsey }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -104,20 +118,21 @@ describe Dossier do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#save' do
|
describe '#save' do
|
||||||
subject { create(:dossier, procedure_id: nil, user: user) }
|
subject { build(:dossier, procedure: procedure, user: user) }
|
||||||
let!(:procedure) { create(:procedure) }
|
let!(:procedure) { create(:procedure) }
|
||||||
context 'when is linked to a procedure' do
|
context 'when is linked to a procedure' do
|
||||||
it 'creates default pieces justificatives' do
|
it 'creates default pieces justificatives' do
|
||||||
expect(subject).to receive(:build_default_pieces_justificatives)
|
expect(subject).to receive(:build_default_pieces_justificatives)
|
||||||
subject.update_attributes(procedure_id: procedure.id)
|
subject.save
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'creates default champs' do
|
it 'creates default champs' do
|
||||||
expect(subject).to receive(:build_default_champs)
|
expect(subject).to receive(:build_default_champs)
|
||||||
subject.update_attributes(procedure_id: procedure.id)
|
subject.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
context 'when is not linked to a procedure' do
|
context 'when is not linked to a procedure' do
|
||||||
|
subject { create(:dossier, procedure: procedure, user: user) }
|
||||||
it 'does not create default pieces justificatives' do
|
it 'does not create default pieces justificatives' do
|
||||||
expect(subject).not_to receive(:build_default_pieces_justificatives)
|
expect(subject).not_to receive(:build_default_pieces_justificatives)
|
||||||
subject.update_attributes(description: 'plop')
|
subject.update_attributes(description: 'plop')
|
||||||
|
@ -504,4 +519,26 @@ describe Dossier do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#cerfa_available?' do
|
||||||
|
let(:procedure) { create(:procedure, cerfa_flag: cerfa_flag) }
|
||||||
|
let(:dossier) { create(:dossier, procedure: procedure)}
|
||||||
|
context 'Procedure accepts CERFA' do
|
||||||
|
let(:cerfa_flag) { true }
|
||||||
|
context 'when cerfa is not uploaded' do
|
||||||
|
it { expect(dossier.cerfa_available?).to be_falsey }
|
||||||
|
end
|
||||||
|
context 'when cerfa is uploaded' do
|
||||||
|
let(:dossier_with_cerfa) { create(:dossier, procedure: procedure) }
|
||||||
|
before do
|
||||||
|
allow_any_instance_of(Cerfa).to receive(:empty?).and_return(false)
|
||||||
|
end
|
||||||
|
it { expect(dossier_with_cerfa.cerfa_available?).to be_truthy }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
context 'Procedure does not accept CERFA' do
|
||||||
|
let(:cerfa_flag) { false }
|
||||||
|
it { expect(dossier.cerfa_available?).to be_falsey }
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,6 +17,7 @@ describe Procedure do
|
||||||
it { is_expected.to have_db_column(:test) }
|
it { is_expected.to have_db_column(:test) }
|
||||||
it { is_expected.to have_db_column(:euro_flag) }
|
it { is_expected.to have_db_column(:euro_flag) }
|
||||||
it { is_expected.to have_db_column(:logo) }
|
it { is_expected.to have_db_column(:logo) }
|
||||||
|
it { is_expected.to have_db_column(:cerfa_flag) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'validation' do
|
describe 'validation' do
|
||||||
|
|
|
@ -2,7 +2,9 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe 'users/description/show.html.haml', type: :view do
|
describe 'users/description/show.html.haml', type: :view do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:dossier) { create(:dossier, :with_procedure, user: user) }
|
let(:cerfa_flag) { true }
|
||||||
|
let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ, cerfa_flag: cerfa_flag) }
|
||||||
|
let(:dossier) { create(:dossier, procedure: procedure, user: user) }
|
||||||
let(:dossier_id) { dossier.id }
|
let(:dossier_id) { dossier.id }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
@ -125,4 +127,15 @@ describe 'users/description/show.html.haml', type: :view do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'Envoi des CERFA désactivé' do
|
||||||
|
let!(:cerfa_flag) { false }
|
||||||
|
|
||||||
|
before do
|
||||||
|
render
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(rendered).to_not have_css("#cerfa_flag") }
|
||||||
|
it { expect(rendered).to_not have_selector('input[type=file][name=cerfa_pdf][id=cerfa_pdf]') }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,8 +3,9 @@ require 'spec_helper'
|
||||||
describe 'users/dossiers/new.html.haml', type: :view do
|
describe 'users/dossiers/new.html.haml', type: :view do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:euro_flag) { false }
|
let(:euro_flag) { false }
|
||||||
|
let(:cerfa_flag) { false }
|
||||||
let(:logo) { '' }
|
let(:logo) { '' }
|
||||||
let(:procedure) { create(:procedure, euro_flag: euro_flag, logo: logo) }
|
let(:procedure) { create(:procedure, euro_flag: euro_flag, cerfa_flag: cerfa_flag, logo: logo) }
|
||||||
let!(:dossier) { create(:dossier, procedure: procedure, user: user).decorate }
|
let!(:dossier) { create(:dossier, procedure: procedure, user: user).decorate }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
|
Loading…
Reference in a new issue