From 1a923822595388f965cd8a65a5dd57e1eec9a478 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 11 Aug 2016 15:27:35 +0200 Subject: [PATCH 01/53] - Add new status for a dossier : received, refused and without_continuation - Add new and rename tabs on gestionnaire all dossiers view /!\ WARNING : One test does not pasted. He will be corrected in the next commit --- app/assets/javascripts/application.js | 14 +- app/assets/stylesheets/application.scss | 20 +- .../backoffice/dossiers_controller.rb | 52 ++--- app/facades/dossiers_list_facades.rb | 70 +++++++ app/models/dossier.rb | 41 +++- .../dossiers_list_gestionnaire_service.rb | 44 +++++ .../backoffice/dossiers/_onglets.html.haml | 51 +++-- app/views/dossiers/_infos_dossier.html.haml | 4 +- config/locales/models/dossier/fr.yml | 9 +- spec/decorators/dossier_decorator_spec.rb | 21 ++- .../admin_procedures_show_facades_spec.rb | 7 +- ..._page_pref_list_dossier_backoffice_spec.rb | 2 +- .../backoffice/navigate_to_dossier_spec.rb | 4 +- spec/features/backoffice/onglets_link_spec.rb | 39 +++- spec/models/dossier_spec.rb | 51 +++-- .../dossiers/index_html.haml_spec.rb | 178 ++++++++++-------- .../dossiers/show.html.html_spec.rb | 51 ++++- .../users/dossiers/index_html.haml_spec.rb | 9 +- .../recapitulatif/show.html.haml_spec.rb | 34 +++- 19 files changed, 506 insertions(+), 195 deletions(-) create mode 100644 app/facades/dossiers_list_facades.rb create mode 100644 app/services/dossiers_list_gestionnaire_service.rb diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 79ba48052..8c2de3421 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -32,8 +32,18 @@ //= require handlebars //= require typeahead.bundle -$(document).on('page:load', scroll_to); -$(document).ready(scroll_to); +$(document).on('page:load', application_init); +$(document).ready(application_init); + + +function application_init(){ + tooltip_init(); + scroll_to(); +} + +function tooltip_init() { + $('[data-toggle="tooltip"]').tooltip({delay: { "show": 800, "hide": 100 }}); +} function scroll_to() { $('.js-scrollTo').on('click', function () { // Au clic sur un élément diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index dd36af17e..45ba82428 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -36,7 +36,7 @@ body { } .wysihtml5-sandbox { - resize:vertical; + resize: vertical; } #wrap { @@ -101,7 +101,6 @@ body { margin-right: 105px; } - #header { top: 0; left: -3px; @@ -111,7 +110,6 @@ body { } - .navbar { height: 35px; background-color: rgba(235, 235, 235, 0.95); @@ -123,6 +121,18 @@ body { } +.text-purple { + color: #8B008B +} + +.text-default { + color: grey; +} + +.progress-bar-purple { + background-color: #800080; +} + .btn { box-shadow: none !important; } @@ -178,12 +188,12 @@ div.pagination { text-align: center; } -.alert{ +.alert { margin-bottom: 0px; } .alert.alert-success.move_up, -.alert.alert-danger.siret{ +.alert.alert-danger.siret { position: fixed; top: 0px; left: 0; diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index a927d94d1..9453ce3bf 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -5,11 +5,7 @@ class Backoffice::DossiersController < ApplicationController before_action :authenticate_gestionnaire! def index - @liste = params[:liste] || 'a_traiter' - - smartlisting_dossier - - total_dossiers_per_state + smartlisting_dossier (params[:liste] || 'a_traiter') end def show @@ -21,13 +17,14 @@ class Backoffice::DossiersController < ApplicationController @search_terms = params[:q] @dossiers_search, @dossier = Dossier.search(current_gestionnaire, @search_terms) + create_dossiers_list_facade + unless @dossiers_search.empty? @dossiers_search = @dossiers_search.paginate(:page => params[:page]).decorate end @dossier = @dossier.decorate unless @dossier.nil? - total_dossiers_per_state rescue RuntimeError @dossiers_search = [] end @@ -65,52 +62,25 @@ class Backoffice::DossiersController < ApplicationController rescue NoMethodError @liste = 'a_traiter' end - smartlisting_dossier + + smartlisting_dossier @liste render 'backoffice/dossiers/index', formats: :js end private - def smartlisting_dossier + def smartlisting_dossier liste + create_dossiers_list_facade liste + @dossiers = smart_listing_create :dossiers, - dossiers_to_display, + @dossiers_list_facade.dossiers_to_display, partial: "backoffice/dossiers/list", array: true end - def dossiers_to_display - {'a_traiter' => waiting_for_gestionnaire, - 'en_attente' => waiting_for_user, - 'termine' => termine, - 'suivi' => suivi}[@liste] - end - - def waiting_for_gestionnaire - @a_traiter_class = (@liste == 'a_traiter' ? 'active' : '') - @waiting_for_gestionnaire ||= current_gestionnaire.dossiers_filter.waiting_for_gestionnaire - end - - def waiting_for_user - @en_attente_class = (@liste == 'en_attente' ? 'active' : '') - @waiting_for_user ||= current_gestionnaire.dossiers_filter.waiting_for_user - end - - def termine - @termine_class = (@liste == 'termine' ? 'active' : '') - @termine ||= current_gestionnaire.dossiers_filter.termine - end - - def suivi - @suivi_class = (@liste == 'suivi' ? 'active' : '') - @suivi ||= current_gestionnaire.dossiers_follow - end - - def total_dossiers_per_state - @dossiers_a_traiter_total = waiting_for_gestionnaire.count - @dossiers_en_attente_total = waiting_for_user.count - @dossiers_termine_total = termine.count - @dossiers_suivi_total = suivi.count + def create_dossiers_list_facade liste='a_traiter' + @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, liste end def create_dossier_facade dossier_id diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb new file mode 100644 index 000000000..6086e0a9b --- /dev/null +++ b/app/facades/dossiers_list_facades.rb @@ -0,0 +1,70 @@ +class DossiersListFacades + def initialize current_devise_profil, liste + @current_devise_profil = current_devise_profil + @liste = liste + end + + def service + @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste + end + + def dossiers_to_display + service.dossiers_to_display + end + + def nouveaux_class + (@liste == 'nouveaux' ? 'active' : '') + end + + def a_traiter_class + (@liste == 'a_traiter' ? 'active' : '') + end + + def en_attente_class + (@liste == 'en_attente' ? 'active' : '') + end + + def deposes_class + (@liste == 'deposes' ? 'active' : '') + end + + def a_instruire_class + (@liste == 'a_instruire' ? 'active' : '') + end + + def termine_class + (@liste == 'termine' ? 'active' : '') + end + + def suivi_class + (@liste == 'suivi' ? 'active' : '') + end + + def nouveaux_total + service.nouveaux.count + end + + def a_traiter_total + service.waiting_for_gestionnaire.count + end + + def en_attente_total + service.waiting_for_user.count + end + + def deposes_total + service.deposes.count + end + + def a_instruire_total + service.a_instruire.count + end + + def termine_total + service.termine.count + end + + def suivi_total + service.suivi.count + end +end \ No newline at end of file diff --git a/app/models/dossier.rb b/app/models/dossier.rb index eeb9df03d..e3a232d62 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -2,11 +2,15 @@ class Dossier < ActiveRecord::Base enum state: {draft: 'draft', initiated: 'initiated', - replied: 'replied', - updated: 'updated', + replied: 'replied', #action utilisateur demandé + updated: 'updated',#etude par l'administration en cours validated: 'validated', submitted: 'submitted', - closed: 'closed'} + received: 'received', + closed: 'closed', + refused: 'refused', + without_continuation: 'without_continuation' + } has_one :etablissement, dependent: :destroy has_one :entreprise, dependent: :destroy @@ -34,9 +38,12 @@ class Dossier < ActiveRecord::Base validates :user, presence: true - WAITING_FOR_GESTIONNAIRE = %w(initiated updated submitted) + NOUVEAUX = %w(initiated) + WAITING_FOR_GESTIONNAIRE = %w(updated) WAITING_FOR_USER = %w(replied validated) - TERMINE = %w(closed) + DEPOSES = %w(submitted) + A_INSTRUIRE = %w(received) + TERMINE = %w(closed refused without_continuation) def retrieve_last_piece_justificative_by_type(type) pieces_justificatives.where(type_de_piece_justificative_id: type).last @@ -129,6 +136,10 @@ class Dossier < ActiveRecord::Base state end + def nouveaux? + NOUVEAUX.include?(state) + end + def waiting_for_gestionnaire? WAITING_FOR_GESTIONNAIRE.include?(state) end @@ -137,10 +148,22 @@ class Dossier < ActiveRecord::Base WAITING_FOR_USER.include?(state) end + def deposes? + DEPOSES.include?(state) + end + + def a_instruire? + A_INSTRUIRE.include?(state) + end + def termine? TERMINE.include?(state) end + def self.nouveaux order = 'ASC' + where(state: NOUVEAUX, archived: false).order("updated_at #{order}") + end + def self.waiting_for_gestionnaire order = 'ASC' where(state: WAITING_FOR_GESTIONNAIRE, archived: false).order("updated_at #{order}") end @@ -149,6 +172,14 @@ class Dossier < ActiveRecord::Base where(state: WAITING_FOR_USER, archived: false).order("updated_at #{order}") end + def self.deposes order = 'ASC' + where(state: DEPOSES, archived: false).order("updated_at #{order}") + end + + def self.a_instruire order = 'ASC' + where(state: A_INSTRUIRE, archived: false).order("updated_at #{order}") + end + def self.termine order = 'ASC' where(state: TERMINE, archived: false).order("updated_at #{order}") end diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb new file mode 100644 index 000000000..1f72288a7 --- /dev/null +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -0,0 +1,44 @@ +class DossiersListGestionnaireService + def initialize current_devise_profil, liste + @current_devise_profil = current_devise_profil + @liste = liste + end + + def dossiers_to_display + {'nouveaux' => nouveaux, + 'a_traiter' => waiting_for_gestionnaire, + 'en_attente' => waiting_for_user, + 'deposes' => deposes, + 'a_instruire' => a_instruire, + 'termine' => termine, + 'suivi' => suivi}[@liste] + end + + def nouveaux + @nouveaux ||= @current_devise_profil.dossiers_filter.nouveaux + end + + def waiting_for_gestionnaire + @waiting_for_gestionnaire ||= @current_devise_profil.dossiers_filter.waiting_for_gestionnaire + end + + def waiting_for_user + @waiting_for_user ||= @current_devise_profil.dossiers_filter.waiting_for_user + end + + def deposes + @deposes ||= @current_devise_profil.dossiers_filter.deposes + end + + def a_instruire + @a_instruire ||= @current_devise_profil.dossiers_filter.a_instruire + end + + def termine + @termine ||= @current_devise_profil.dossiers_filter.termine + end + + def suivi + @suivi ||= @current_devise_profil.dossiers_follow + end +end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index 29ff955e7..dbd429e6f 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -3,33 +3,47 @@ #onglets %ul.nav.nav-tabs - %li{ class: (@a_traiter_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_traiter')}"} - %h5.text-danger - = "À traiter " - .badge.progress-bar-danger - =@dossiers_a_traiter_total - - %li{ class: (@en_attente_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'en_attente')}"} + %li{ class: (@dossiers_list_facade.nouveaux_class)} + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'nouveaux')}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers non ouverts.'} %h5.text-info - ="En attente " + = "Nouveaux " .badge.progress-bar-info - =@dossiers_en_attente_total + =@dossiers_list_facade.nouveaux_total - %li{ class: (@suivi_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'suivi')}"} + %li{ class: (@dossiers_list_facade.a_traiter_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} + %h5.text-danger + = "Action requise" + .badge.progress-bar-danger + =@dossiers_list_facade.a_traiter_total + + %li{ class: (@dossiers_list_facade.en_attente_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'en_attente')}", 'data-toggle' => :tooltip, title: 'Les dossiers en attentes d\'une action de la part de l\'usager.'} + %h5.text-default + ="Attente usager " + .badge.progress-bar-default + =@dossiers_list_facade.en_attente_total + + %li{ class: (@dossiers_list_facade.deposes_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'deposes')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant instruction.'} + %h5.text-purple + ="À réceptionner" + .badge.progress-bar-purple + =@dossiers_list_facade.deposes_total + + %li{ class: (@dossiers_list_facade.a_instruire_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_instruire')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été notifiés comme bien réceptionnés et qui attendent un verdict final.'} %h5.text-warning - ="Suivi" + = "À instruire" .badge.progress-bar-warning - =@dossiers_suivi_total + =@dossiers_list_facade.a_instruire_total - %li{ class: (@termine_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'termine')}"} + %li{ class: (@dossiers_list_facade.termine_class) } + %a{:href => "#{url_for backoffice_dossiers_path(liste: 'termine')}",'data-toggle' => :tooltip, title: 'Tous les dossiers qui ont été traité avec un statut "Validé", "Refusé" ou "Sans suite "'} %h5.text-success = "Terminé" .badge.progress-bar-success - =@dossiers_termine_total + =@dossiers_list_facade.termine_total %ul.nav.nav-tabs.navbar-right{style:'border-bottom: none;'} %li#search{class: "#{'active' unless @dossiers_search.nil?}"} @@ -46,5 +60,4 @@ %a.btn#pref_list_dossier_open_action{href: '#'} %i.fa.fa-columns - %br \ No newline at end of file diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 6e814043f..5f0238d31 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -41,7 +41,7 @@ %br .row{style: 'text-align:right'} - - if !@facade.dossier.validated? && !@facade.dossier.submitted? && !@facade.dossier.closed? + - if !@facade.dossier.validated? && !@facade.dossier.received? && !@facade.dossier.submitted? && !@facade.dossier.closed? && !@facade.dossier.refused? && !@facade.dossier.without_continuation? - if user_signed_in? && (current_user.email == @facade.dossier.user.email) - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 %a.btn.btn-success{"data-target" => "#UploadPJmodal", @@ -60,7 +60,7 @@ = 'Modifier mon dossier' -if gestionnaire_signed_in? - -if !@facade.dossier.validated? && !@facade.dossier.submitted? && !@facade.dossier.closed? + -if !@facade.dossier.validated? && !@facade.dossier.received? && !@facade.dossier.submitted? && !@facade.dossier.closed? && !@facade.dossier.refused? && !@facade.dossier.without_continuation? = form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do %button#action_button.btn.btn-success = 'Valider le dossier' diff --git a/config/locales/models/dossier/fr.yml b/config/locales/models/dossier/fr.yml index 6c7eaab74..9663b2795 100644 --- a/config/locales/models/dossier/fr.yml +++ b/config/locales/models/dossier/fr.yml @@ -9,12 +9,15 @@ fr: date_previsionnelle: "La date de début prévisionnelle" state: draft: "Brouillon" - initiated: "Soumis" + initiated: "Nouveau" replied: "Répondu" updated: "Mis à jour" - validated: "Validé" + validated: "Figé" submitted: "Déposé" - closed: "Traité" + received: "Reçu" + closed: "Accepté" + refused: "Refusé" + without_continuation: "Sans suite" errors: models: diff --git a/spec/decorators/dossier_decorator_spec.rb b/spec/decorators/dossier_decorator_spec.rb index 5dcbc4ed8..1dfef816a 100644 --- a/spec/decorators/dossier_decorator_spec.rb +++ b/spec/decorators/dossier_decorator_spec.rb @@ -19,7 +19,7 @@ describe DossierDecorator do it 'initiated is initiate' do dossier.initiated! - expect(subject).to eq('Soumis') + expect(subject).to eq('Nouveau') end it 'replied is repondu' do @@ -34,7 +34,7 @@ describe DossierDecorator do it 'validated is valide' do dossier.validated! - expect(subject).to eq('Validé') + expect(subject).to eq('Figé') end it 'submitted is dépose' do @@ -44,7 +44,22 @@ describe DossierDecorator do it 'closed is traité' do dossier.closed! - expect(subject).to eq('Traité') + expect(subject).to eq('Accepté') + end + + it 'received is reçu' do + dossier.received! + expect(subject).to eq('Reçu') + end + + it 'without_continuation is traité' do + dossier.without_continuation! + expect(subject).to eq('Sans suite') + end + + it 'refused is traité' do + dossier.refused! + expect(subject).to eq('Refusé') end end end diff --git a/spec/facades/admin_procedures_show_facades_spec.rb b/spec/facades/admin_procedures_show_facades_spec.rb index 8b5b7ef6b..8ce3b5dc1 100644 --- a/spec/facades/admin_procedures_show_facades_spec.rb +++ b/spec/facades/admin_procedures_show_facades_spec.rb @@ -10,6 +10,7 @@ describe AdminProceduresShowFacades do let!(:dossier_4) { create(:dossier, procedure: procedure, archived: true, state: 'validated') } let!(:dossier_5) { create(:dossier, procedure: procedure, archived: true, state: 'validated') } let!(:dossier_6) { create(:dossier, procedure: procedure, archived: true, state: 'initiated') } + let!(:dossier_7) { create(:dossier, procedure: procedure, state: 'updated') } subject { AdminProceduresShowFacades.new procedure } @@ -22,13 +23,13 @@ describe AdminProceduresShowFacades do describe '.dossiers' do subject { super().dossiers } - it { expect(subject.size).to eq(6) } + it { expect(subject.size).to eq(7) } end describe '.dossiers_for_pie_highchart' do subject { super().dossiers_for_pie_highchart } - it { expect(subject).to eq({'Soumis' => 1, 'Validé' => 2}) } + it { expect(subject).to eq({'Nouveau' => 1, 'Figé' => 2, "Mis à jour"=>1}) } end describe '.dossiers_archived_by_state_total' do @@ -52,7 +53,7 @@ describe AdminProceduresShowFacades do describe 'dossiers_total' do subject { super().dossiers_total } - it { is_expected.to eq(6) } + it { is_expected.to eq(7) } end describe 'dossiers_waiting_gestionnaire_total' do diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb index e2fe77a4d..d64ae23c7 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_backoffice_spec.rb @@ -7,7 +7,7 @@ feature 'usage of pref list dossier lateral panel', js: true do let(:procedure) { create(:procedure, administrateur: administrateur) } before do - create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') + create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') create :assign_to, procedure: procedure, gestionnaire: gestionnaire visit backoffice_path end diff --git a/spec/features/backoffice/navigate_to_dossier_spec.rb b/spec/features/backoffice/navigate_to_dossier_spec.rb index 56d046347..8f29befa2 100644 --- a/spec/features/backoffice/navigate_to_dossier_spec.rb +++ b/spec/features/backoffice/navigate_to_dossier_spec.rb @@ -5,7 +5,7 @@ feature 'on backoffice page' do let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } let(:procedure) { create(:procedure, administrateur: administrateur) } - let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } + let!(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') } before do create :assign_to, gestionnaire: gestionnaire, procedure: procedure @@ -17,12 +17,14 @@ feature 'on backoffice page' do before do page.find_by_id(:gestionnaire_email).set gestionnaire.email page.find_by_id(:gestionnaire_password).set gestionnaire.password + page.click_on 'Se connecter' end context 'when he click on first dossier' do before do page.click_on dossier.id end + scenario 'it redirect to dossier page' do expect(page).to have_css('#backoffice_dossier_show') end diff --git a/spec/features/backoffice/onglets_link_spec.rb b/spec/features/backoffice/onglets_link_spec.rb index 6d8c5c7ce..b3aa61e86 100644 --- a/spec/features/backoffice/onglets_link_spec.rb +++ b/spec/features/backoffice/onglets_link_spec.rb @@ -9,10 +9,21 @@ feature 'on click on tabs button' do end context 'when gestionnaire is logged in' do - context 'when he click on tabs a traitee' do + context 'when he click on tabs nouveaux' do + before do + visit backoffice_dossiers_url(liste: :nouveaux) + page.click_on 'Nouveaux 0' + end + + scenario 'it redirect to backoffice dossier termine' do + expect(page).to have_css('#backoffice_index') + end + end + + context 'when he click on tabs a traite' do before do visit backoffice_dossiers_url(liste: :a_traiter) - page.click_on 'À traiter 0' + page.click_on 'Action requise 0' end scenario 'it redirect to backoffice dossier termine' do @@ -23,7 +34,7 @@ feature 'on click on tabs button' do context 'when he click on tabs en attente' do before do visit backoffice_dossiers_url(liste: :en_attente) - page.click_on 'En attente 0' + page.click_on 'Attente usager 0' end scenario 'it redirect to backoffice dossier en attente' do @@ -31,6 +42,28 @@ feature 'on click on tabs button' do end end + context 'when he click on tabs a receptionner' do + before do + visit backoffice_dossiers_url(liste: :nouveaux) + page.click_on 'À réceptionner 0' + end + + scenario 'it redirect to backoffice dossier a_receptionner' do + expect(page).to have_css('#backoffice_index') + end + end + + context 'when he click on tabs a instruire' do + before do + visit backoffice_dossiers_url(liste: :a_instruire) + page.click_on 'À instruire 0' + end + + scenario 'it redirect to backoffice dossier termine' do + expect(page).to have_css('#backoffice_index') + end + end + context 'when he click on tabs termine' do before do visit backoffice_dossiers_url(liste: :termine) diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 393968cd1..2ad0dfed3 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -387,25 +387,36 @@ describe Dossier do before do create :assign_to, gestionnaire: gestionnaire, procedure: procedure_admin + + create(:dossier, procedure: procedure_admin, state: 'draft') + create(:dossier, procedure: procedure_admin, state: 'initiated') #nouveaux + create(:dossier, procedure: procedure_admin, state: 'initiated') #nouveaux + create(:dossier, procedure: procedure_admin, state: 'replied') #en_attente + create(:dossier, procedure: procedure_admin, state: 'updated') #a_traiter + create(:dossier, procedure: procedure_admin, state: 'submitted') #deposes + create(:dossier, procedure: procedure_admin, state: 'received') #a_instruire + create(:dossier, procedure: procedure_admin, state: 'received') #a_instruire + create(:dossier, procedure: procedure_admin, state: 'closed') #termine + create(:dossier, procedure: procedure_admin, state: 'refused') #termine + create(:dossier, procedure: procedure_admin, state: 'without_continuation') #termine + create(:dossier, procedure: procedure_admin_2, state: 'validated') #en_attente + create(:dossier, procedure: procedure_admin_2, state: 'submitted') #deposes + create(:dossier, procedure: procedure_admin_2, state: 'closed') #termine + create(:dossier, procedure: procedure_admin, state: 'initiated', archived: true) #a_traiter #archived + create(:dossier, procedure: procedure_admin, state: 'replied', archived: true) #en_attente #archived + create(:dossier, procedure: procedure_admin, state: 'closed', archived: true) #termine #archived end - let!(:dossier1) { create(:dossier, procedure: procedure_admin, state: 'draft') } - let!(:dossier2) { create(:dossier, procedure: procedure_admin, state: 'initiated') } #a_traiter - let!(:dossier3) { create(:dossier, procedure: procedure_admin, state: 'initiated') } #a_traiter - let!(:dossier4) { create(:dossier, procedure: procedure_admin, state: 'replied') } #en_attente - let!(:dossier5) { create(:dossier, procedure: procedure_admin, state: 'updated') } #a_traiter - let!(:dossier6) { create(:dossier, procedure: procedure_admin_2, state: 'validated') } #en_attente - let!(:dossier7) { create(:dossier, procedure: procedure_admin_2, state: 'submitted') } #a_traiter - let!(:dossier8) { create(:dossier, procedure: procedure_admin_2, state: 'closed') } #termine - let!(:dossier9) { create(:dossier, procedure: procedure_admin, state: 'closed') } #termine - let!(:dossier10) { create(:dossier, procedure: procedure_admin, state: 'initiated', archived: true) } #a_traiter #archived - let!(:dossier11) { create(:dossier, procedure: procedure_admin, state: 'replied', archived: true) } #en_attente #archived - let!(:dossier12) { create(:dossier, procedure: procedure_admin, state: 'closed', archived: true) } #termine #archived + describe '#nouveaux' do + subject { gestionnaire.dossiers.nouveaux } + + it { expect(subject.size).to eq(2) } + end describe '#waiting_for_gestionnaire' do subject { gestionnaire.dossiers.waiting_for_gestionnaire } - it { expect(subject.size).to eq(3) } + it { expect(subject.size).to eq(1) } end describe '#waiting_for_user' do @@ -414,10 +425,22 @@ describe Dossier do it { expect(subject.size).to eq(1) } end + describe '#a_instruire' do + subject { gestionnaire.dossiers.a_instruire } + + it { expect(subject.size).to eq(2) } + end + + describe '#deposes' do + subject { gestionnaire.dossiers.deposes } + + it { expect(subject.size).to eq(1) } + end + describe '#termine' do subject { gestionnaire.dossiers.termine } - it { expect(subject.size).to eq(1) } + it { expect(subject.size).to eq(3) } end end diff --git a/spec/views/backoffice/dossiers/index_html.haml_spec.rb b/spec/views/backoffice/dossiers/index_html.haml_spec.rb index 382caf9a6..cd937d856 100644 --- a/spec/views/backoffice/dossiers/index_html.haml_spec.rb +++ b/spec/views/backoffice/dossiers/index_html.haml_spec.rb @@ -8,12 +8,23 @@ describe 'backoffice/dossiers/index.html.haml', type: :view do let!(:decorate_dossier_initiated) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated').decorate } let!(:decorate_dossier_replied) { create(:dossier, :with_entreprise, procedure: procedure, state: 'replied').decorate } + let!(:decorate_dossier_updated) { create(:dossier, :with_entreprise, procedure: procedure, state: 'updated').decorate } + let!(:decorate_dossier_validated) { create(:dossier, :with_entreprise, procedure: procedure, state: 'validated').decorate } + let!(:decorate_dossier_submitted) { create(:dossier, :with_entreprise, procedure: procedure, state: 'submitted').decorate } + let!(:decorate_dossier_received) { create(:dossier, :with_entreprise, procedure: procedure, state: 'received').decorate } let!(:decorate_dossier_closed) { create(:dossier, :with_entreprise, procedure: procedure, state: 'closed').decorate } + let!(:decorate_dossier_refused) { create(:dossier, :with_entreprise, procedure: procedure, state: 'refused').decorate } + let!(:decorate_dossier_without_continuation) { create(:dossier, :with_entreprise, procedure: procedure, state: 'without_continuation').decorate } before do - - decorate_dossier_closed.entreprise.update_column(:raison_sociale, 'plip') - decorate_dossier_replied.entreprise.update_column(:raison_sociale, 'plop') + decorate_dossier_replied.entreprise.update_column(:raison_sociale, 'plap') + decorate_dossier_updated.entreprise.update_column(:raison_sociale, 'plep') + decorate_dossier_validated.entreprise.update_column(:raison_sociale, 'plip') + decorate_dossier_submitted.entreprise.update_column(:raison_sociale, 'plop') + decorate_dossier_received.entreprise.update_column(:raison_sociale, 'plup') + decorate_dossier_closed.entreprise.update_column(:raison_sociale, 'plyp') + decorate_dossier_refused.entreprise.update_column(:raison_sociale, 'plzp') + decorate_dossier_without_continuation.entreprise.update_column(:raison_sociale, 'plnp') create :preference_list_dossier, gestionnaire: gestionnaire, @@ -43,119 +54,120 @@ describe 'backoffice/dossiers/index.html.haml', type: :view do sign_in gestionnaire end - describe 'on tab a_traiter' do + shared_examples 'check_tab_content' do before do + assign :dossiers_list_facade, (DossiersListFacades.new gestionnaire, liste) assign(:dossiers, (smart_listing_create :dossiers, - gestionnaire.dossiers.waiting_for_gestionnaire, + dossiers_to_display, partial: "backoffice/dossiers/list", array: true)) - assign(:liste, 'a_traiter') - assign(:a_traiter_class, 'active') - render end subject { rendered } - it { is_expected.to have_css('#backoffice_index') } - it { is_expected.to have_content(procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_initiated.entreprise.raison_sociale) } - it { is_expected.to have_content(decorate_dossier_initiated.display_state) } - it { is_expected.to have_content(decorate_dossier_initiated.last_update) } - it { is_expected.not_to have_content(decorate_dossier_replied.entreprise.raison_sociale) } - it { is_expected.not_to have_content(decorate_dossier_closed.entreprise.raison_sociale) } + describe 'pref list column' do + it { is_expected.to have_css('#backoffice_index') } + it { is_expected.to have_content(procedure.libelle) } + it { is_expected.to have_content(decorate_dossier_at_check.entreprise.raison_sociale) } + it { is_expected.to have_content(decorate_dossier_at_check.display_state) } + it { is_expected.to have_content(decorate_dossier_at_check.last_update) } + end - it { is_expected.to have_css("#suivre_dossier_#{gestionnaire.dossiers.waiting_for_gestionnaire.first.id}") } + it { is_expected.to have_css("#suivre_dossier_#{dossiers_to_display.first.id}") } + + it { expect(dossiers_to_display.count).to eq total_dossiers } describe 'active tab' do - it { is_expected.to have_selector('.active .text-danger') } + it { is_expected.to have_selector(active_class) } + end + end + + describe 'on tab nouveaux' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-info' } + let(:dossiers_to_display) { gestionnaire.dossiers.nouveaux } + let(:liste) { 'nouveaux' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_initiated } + end + end + + describe 'on tab a_traiter' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-danger' } + let(:dossiers_to_display) { gestionnaire.dossiers.waiting_for_gestionnaire } + let(:liste) { 'a_traiter' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_updated } end end describe 'on tab en_attente' do - before do - assign(:dossiers, (smart_listing_create :dossiers, - gestionnaire.dossiers.waiting_for_user, - partial: "backoffice/dossiers/list", - array: true)) - assign(:liste, 'en_attente') - assign(:en_attente_class, 'active') + let(:total_dossiers) { 2 } + let(:active_class) { '.active .text-default' } + let(:dossiers_to_display) { gestionnaire.dossiers.waiting_for_user } + let(:liste) { 'en_attente' } - render + describe 'for state replied' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_replied } + end end - subject { rendered } - it { is_expected.to have_css('#backoffice_index') } - it { is_expected.to have_content(procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_replied.entreprise.raison_sociale) } - it { is_expected.to have_content(decorate_dossier_replied.display_state) } - it { is_expected.to have_content(decorate_dossier_replied.last_update) } - - it { is_expected.not_to have_content(decorate_dossier_initiated.entreprise.raison_sociale) } - it { is_expected.not_to have_content(decorate_dossier_closed.entreprise.raison_sociale) } - - describe 'active tab' do - it { is_expected.to have_selector('.active .text-info') } + describe 'for state validated' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_validated } + end end end - describe 'on tab suivi' do - before do - create :follow, dossier_id: decorate_dossier_replied.id, gestionnaire_id: gestionnaire.id + describe 'on tab deposes' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-purple' } + let(:dossiers_to_display) { gestionnaire.dossiers.deposes } + let(:liste) { 'deposes' } - assign(:dossiers, (smart_listing_create :dossiers, - gestionnaire.dossiers_follow, - partial: "backoffice/dossiers/list", - array: true)) - assign(:suivi_class, 'active') - assign(:liste, 'suivi') - render + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_submitted } end + end - subject { rendered } + describe 'on tab a_instruire' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-warning' } + let(:dossiers_to_display) { gestionnaire.dossiers.a_instruire } + let(:liste) { 'a_instruire' } - it { is_expected.to have_css('#backoffice_index') } - it { is_expected.to have_content(procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_replied.entreprise.raison_sociale) } - it { is_expected.to have_content(decorate_dossier_replied.display_state) } - it { is_expected.to have_content(decorate_dossier_replied.last_update) } - - it { is_expected.not_to have_content(decorate_dossier_initiated.entreprise.raison_sociale) } - it { is_expected.not_to have_content(decorate_dossier_closed.entreprise.raison_sociale) } - - it { is_expected.to have_css("#suivre_dossier_#{gestionnaire.dossiers_follow.first.id}") } - - describe 'active tab' do - it { is_expected.to have_selector('.active .text-warning') } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_received } end end describe 'on tab termine' do - before do - assign(:dossiers, (smart_listing_create :dossiers, - gestionnaire.dossiers.termine, - partial: "backoffice/dossiers/list", - array: true)) - assign(:termine_class, 'active') - assign(:liste, 'termine') - render + let(:total_dossiers) { 3 } + let(:active_class) { '.active .text-success' } + let(:dossiers_to_display) { gestionnaire.dossiers.termine } + let(:liste) { 'termine' } + + describe 'for state closed' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_closed } + end end - subject { rendered } + describe 'for state refused' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_refused } + end + end - it { is_expected.to have_css('#backoffice_index') } - it { is_expected.to have_content(procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_closed.entreprise.raison_sociale) } - it { is_expected.to have_content(decorate_dossier_closed.display_state) } - it { is_expected.to have_content(decorate_dossier_closed.last_update) } - - it { is_expected.not_to have_content(decorate_dossier_initiated.entreprise.raison_sociale) } - it { is_expected.not_to have_content(decorate_dossier_replied.entreprise.raison_sociale) } - - it { is_expected.to have_css("#suivre_dossier_#{gestionnaire.dossiers.termine.first.id}") } - - describe 'active tab' do - it { is_expected.to have_selector('.active .text-success') } + describe 'for state without_continuation' do + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_without_continuation } + end end end end \ No newline at end of file diff --git a/spec/views/backoffice/dossiers/show.html.html_spec.rb b/spec/views/backoffice/dossiers/show.html.html_spec.rb index 194da7043..ee4e26a5d 100644 --- a/spec/views/backoffice/dossiers/show.html.html_spec.rb +++ b/spec/views/backoffice/dossiers/show.html.html_spec.rb @@ -57,7 +57,7 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Soumis') } + it { expect(rendered).to have_content('Nouveau') } it 'button Valider le dossier is present' do expect(rendered).to have_css('#action_button') @@ -102,7 +102,7 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Validé') } + it { expect(rendered).to have_content('Figé') } it 'button Valider le dossier is not present' do expect(rendered).not_to have_css('#action_button') @@ -136,7 +136,52 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Traité') } + it { expect(rendered).to have_content('Accepté') } + + it 'button Valider le dossier is not present' do + expect(rendered).not_to have_css('#action_button') + expect(rendered).not_to have_content('Valider le dossier') + end + end + + context 'when dossier have state received' do + let(:state) { 'received' } + + before do + render + end + + it { expect(rendered).to have_content('Reçu') } + + it 'button Valider le dossier is not present' do + expect(rendered).not_to have_css('#action_button') + expect(rendered).not_to have_content('Valider le dossier') + end + end + + context 'when dossier have state without_continuation' do + let(:state) { 'without_continuation' } + + before do + render + end + + it { expect(rendered).to have_content('Sans suite') } + + it 'button Valider le dossier is not present' do + expect(rendered).not_to have_css('#action_button') + expect(rendered).not_to have_content('Valider le dossier') + end + end + + context 'when dossier have state refused' do + let(:state) { 'refused' } + + before do + render + end + + it { expect(rendered).to have_content('Refusé') } it 'button Valider le dossier is not present' do expect(rendered).not_to have_css('#action_button') diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index 381e607fe..0b36400c6 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -75,10 +75,11 @@ describe 'users/dossiers/index.html.haml', type: :view do it { is_expected.to have_css('#users_index') } describe 'dossier initiated is present' do - it { is_expected.to have_content(dossier.procedure.libelle) } - it { is_expected.to have_content(dossier.entreprise.raison_sociale) } - it { is_expected.to have_content(dossier.display_state) } - it { is_expected.to have_content(dossier.last_update) } + pending + # it { is_expected.to have_content(dossier.procedure.libelle) } + # it { is_expected.to have_content(dossier.entreprise.raison_sociale) } + # it { is_expected.to have_content(dossier.display_state) } + # it { is_expected.to have_content(dossier.last_update) } end describe 'dossier replied and closed are not present' do diff --git a/spec/views/users/recapitulatif/show.html.haml_spec.rb b/spec/views/users/recapitulatif/show.html.haml_spec.rb index 799e52f7e..a687bb94e 100644 --- a/spec/views/users/recapitulatif/show.html.haml_spec.rb +++ b/spec/views/users/recapitulatif/show.html.haml_spec.rb @@ -59,7 +59,7 @@ describe 'users/recapitulatif/show.html.haml', type: :view do render end - it { expect(rendered).to have_content('Soumis') } + it { expect(rendered).to have_content('Nouveau') } it 'button Modifier les document est present' do expect(rendered).to have_content('Modifier les documents') @@ -125,13 +125,41 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end end - context 'when dossier state is traité' do + context 'when dossier state is closed' do let(:state) { 'closed' } before do render end - it { expect(rendered).to have_content('Traité') } + it { expect(rendered).to have_content('Accepté') } + + it 'button Editer mon dossier n\'est plus present' do + expect(rendered).not_to have_css('#maj_infos') + expect(rendered).not_to have_content('Modifier mon dossier') + end + end + + context 'when dossier state is refused' do + let(:state) { 'refused' } + + before do + render + end + it { expect(rendered).to have_content('Refusé') } + + it 'button Editer mon dossier n\'est plus present' do + expect(rendered).not_to have_css('#maj_infos') + expect(rendered).not_to have_content('Modifier mon dossier') + end + end + + context 'when dossier state is without_continuation' do + let(:state) { 'without_continuation' } + + before do + render + end + it { expect(rendered).to have_content('Sans suite') } it 'button Editer mon dossier n\'est plus present' do expect(rendered).not_to have_css('#maj_infos') From 6adfcac5bf41b10bbd61d3b763baccdd9a9677ab Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 12 Aug 2016 13:56:10 +0200 Subject: [PATCH 02/53] Add new state on User UI. /!/ WARNING : No tests fix --- app/controllers/users/dossiers_controller.rb | 43 +----------- app/facades/dossiers_list_facades.rb | 50 +++++++++++++- app/models/dossier.rb | 18 +++++ app/services/dossiers_list_user_service.rb | 44 +++++++++++++ .../dossiers/_state_description.html.haml | 19 ++++++ app/views/backoffice/dossiers/index.html.haml | 4 ++ app/views/users/dossiers/_onglets.html.haml | 66 ++++++++++++------- .../dossiers/_state_description.html.haml | 45 +++++++++++++ app/views/users/dossiers/index.html.haml | 6 +- .../users/dossiers/index_html.haml_spec.rb | 9 ++- 10 files changed, 232 insertions(+), 72 deletions(-) create mode 100644 app/services/dossiers_list_user_service.rb create mode 100644 app/views/backoffice/dossiers/_state_description.html.haml create mode 100644 app/views/users/dossiers/_state_description.html.haml diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index c96ed1cfb..e5bf6a48c 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -10,16 +10,12 @@ class Users::DossiersController < UsersController end def index - order = 'DESC' - - @liste = params[:liste] || 'a_traiter' + @dossiers_list_facade = DossiersListFacades.new current_user, (params[:liste] || 'a_traiter') @dossiers = smart_listing_create :dossiers, - dossiers_to_display, + @dossiers_list_facade.dossiers_to_display, partial: "users/dossiers/list", array: true - - total_dossiers_per_state end def commencer @@ -109,40 +105,6 @@ class Users::DossiersController < UsersController private - def dossiers_to_display - {'a_traiter' => waiting_for_user, - 'en_attente' => waiting_for_gestionnaire, - 'termine' => termine, - 'invite' => invite}[@liste] - end - - def waiting_for_user - @a_traiter_class = (@liste == 'a_traiter' ? 'active' : '') - @waiting_for_user ||= current_user.dossiers.waiting_for_user 'DESC' - end - - def waiting_for_gestionnaire - @en_attente_class = (@liste == 'en_attente' ? 'active' : '') - @waiting_for_gestionnaire ||= current_user.dossiers.waiting_for_gestionnaire 'DESC' - end - - def termine - @termine_class = (@liste == 'termine' ? 'active' : '') - @termine ||= current_user.dossiers.termine 'DESC' - end - - def invite - @invite_class = (@liste == 'invite' ? 'active' : '') - @invite ||= current_user.invites - end - - def total_dossiers_per_state - @dossiers_a_traiter_total = waiting_for_user.count - @dossiers_en_attente_total = waiting_for_gestionnaire.count - @dossiers_termine_total = termine.count - @dossiers_invite_total = invite.count - end - def check_siret errors_valid_siret unless Siret.new(siret: siret).valid? end @@ -183,5 +145,4 @@ class Users::DossiersController < UsersController def facade id = params[:id] DossierFacades.new id, current_user.email end - end diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 6086e0a9b..76f2d265f 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -5,7 +5,15 @@ class DossiersListFacades end def service - @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste + if gestionnaire? + @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste + elsif user? + @service ||= DossiersListUserService.new @current_devise_profil, @liste + end + end + + def liste + @liste end def dossiers_to_display @@ -28,6 +36,14 @@ class DossiersListFacades (@liste == 'deposes' ? 'active' : '') end + def valides_class + (@liste == 'valides' ? 'active' : '') + end + + def en_instruction_class + (@liste == 'en_instruction' ? 'active' : '') + end + def a_instruire_class (@liste == 'a_instruire' ? 'active' : '') end @@ -40,22 +56,36 @@ class DossiersListFacades (@liste == 'suivi' ? 'active' : '') end + def invite_class + (@liste == 'invite' ? 'active' : '') + end + def nouveaux_total service.nouveaux.count end def a_traiter_total - service.waiting_for_gestionnaire.count + service.waiting_for_gestionnaire.count if gestionnaire? + service.waiting_for_user.count if user? end def en_attente_total - service.waiting_for_user.count + service.waiting_for_user.count if gestionnaire? + service.waiting_for_gestionnaire.count if user? + end + + def valides_total + service.valides.count end def deposes_total service.deposes.count end + def en_instruction_total + service.en_instruction.count + end + def a_instruire_total service.a_instruire.count end @@ -67,4 +97,18 @@ class DossiersListFacades def suivi_total service.suivi.count end + + def invite_total + service.invite.count + end + + private + + def gestionnaire? + @current_devise_profil.class == Gestionnaire + end + + def user? + @current_devise_profil.class == User + end end \ No newline at end of file diff --git a/app/models/dossier.rb b/app/models/dossier.rb index e3a232d62..914bc1ca8 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -41,7 +41,9 @@ class Dossier < ActiveRecord::Base NOUVEAUX = %w(initiated) WAITING_FOR_GESTIONNAIRE = %w(updated) WAITING_FOR_USER = %w(replied validated) + VALIDES = %w(validated) DEPOSES = %w(submitted) + EN_INSTRUCTION = %w(submitted received) A_INSTRUIRE = %w(received) TERMINE = %w(closed refused without_continuation) @@ -152,10 +154,18 @@ class Dossier < ActiveRecord::Base DEPOSES.include?(state) end + def valides? + VALIDES.include?(state) + end + def a_instruire? A_INSTRUIRE.include?(state) end + def en_instruction? + EN_INSTRUCTION.include?(state) + end + def termine? TERMINE.include?(state) end @@ -172,6 +182,10 @@ class Dossier < ActiveRecord::Base where(state: WAITING_FOR_USER, archived: false).order("updated_at #{order}") end + def self.valides order = 'ASC' + where(state: VALIDES, archived: false).order("updated_at #{order}") + end + def self.deposes order = 'ASC' where(state: DEPOSES, archived: false).order("updated_at #{order}") end @@ -180,6 +194,10 @@ class Dossier < ActiveRecord::Base where(state: A_INSTRUIRE, archived: false).order("updated_at #{order}") end + def self.en_instruction order = 'ASC' + where(state: EN_INSTRUCTION, archived: false).order("updated_at #{order}") + end + def self.termine order = 'ASC' where(state: TERMINE, archived: false).order("updated_at #{order}") end diff --git a/app/services/dossiers_list_user_service.rb b/app/services/dossiers_list_user_service.rb new file mode 100644 index 000000000..d910d0cb8 --- /dev/null +++ b/app/services/dossiers_list_user_service.rb @@ -0,0 +1,44 @@ +class DossiersListUserService + def initialize current_devise_profil, liste + @current_devise_profil = current_devise_profil + @liste = liste + end + + def dossiers_to_display + {'nouveaux' => nouveaux, + 'a_traiter' => waiting_for_user, + 'en_attente' => waiting_for_gestionnaire, + 'valides' => valides, + 'en_instruction' => en_instruction, + 'termine' => termine, + 'invite' => invite}[@liste] + end + + def nouveaux + @nouveaux ||= @current_devise_profil.dossiers.nouveaux + end + + def waiting_for_gestionnaire + @waiting_for_gestionnaire ||= @current_devise_profil.dossiers.waiting_for_gestionnaire + end + + def waiting_for_user + @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user + end + + def invite + @invite ||= @current_devise_profil.invites + end + + def valides + @valides ||= @current_devise_profil.dossiers.valides + end + + def en_instruction + @en_instruction ||= @current_devise_profil.dossiers.en_instruction + end + + def termine + @termine ||= @current_devise_profil.dossiers.termine + end +end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_state_description.html.haml b/app/views/backoffice/dossiers/_state_description.html.haml new file mode 100644 index 000000000..c4c2368b9 --- /dev/null +++ b/app/views/backoffice/dossiers/_state_description.html.haml @@ -0,0 +1,19 @@ +#state_description.row{style:'width: 50%; margin-left: auto; margin-right: auto'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + -if dossiers_list_facade.liste == 'nouveaux' + plop + -elsif dossiers_list_facade.liste == 'a_traiter' + plop + -elsif dossiers_list_facade.liste == 'en_attente' + plop + -elsif dossiers_list_facade.liste == 'deposes' + plop + -elsif dossiers_list_facade.liste == 'a_instruire' + plop + -elsif dossiers_list_facade.liste == 'termine' + plop diff --git a/app/views/backoffice/dossiers/index.html.haml b/app/views/backoffice/dossiers/index.html.haml index f6156379e..c4fab90de 100644 --- a/app/views/backoffice/dossiers/index.html.haml +++ b/app/views/backoffice/dossiers/index.html.haml @@ -4,3 +4,7 @@ = render partial: 'onglets' = smart_listing_render :dossiers + + %br + %br + = render partial: 'state_description', locals: {dossiers_list_facade: @dossiers_list_facade} diff --git a/app/views/users/dossiers/_onglets.html.haml b/app/views/users/dossiers/_onglets.html.haml index afd027e40..7c6e5fc83 100644 --- a/app/views/users/dossiers/_onglets.html.haml +++ b/app/views/users/dossiers/_onglets.html.haml @@ -1,33 +1,55 @@ %h1 Mes dossiers -%br +%br #onglets %ul.nav.nav-tabs - %li{ class: @a_traiter_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'a_traiter')}"} - %h5.text-danger - = "À traiter " - .badge.progress-bar-danger - = @dossiers_a_traiter_total - - %li{ class: @en_attente_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'en_attente')}"} + %li{ class: @dossiers_list_facade.nouveaux_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'nouveaux')}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers qui n\'ont pas encore été vus par votre accompagnateur.'} %h5.text-info - ="En attente " + = "Nouveau" .badge.progress-bar-info - = @dossiers_en_attente_total + = @dossiers_list_facade.nouveaux_total - %li{ class: @termine_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'termine')}"} + %li{ class: @dossiers_list_facade.a_traiter_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} + %h5.text-danger + = "Action requise" + .badge.progress-bar-danger + = @dossiers_list_facade.a_traiter_total + + %li{ class: @dossiers_list_facade.en_attente_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'en_attente')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours de relecture par votre accompagnateur.'} + %h5.text-default + ="Etude en cours" + .badge.progress-bar-default + = @dossiers_list_facade.en_attente_total + + %li{ class: @dossiers_list_facade.valides_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'valides')}", 'data-toggle' => :tooltip, title: 'Les dossiers relus par votre accompagnateur pouvant être déposés pour instruction.'} + %h5.text-purple + ="À déposer" + .badge.progress-bar-purple + = @dossiers_list_facade.valides_total + + %li{ class: @dossiers_list_facade.en_instruction_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'instruction par l\'administration compétante.'} + %h5.text-default + ="En instruction" + .badge.progress-bar-default + = @dossiers_list_facade.en_instruction_total + + %li{ class: @dossiers_list_facade.termine_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'termine')}", 'data-toggle' => :tooltip, title: 'Les dossiers cloturés qui peuvent être "Accepté", "Refusé" ou "Sans suite".'} %h5.text-success - = "Terminé" + = "Cloturé" .badge.progress-bar-success - = @dossiers_termine_total + = @dossiers_list_facade.termine_total - %li{ class: @invite_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'invite')}"} - %h5{style: 'color: #696969'} - = "Invitation" - .badge{style: 'background-color: #696969'} - = @dossiers_invite_total + %ul.nav.nav-tabs.navbar-right{style:'border-bottom: none;'} + %li{ class: @dossiers_list_facade.invite_class } + %a{:href => "#{url_for users_dossiers_path(liste: 'invite')}"} + %h5.text-warning + = "Invitation" + .badge.progress-bar-warning + = @dossiers_list_facade.invite_total %br diff --git a/app/views/users/dossiers/_state_description.html.haml b/app/views/users/dossiers/_state_description.html.haml new file mode 100644 index 000000000..d76a583b9 --- /dev/null +++ b/app/views/users/dossiers/_state_description.html.haml @@ -0,0 +1,45 @@ +#state_description.row{style:'width: 55%; margin-left: auto; margin-right: auto'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + -if dossiers_list_facade.liste == 'nouveaux' + Les dossiers présents dans cette liste + %b + n'ont pas encore été ouverts + par votre accompagnteur. Une notification vous sera envoyée quand votre demande aura été étudiée. + -elsif dossiers_list_facade.liste == 'a_traiter' + Les dossiers présents dans cette liste + %b + attendent une action de votre part. + Plus d'informations vous sont généralement données par votre accompagnateur dans le flux de commentaires du dossier. + -elsif dossiers_list_facade.liste == 'en_attente' + Les dossiers présents dans cette liste sont + %b + en cours de relecture par votre accompagnateur. + Il reviendra vers vous si des informations ou documents sont manquants pour la future instruction de votre dossier. + -elsif dossiers_list_facade.liste == 'valides' + Les dossiers présents dans cette liste ont été + %b + relus et considérés comme complet + pour instruction par votre accompagnateur. Ceux-ci ne peuvent maintenant plus être modifié. Il faut que vous procédiez à leurs dépôts afin qu'une décision finale soit rendue. + -elsif dossiers_list_facade.liste == 'en_instruction' + Les dossiers présents dans cette liste sont + %b + en cours de réception + ou + %b + en cours d'instruction + par l'administration compétente. Une notification vous sera envoyée une fois qu'une décision aura été rendue. + -elsif dossiers_list_facade.liste == 'termine' + Les dossiers présents dans cette liste sont ceux qui ont été instruits par l'admnistration et + %b + une décision finale a été rendue. + Ils peuvent posséder trois états différents : Accepté, Refusé ou Sans Suite. + -elsif dossiers_list_facade.liste == 'invite' + Les dossiers présents dans cete liste sont ceux + %b + auxquels vous avez été invités + à participer afin d'émettre un avis et/ou à founir des documents complétmentaires. diff --git a/app/views/users/dossiers/index.html.haml b/app/views/users/dossiers/index.html.haml index a75910beb..f7931ed8f 100644 --- a/app/views/users/dossiers/index.html.haml +++ b/app/views/users/dossiers/index.html.haml @@ -1,4 +1,8 @@ #users_index = render partial: 'onglets' - = smart_listing_render :dossiers \ No newline at end of file + = smart_listing_render :dossiers + + %br + %br + = render partial: 'state_description', locals: {dossiers_list_facade: @dossiers_list_facade} diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index 0b36400c6..381e607fe 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -75,11 +75,10 @@ describe 'users/dossiers/index.html.haml', type: :view do it { is_expected.to have_css('#users_index') } describe 'dossier initiated is present' do - pending - # it { is_expected.to have_content(dossier.procedure.libelle) } - # it { is_expected.to have_content(dossier.entreprise.raison_sociale) } - # it { is_expected.to have_content(dossier.display_state) } - # it { is_expected.to have_content(dossier.last_update) } + it { is_expected.to have_content(dossier.procedure.libelle) } + it { is_expected.to have_content(dossier.entreprise.raison_sociale) } + it { is_expected.to have_content(dossier.display_state) } + it { is_expected.to have_content(dossier.last_update) } end describe 'dossier replied and closed are not present' do From 6cf6832c01cb930b8df0b630d7ed30651fa76a0b Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 18 Aug 2016 16:06:24 +0200 Subject: [PATCH 03/53] Migrate to Rails 4.2.7.1 --- Gemfile | 2 +- Gemfile.lock | 86 ++++++++++++++++++----------------- spec/models/procedure_spec.rb | 4 +- 3 files changed, 47 insertions(+), 45 deletions(-) diff --git a/Gemfile b/Gemfile index c0d4b144e..c5623d59e 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source 'https://rubygems.org' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' -gem 'rails', '4.2.5.2' +gem 'rails', '4.2.7.1' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' diff --git a/Gemfile.lock b/Gemfile.lock index 325952d07..a95cf764c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -10,38 +10,38 @@ GEM remote: https://rubygems.org/ specs: CFPropertyList (2.3.2) - actionmailer (4.2.5.2) - actionpack (= 4.2.5.2) - actionview (= 4.2.5.2) - activejob (= 4.2.5.2) + actionmailer (4.2.7.1) + actionpack (= 4.2.7.1) + actionview (= 4.2.7.1) + activejob (= 4.2.7.1) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.5.2) - actionview (= 4.2.5.2) - activesupport (= 4.2.5.2) + actionpack (4.2.7.1) + actionview (= 4.2.7.1) + activesupport (= 4.2.7.1) rack (~> 1.6) rack-test (~> 0.6.2) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.5.2) - activesupport (= 4.2.5.2) + actionview (4.2.7.1) + activesupport (= 4.2.7.1) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) active_model_serializers (0.8.3) activemodel (>= 3.0) - activejob (4.2.5.2) - activesupport (= 4.2.5.2) + activejob (4.2.7.1) + activesupport (= 4.2.7.1) globalid (>= 0.3.0) - activemodel (4.2.5.2) - activesupport (= 4.2.5.2) + activemodel (4.2.7.1) + activesupport (= 4.2.7.1) builder (~> 3.1) - activerecord (4.2.5.2) - activemodel (= 4.2.5.2) - activesupport (= 4.2.5.2) + activerecord (4.2.7.1) + activemodel (= 4.2.7.1) + activesupport (= 4.2.7.1) arel (~> 6.0) - activesupport (4.2.5.2) + activesupport (4.2.7.1) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) @@ -112,7 +112,7 @@ GEM execjs coffee-script-source (1.9.1.1) columnize (0.9.0) - concurrent-ruby (1.0.1) + concurrent-ruby (1.0.2) crack (0.4.2) safe_yaml (~> 1.0.0) css_splitter (0.4.4) @@ -282,7 +282,7 @@ GEM font-awesome-rails (4.4.0.0) railties (>= 3.2, < 5.0) formatador (0.2.5) - globalid (0.3.6) + globalid (0.3.7) activesupport (>= 4.1.0) guard (2.13.0) formatador (>= 0.2.4) @@ -357,23 +357,24 @@ GEM loofah (2.0.3) nokogiri (>= 1.5.9) lumberjack (1.0.9) - mail (2.6.3) - mime-types (>= 1.16, < 3) + mail (2.6.4) + mime-types (>= 1.16, < 4) mailjet (1.1.0) activesupport (>= 3.1.0) rack (>= 1.4.0) rest-client maruku (0.7.2) method_source (0.8.2) - mime-types (2.99.1) - mini_portile2 (2.0.0) - minitest (5.8.4) + mime-types (2.99.2) + mini_portile2 (2.1.0) + minitest (5.9.0) multi_json (1.11.2) multipart-post (2.0.0) nenv (0.2.0) netrc (0.10.3) - nokogiri (1.6.7.2) - mini_portile2 (~> 2.0.0.rc2) + nokogiri (1.6.8) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) notiffany (0.0.8) nenv (~> 0.1) shellany (~> 0.0) @@ -400,6 +401,7 @@ GEM parser (2.2.2.2) ast (>= 1.1, < 3.0) pg (0.18.2) + pkg-config (1.1.7) poltergeist (1.6.0) capybara (~> 2.1) cliver (~> 0.3.1) @@ -423,16 +425,16 @@ GEM rack-test (0.6.3) rack (>= 1.0) railroady (1.3.0) - rails (4.2.5.2) - actionmailer (= 4.2.5.2) - actionpack (= 4.2.5.2) - actionview (= 4.2.5.2) - activejob (= 4.2.5.2) - activemodel (= 4.2.5.2) - activerecord (= 4.2.5.2) - activesupport (= 4.2.5.2) + rails (4.2.7.1) + actionmailer (= 4.2.7.1) + actionpack (= 4.2.7.1) + actionview (= 4.2.7.1) + activejob (= 4.2.7.1) + activemodel (= 4.2.7.1) + activerecord (= 4.2.7.1) + activesupport (= 4.2.7.1) bundler (>= 1.3.0, < 2.0) - railties (= 4.2.5.2) + railties (= 4.2.7.1) sprockets-rails rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) @@ -442,14 +444,14 @@ GEM rails-deprecated_sanitizer (>= 1.0.1) rails-html-sanitizer (1.0.3) loofah (~> 2.0) - railties (4.2.5.2) - actionpack (= 4.2.5.2) - activesupport (= 4.2.5.2) + railties (4.2.7.1) + actionpack (= 4.2.7.1) + activesupport (= 4.2.7.1) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.0.0) raindrops (0.13.0) - rake (10.5.0) + rake (11.2.2) rb-fsevent (0.9.6) rb-inotify (0.9.5) ffi (>= 0.5.0) @@ -547,10 +549,10 @@ GEM spring (1.3.6) spring-commands-rspec (1.0.4) spring (>= 0.9.1) - sprockets (3.5.2) + sprockets (3.7.0) concurrent-ruby (~> 1.0) rack (> 1, < 3) - sprockets-rails (3.0.3) + sprockets-rails (3.1.1) actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) @@ -665,7 +667,7 @@ DEPENDENCIES poltergeist pry-byebug railroady - rails (= 4.2.5.2) + rails (= 4.2.7.1) rest-client rgeo-geojson rspec-rails (~> 3.0) diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index 6e4f6fdbb..c2658a3e8 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -175,7 +175,7 @@ describe Procedure do end it 'is correctly set in ProcedurePath table' do - expect(ProcedurePath.count(path: procedure.path)).to eq(1) + expect(ProcedurePath.where(path: procedure.path).count.to eq(1) expect(procedure_path.procedure_id).to eq(procedure.id) expect(procedure_path.administrateur_id).to eq(procedure.administrateur_id) end @@ -196,7 +196,7 @@ describe Procedure do end it 'is not in ProcedurePath table anymore' do - expect(ProcedurePath.count(path: procedure.path)).to eq(0) + expect(ProcedurePath.where(path: procedure.path).count).to eq(0) expect(ProcedurePath.find_by_procedure_id(procedure.id)).to be_nil end end From c4420cd6bc6f372bd5c22e40e96f82e97f74235c Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 12:37:24 +0200 Subject: [PATCH 04/53] Fix seeds superadmin password changement --- db/seeds/super_admin.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/db/seeds/super_admin.rb b/db/seeds/super_admin.rb index 309eb8252..93a6ccee2 100644 --- a/db/seeds/super_admin.rb +++ b/db/seeds/super_admin.rb @@ -1 +1,7 @@ -Administration.create(email: SUPERADMIN.email, password: SUPERADMIN.password) \ No newline at end of file +begin + Administration.create!(email: SUPERADMIN.email, password: SUPERADMIN.password) +rescue ActiveRecord::RecordInvalid + admin = Administration.find_by_email(SUPERADMIN.email) + admin.password = SUPERADMIN.password + admin.save +end From 7140d79f64a7249ca658c36c6e938635a1cfe748 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 14:00:34 +0200 Subject: [PATCH 05/53] Warning platform staging --- app/assets/stylesheets/application.scss | 11 +++++++++++ app/views/layouts/_navbar.html.haml | 15 +++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 45ba82428..8f625624f 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -93,6 +93,17 @@ body { z-index: 10; } +.beta_staging { + background-color: #B00100 !important; +} + +.staging_warning { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + #sign_out { decorate: none; box-shadow: none; diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 6ed7c1bc6..420aa17ac 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -1,5 +1,8 @@ -#beta - Beta +#beta{class:(Rails.env == 'production' ? '' : 'beta_staging')} + - if Rails.env == 'production' + Beta + - else + Env Test = image_tag('marianne_small.png', class: 'logo') %a{href: '/'} = image_tag('logo-tps.png', class: 'logo') @@ -8,6 +11,7 @@ Mes Dossiers -elsif administrateur_signed_in? Mes Procédures + #sign_out -if gestionnaire_signed_in? = render partial: 'gestionnaires/login_banner' @@ -31,3 +35,10 @@ = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' = link_to "Administrateur", '/administrateurs/sign_in', method: :get, :class => 'btn btn-md' + +- if Rails.env != 'production' + %div.staging_warning + %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune procédure présente sur cette plateforme ne pourra être transférée sur l'environnement de production afin de les utiliser au quotidien.", 'data-toggle' => 'tooltip'} + Vous vous trouvez actuellement sur la plateforme de test. + %div.badge.progress-bar-danger + ? From 19ee3af273fcab224660e94e6a7f8a42d0a2aaa6 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 14:15:21 +0200 Subject: [PATCH 06/53] =?UTF-8?q?Ajust=C3=A9=20warning=20staging=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_navbar.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 420aa17ac..2849be7cf 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -38,7 +38,7 @@ - if Rails.env != 'production' %div.staging_warning - %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune procédure présente sur cette plateforme ne pourra être transférée sur l'environnement de production afin de les utiliser au quotidien.", 'data-toggle' => 'tooltip'} + %b{style:'color: #B00100', 'data-placement' => 'bottom', 'data-original-title' => "Aucune donnée présente sur cette plateforme ne pourra être transférée sur l'environnement final de production.", 'data-toggle' => 'tooltip'} Vous vous trouvez actuellement sur la plateforme de test. %div.badge.progress-bar-danger ? From b661a2eb386119f1c3d31fd765ad11a82736dc67 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 16:10:48 +0200 Subject: [PATCH 07/53] Updated test for new user status UI --- Gemfile | 2 +- Gemfile.lock | 16 +- app/facades/dossiers_list_facades.rb | 4 +- app/models/dossier.rb | 9 + app/services/dossiers_list_user_service.rb | 2 +- .../dossiers/_state_description.html.haml | 23 ++- app/views/users/dossiers/_onglets.html.haml | 2 +- spec/features/backoffice/onglets_link_spec.rb | 28 ++- spec/features/users/list_dossiers_spec.rb | 2 +- spec/features/users/onglets_link_spec.rb | 102 ++++++++++ spec/models/procedure_spec.rb | 3 +- .../users/dossiers/index_html.haml_spec.rb | 184 ++++++++++-------- 12 files changed, 269 insertions(+), 108 deletions(-) create mode 100644 spec/features/users/onglets_link_spec.rb diff --git a/Gemfile b/Gemfile index c5623d59e..e9897f411 100644 --- a/Gemfile +++ b/Gemfile @@ -132,7 +132,7 @@ group :development, :test do gem "nyan-cat-formatter" - gem 'parallel_tests' + gem 'parallel_tests', '~> 1.9.0' gem 'brakeman', require: false # Deploy diff --git a/Gemfile.lock b/Gemfile.lock index a95cf764c..c7f277ceb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -115,7 +115,7 @@ GEM concurrent-ruby (1.0.2) crack (0.4.2) safe_yaml (~> 1.0.0) - css_splitter (0.4.4) + css_splitter (0.4.5) sprockets (>= 2.0.0) database_cleaner (1.4.1) debug_inspector (0.0.2) @@ -395,7 +395,7 @@ GEM openstack (2.0.2) json orm_adapter (0.5.0) - parallel (1.6.1) + parallel (1.9.0) parallel_tests (1.9.0) parallel parser (2.2.2.2) @@ -510,13 +510,13 @@ GEM sexp_processor (~> 4.1) rubyzip (1.1.7) safe_yaml (1.0.4) - sass (3.4.16) - sass-rails (5.0.3) - railties (>= 4.0.0, < 5.0) + sass (3.4.22) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) - tilt (~> 1.1) + tilt (>= 1.1, < 3) sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) @@ -569,7 +569,7 @@ GEM ref thor (0.19.1) thread_safe (0.3.5) - tilt (1.4.1) + tilt (2.0.5) timecop (0.7.3) trollop (2.1.2) turbolinks (2.5.3) @@ -662,7 +662,7 @@ DEPENDENCIES nyan-cat-formatter openid_connect openstack - parallel_tests + parallel_tests (~> 1.9.0) pg poltergeist pry-byebug diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 76f2d265f..576e4d55a 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -65,12 +65,12 @@ class DossiersListFacades end def a_traiter_total - service.waiting_for_gestionnaire.count if gestionnaire? + return service.waiting_for_gestionnaire.count if gestionnaire? service.waiting_for_user.count if user? end def en_attente_total - service.waiting_for_user.count if gestionnaire? + return service.waiting_for_user.count if gestionnaire? service.waiting_for_gestionnaire.count if user? end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 914bc1ca8..051438c48 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -41,6 +41,7 @@ class Dossier < ActiveRecord::Base NOUVEAUX = %w(initiated) WAITING_FOR_GESTIONNAIRE = %w(updated) WAITING_FOR_USER = %w(replied validated) + WAITING_FOR_USER_WITHOUT_VALIDATED = %w(replied) VALIDES = %w(validated) DEPOSES = %w(submitted) EN_INSTRUCTION = %w(submitted received) @@ -150,6 +151,10 @@ class Dossier < ActiveRecord::Base WAITING_FOR_USER.include?(state) end + def waiting_for_user_without_validated? + WAITING_FOR_USER_WITHOUT_VALIDATED.include?(state) + end + def deposes? DEPOSES.include?(state) end @@ -182,6 +187,10 @@ class Dossier < ActiveRecord::Base where(state: WAITING_FOR_USER, archived: false).order("updated_at #{order}") end + def self.waiting_for_user_without_validated order = 'ASC' + where(state: WAITING_FOR_USER_WITHOUT_VALIDATED, archived: false).order("updated_at #{order}") + end + def self.valides order = 'ASC' where(state: VALIDES, archived: false).order("updated_at #{order}") end diff --git a/app/services/dossiers_list_user_service.rb b/app/services/dossiers_list_user_service.rb index d910d0cb8..5fde39d81 100644 --- a/app/services/dossiers_list_user_service.rb +++ b/app/services/dossiers_list_user_service.rb @@ -23,7 +23,7 @@ class DossiersListUserService end def waiting_for_user - @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user + @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user_without_validated end def invite diff --git a/app/views/backoffice/dossiers/_state_description.html.haml b/app/views/backoffice/dossiers/_state_description.html.haml index c4c2368b9..e1cf22e9c 100644 --- a/app/views/backoffice/dossiers/_state_description.html.haml +++ b/app/views/backoffice/dossiers/_state_description.html.haml @@ -6,14 +6,25 @@ .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} .col-md-11.col-lg-11 -if dossiers_list_facade.liste == 'nouveaux' - plop + Tous les dossiers présents dans cette liste sont ceux qui + %b + n'ont jamais été ouvert par votre service. + Il attende une première lecture et intervention de votre part. -elsif dossiers_list_facade.liste == 'a_traiter' - plop + Tous les dossiers présents dans cette liste sont ceux qui + %b + attendent une action de votre part. + Cela peut être par exemple une demande client ou une relecture pour validation de complétude. -elsif dossiers_list_facade.liste == 'en_attente' - plop + Tous les dossiers présents dans cette liste sont ceux qui requière une action de la part de l'usager. À priori, vous n'avez donc pas d'intervention particulière à réaliser. -elsif dossiers_list_facade.liste == 'deposes' - plop + Tous les dossiers présents dans cette liste ont été + %b + officiellement déposé par l'usager pour instruction. + Il faut donc que vous confirmiez par "accusé de réception" la bonne réception de toutes les informations et documents demandés avant instruction finale. -elsif dossiers_list_facade.liste == 'a_instruire' - plop + Tous les dossiers présents dans cette liste sont à instruire. Ceux sont tous les dossiers + %b + qui ont reçu bonne réception. -elsif dossiers_list_facade.liste == 'termine' - plop + Tous les dossiers présents dans cette liste sont considérés comme cloturé car ils ont tous reçu un verdict final qui peut être "Validé", "Refusé" ou "Sans suite". diff --git a/app/views/users/dossiers/_onglets.html.haml b/app/views/users/dossiers/_onglets.html.haml index 7c6e5fc83..196d9571f 100644 --- a/app/views/users/dossiers/_onglets.html.haml +++ b/app/views/users/dossiers/_onglets.html.haml @@ -6,7 +6,7 @@ %li{ class: @dossiers_list_facade.nouveaux_class } %a{:href => "#{url_for users_dossiers_path(liste: 'nouveaux')}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers qui n\'ont pas encore été vus par votre accompagnateur.'} %h5.text-info - = "Nouveau" + = "Nouveaux" .badge.progress-bar-info = @dossiers_list_facade.nouveaux_total diff --git a/spec/features/backoffice/onglets_link_spec.rb b/spec/features/backoffice/onglets_link_spec.rb index b3aa61e86..b88c9347c 100644 --- a/spec/features/backoffice/onglets_link_spec.rb +++ b/spec/features/backoffice/onglets_link_spec.rb @@ -4,7 +4,21 @@ feature 'on click on tabs button' do let(:administrateur) { create(:administrateur) } let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } + let(:procedure) { create :procedure, administrateur: administrateur } + before do + create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') + create(:dossier, :with_entreprise, procedure: procedure, state: 'replied') + create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') + create(:dossier, :with_entreprise, procedure: procedure, state: 'validated') + create(:dossier, :with_entreprise, procedure: procedure, state: 'submitted') + create(:dossier, :with_entreprise, procedure: procedure, state: 'received') + create(:dossier, :with_entreprise, procedure: procedure, state: 'closed') + create(:dossier, :with_entreprise, procedure: procedure, state: 'refused') + create(:dossier, :with_entreprise, procedure: procedure, state: 'without_continuation') + + create :assign_to, gestionnaire: gestionnaire, procedure: procedure + login_as gestionnaire, scope: :gestionnaire end @@ -12,7 +26,7 @@ feature 'on click on tabs button' do context 'when he click on tabs nouveaux' do before do visit backoffice_dossiers_url(liste: :nouveaux) - page.click_on 'Nouveaux 0' + page.click_on 'Nouveaux 1' end scenario 'it redirect to backoffice dossier termine' do @@ -23,7 +37,7 @@ feature 'on click on tabs button' do context 'when he click on tabs a traite' do before do visit backoffice_dossiers_url(liste: :a_traiter) - page.click_on 'Action requise 0' + page.click_on 'Action requise 1' end scenario 'it redirect to backoffice dossier termine' do @@ -34,7 +48,7 @@ feature 'on click on tabs button' do context 'when he click on tabs en attente' do before do visit backoffice_dossiers_url(liste: :en_attente) - page.click_on 'Attente usager 0' + page.click_on 'Attente usager 2' end scenario 'it redirect to backoffice dossier en attente' do @@ -44,8 +58,8 @@ feature 'on click on tabs button' do context 'when he click on tabs a receptionner' do before do - visit backoffice_dossiers_url(liste: :nouveaux) - page.click_on 'À réceptionner 0' + visit backoffice_dossiers_url(liste: :deposes) + page.click_on 'À réceptionner 1' end scenario 'it redirect to backoffice dossier a_receptionner' do @@ -56,7 +70,7 @@ feature 'on click on tabs button' do context 'when he click on tabs a instruire' do before do visit backoffice_dossiers_url(liste: :a_instruire) - page.click_on 'À instruire 0' + page.click_on 'À instruire 1' end scenario 'it redirect to backoffice dossier termine' do @@ -67,7 +81,7 @@ feature 'on click on tabs button' do context 'when he click on tabs termine' do before do visit backoffice_dossiers_url(liste: :termine) - page.click_on 'Terminé 0' + page.click_on 'Terminé 3' end scenario 'it redirect to backoffice dossier termine' do diff --git a/spec/features/users/list_dossiers_spec.rb b/spec/features/users/list_dossiers_spec.rb index 22d0c1060..acf68a384 100644 --- a/spec/features/users/list_dossiers_spec.rb +++ b/spec/features/users/list_dossiers_spec.rb @@ -8,7 +8,7 @@ feature 'user access to the list of his dossier' do let!(:dossier2) { create(:dossier, :with_entreprise) } before do - dossier1.update_column(:updated_at, "19/07/2016 15:35".to_time) + dossier1.update_column(:updated_at, "19/07/2052 15:35".to_time) dossier1.entreprise.update_column(:raison_sociale, 'PLOP') last_updated_dossier.entreprise.update_column(:raison_sociale, 'PLIP') diff --git a/spec/features/users/onglets_link_spec.rb b/spec/features/users/onglets_link_spec.rb new file mode 100644 index 000000000..4e2220a40 --- /dev/null +++ b/spec/features/users/onglets_link_spec.rb @@ -0,0 +1,102 @@ +require 'spec_helper' + +feature 'on click on tabs button' do + let(:user) { create :user } + + let(:dossier_invite) { create(:dossier, :with_entreprise, user: create(:user), state: 'initiated') } + + before do + create(:dossier, :with_entreprise, user: user, state: 'initiated') + create(:dossier, :with_entreprise, user: user, state: 'replied') + create(:dossier, :with_entreprise, user: user, state: 'updated') + create(:dossier, :with_entreprise, user: user, state: 'validated') + create(:dossier, :with_entreprise, user: user, state: 'submitted') + create(:dossier, :with_entreprise, user: user, state: 'received') + create(:dossier, :with_entreprise, user: user, state: 'closed') + create(:dossier, :with_entreprise, user: user, state: 'refused') + create(:dossier, :with_entreprise, user: user, state: 'without_continuation') + + create :invite, dossier: dossier_invite, user: user + + login_as user, scope: :user + end + + context 'when user is logged in' do + context 'when he click on tabs nouveaux' do + before do + visit users_dossiers_url(liste: :nouveaux) + page.click_on 'Nouveaux 1' + end + + scenario 'it redirect to users dossier termine' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs a traite' do + before do + visit users_dossiers_url(liste: :a_traiter) + page.click_on 'Action requise 1' + end + + scenario 'it redirect to users dossier termine' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs en attente' do + before do + visit users_dossiers_url(liste: :en_attente) + page.click_on 'Etude en cours 1' + end + + scenario 'it redirect to users dossier en attente' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs a deposes' do + before do + visit users_dossiers_url(liste: :valides) + page.click_on 'À déposer 1' + end + + scenario 'it redirect to users dossier deposes' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs en instruction' do + before do + visit users_dossiers_url(liste: :en_instruction) + page.click_on 'En instruction 2' + end + + scenario 'it redirect to users dossier termine' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs termine' do + before do + visit users_dossiers_url(liste: :termine) + page.click_on 'Cloturé 3' + end + + scenario 'it redirect to users dossier termine' do + expect(page).to have_css('#users_index') + end + end + + context 'when he click on tabs invitation' do + before do + visit users_dossiers_url(liste: :invite) + page.click_on 'Invitation 1' + end + + scenario 'it redirect to users dossier invites' do + expect(page).to have_css('#users_index') + end + end + end +end \ No newline at end of file diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index c2658a3e8..0cf700164 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -175,7 +175,7 @@ describe Procedure do end it 'is correctly set in ProcedurePath table' do - expect(ProcedurePath.where(path: procedure.path).count.to eq(1) + expect(ProcedurePath.where(path: procedure.path).count).to eq(1) expect(procedure_path.procedure_id).to eq(procedure.id) expect(procedure_path.administrateur_id).to eq(procedure.administrateur_id) end @@ -214,6 +214,5 @@ describe Procedure do subject { procedure.total_dossier } it { is_expected.to eq 2 } - end end diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index 381e607fe..c6424b4d0 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -3,118 +3,144 @@ require 'spec_helper' describe 'users/dossiers/index.html.haml', type: :view do let(:user) { create(:user) } - let!(:dossier) { create(:dossier, :with_entreprise, user: user, state: 'initiated').decorate } - let!(:dossier_2) { create(:dossier, :with_entreprise, user: user, state: 'replied').decorate } - let!(:dossier_3) { create(:dossier, :with_entreprise, user: user, state: 'replied').decorate } - let!(:dossier_termine) { create(:dossier, :with_entreprise, user: user, state: 'closed').decorate } + let!(:decorate_dossier_initiated) { create(:dossier, :with_entreprise, user: user, state: 'initiated').decorate } + let!(:decorate_dossier_replied) { create(:dossier, :with_entreprise, user: user, state: 'replied').decorate } + let!(:decorate_dossier_updated) { create(:dossier, :with_entreprise, user: user, state: 'updated').decorate } + let!(:decorate_dossier_validated) { create(:dossier, :with_entreprise, user: user, state: 'validated').decorate } + let!(:decorate_dossier_submitted) { create(:dossier, :with_entreprise, user: user, state: 'submitted').decorate } + let!(:decorate_dossier_received) { create(:dossier, :with_entreprise, user: user, state: 'received').decorate } + let!(:decorate_dossier_closed) { create(:dossier, :with_entreprise, user: user, state: 'closed').decorate } + let!(:decorate_dossier_refused) { create(:dossier, :with_entreprise, user: user, state: 'refused').decorate } + let!(:decorate_dossier_without_continuation) { create(:dossier, :with_entreprise, user: user, state: 'without_continuation').decorate } + let!(:decorate_dossier_invite) { create(:dossier, :with_entreprise, user: create(:user), state: 'initiated').decorate } before do - dossier_2.entreprise.update_column(:raison_sociale, 'plip') - dossier_2.entreprise.update_column(:raison_sociale, 'plop') - dossier_3.entreprise.update_column(:raison_sociale, 'plup') - dossier_termine.entreprise.update_column(:raison_sociale, 'plap') + decorate_dossier_replied.entreprise.update_column(:raison_sociale, 'plap') + decorate_dossier_updated.entreprise.update_column(:raison_sociale, 'plep') + decorate_dossier_validated.entreprise.update_column(:raison_sociale, 'plip') + decorate_dossier_submitted.entreprise.update_column(:raison_sociale, 'plop') + decorate_dossier_received.entreprise.update_column(:raison_sociale, 'plup') + decorate_dossier_closed.entreprise.update_column(:raison_sociale, 'plyp') + decorate_dossier_refused.entreprise.update_column(:raison_sociale, 'plzp') + decorate_dossier_without_continuation.entreprise.update_column(:raison_sociale, 'plnp') + + create :invite, dossier: decorate_dossier_invite, user: user end - describe 'params liste is a_traiter' do - let(:dossiers_list) { user.dossiers.waiting_for_user('DESC') } - + shared_examples 'check_tab_content' do before do sign_in user + assign :dossiers_list_facade, (DossiersListFacades.new user, liste) assign(:dossiers, (smart_listing_create :dossiers, - user.dossiers.waiting_for_user('DESC'), + dossiers_to_display, partial: "users/dossiers/list", array: true)) - assign(:liste, 'a_traiter') - assign(:dossiers_a_traiter_total, '1') - assign(:dossiers_en_attente_total, '2') - assign(:dossiers_termine_total, '1') - render end subject { rendered } - it { is_expected.to have_css('#users_index') } - - describe 'dossier replied is present' do - it { is_expected.to have_content(dossier_2.procedure.libelle) } - it { is_expected.to have_content(dossier_2.entreprise.raison_sociale) } - it { is_expected.to have_content(dossier_2.display_state) } - it { is_expected.to have_content(dossier_2.last_update) } + describe 'columns' do + it { is_expected.to have_content(decorate_dossier_at_check.procedure.libelle) } + it { is_expected.to have_content(decorate_dossier_at_check.entreprise.raison_sociale) } + it { is_expected.to have_content(decorate_dossier_at_check.display_state) } + it { is_expected.to have_content(decorate_dossier_at_check.last_update) } end - describe 'dossier initiated and closed are not present' do - it { is_expected.not_to have_content(dossier.entreprise.raison_sociale) } - it { is_expected.not_to have_content(dossier_termine.entreprise.raison_sociale) } - end + it { expect(dossiers_to_display.count).to eq total_dossiers } - describe 'badges on tabs' do - it { is_expected.to have_content('À traiter 1') } - it { is_expected.to have_content('En attente 2') } - it { is_expected.to have_content('Terminé 1') } + describe 'active tab' do + it { is_expected.to have_selector(active_class) } end end - describe 'params liste is en_attente' do - let(:dossiers_list) { user.dossiers.waiting_for_gestionnaire('DESC') } + describe 'on tab nouveaux' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-info' } + let(:dossiers_to_display) { user.dossiers.nouveaux } + let(:liste) { 'nouveaux' } - before do - sign_in user - - assign(:dossiers, (smart_listing_create :dossiers, - user.dossiers.waiting_for_gestionnaire('DESC'), - partial: "users/dossiers/list", - array: true)) - assign(:liste, 'en_attente') - render - end - - subject { rendered } - - it { is_expected.to have_css('#users_index') } - - describe 'dossier initiated is present' do - it { is_expected.to have_content(dossier.procedure.libelle) } - it { is_expected.to have_content(dossier.entreprise.raison_sociale) } - it { is_expected.to have_content(dossier.display_state) } - it { is_expected.to have_content(dossier.last_update) } - end - - describe 'dossier replied and closed are not present' do - it { is_expected.not_to have_content(dossier_2.entreprise.raison_sociale) } - it { is_expected.not_to have_content(dossier_termine.entreprise.raison_sociale) } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_initiated } end end - describe 'params liste is termine' do - let(:dossiers_list) { user.dossiers.termine('DESC') } + describe 'on tab action requise' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-danger' } + let(:dossiers_to_display) { user.dossiers.waiting_for_user_without_validated } + let(:liste) { 'a_traiter' } - before do - sign_in user + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_replied } + end + end - assign(:dossiers, (smart_listing_create :dossiers, - user.dossiers.termine('DESC'), - partial: "users/dossiers/list", - array: true)) - assign(:liste, 'termine') - render + describe 'on tab etude en cours' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-default' } + let(:dossiers_to_display) { user.dossiers.waiting_for_gestionnaire } + let(:liste) { 'en_attente' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_updated } + end + end + + describe 'on tab etude a deposer' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-purple' } + let(:dossiers_to_display) { user.dossiers.valides } + let(:liste) { 'valides' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_validated } + end + end + + describe 'on tab etude en instruction' do + let(:total_dossiers) { 2 } + let(:active_class) { '.active .text-default' } + let(:dossiers_to_display) { user.dossiers.en_instruction } + let(:liste) { 'en_instruction' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_submitted } end - subject { rendered } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_received } + end + end - it { is_expected.to have_css('#users_index') } + describe 'on tab etude termine' do + let(:total_dossiers) { 3 } + let(:active_class) { '.active .text-success' } + let(:dossiers_to_display) { user.dossiers.termine } + let(:liste) { 'termine' } - describe 'dossier termine is present' do - it { is_expected.to have_content(dossier_termine.procedure.libelle) } - it { is_expected.to have_content(dossier_termine.entreprise.raison_sociale) } - it { is_expected.to have_content(dossier_termine.display_state) } - it { is_expected.to have_content(dossier_termine.last_update) } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_closed } end - describe 'dossier initiated and replied are not present' do - it { is_expected.not_to have_content(dossier.entreprise.raison_sociale) } - it { is_expected.not_to have_content(dossier_2.entreprise.raison_sociale) } + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_refused } + end + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_without_continuation } + end + end + + describe 'on tab etude invite' do + let(:total_dossiers) { 1 } + let(:active_class) { '.active .text-warning' } + let(:dossiers_to_display) { user.invites } + let(:liste) { 'invite' } + + it_behaves_like 'check_tab_content' do + let(:decorate_dossier_at_check) { decorate_dossier_invite } end end end \ No newline at end of file From 5b0e01f117a672c952e1eb084283d724de2b1a19 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 22 Aug 2016 16:36:25 +0200 Subject: [PATCH 08/53] delete filter procedure for gestionnaire --- .../backoffice/procedure_filter_controller.rb | 16 ----- app/models/dossier.rb | 4 +- app/models/gestionnaire.rb | 8 --- .../dossiers_list_gestionnaire_service.rb | 12 ++-- .../procedure_filter/index.html.haml | 16 ----- .../gestionnaires/_login_banner.html.haml | 23 ++----- app/views/layouts/_navbar.html.haml | 14 +---- app/views/users/_login_banner.html.haml | 13 ++++ config/routes.rb | 3 - ...142045_delete_value_of_filter_procedure.rb | 9 +++ db/schema.rb | 2 +- .../procedure_filter_controller_spec.rb | 62 ------------------- spec/models/gestionnaire_spec.rb | 30 --------- .../procedure_filter/index_html.haml_spec.rb | 37 ----------- spec/views/layouts/_navbar_spec.rb | 2 +- 15 files changed, 39 insertions(+), 212 deletions(-) delete mode 100644 app/controllers/backoffice/procedure_filter_controller.rb delete mode 100644 app/views/backoffice/procedure_filter/index.html.haml create mode 100644 app/views/users/_login_banner.html.haml create mode 100644 db/migrate/20160822142045_delete_value_of_filter_procedure.rb delete mode 100644 spec/controllers/backoffice/procedure_filter_controller_spec.rb delete mode 100644 spec/views/backoffice/procedure_filter/index_html.haml_spec.rb diff --git a/app/controllers/backoffice/procedure_filter_controller.rb b/app/controllers/backoffice/procedure_filter_controller.rb deleted file mode 100644 index 97f0bc57d..000000000 --- a/app/controllers/backoffice/procedure_filter_controller.rb +++ /dev/null @@ -1,16 +0,0 @@ -class Backoffice::ProcedureFilterController < ApplicationController - before_action :authenticate_gestionnaire! - - def index - @gestionnaire = current_gestionnaire - @procedures = current_gestionnaire.procedures - end - - def update - - current_gestionnaire.update_attribute(:procedure_filter, (params[:procedure_filter].nil? ? [] : params[:procedure_filter])) - - flash.notice = 'Filtre mis à jour' - redirect_to backoffice_filtres_path - end -end \ No newline at end of file diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 051438c48..120d56f35 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -235,12 +235,12 @@ class Dossier < ActiveRecord::Base #TODO refactor composed_scope = composed_scope.where( - dossiers[:id].eq_any(current_gestionnaire.dossiers_filter.ids).and\ + dossiers[:id].eq_any(current_gestionnaire.dossiers.ids).and\ dossiers[:state].does_not_match('draft').and\ dossiers[:archived].eq(false)) begin - if Float(terms) && terms.to_i <= 2147483647 && current_gestionnaire.dossiers_filter.ids.include?(terms.to_i) + if Float(terms) && terms.to_i <= 2147483647 && current_gestionnaire.dossiers.ids.include?(terms.to_i) dossier = Dossier.where("state != 'draft'").find(terms.to_i) end rescue ArgumentError, ActiveRecord::RecordNotFound diff --git a/app/models/gestionnaire.rb b/app/models/gestionnaire.rb index 5f9d2baff..68d8f30ee 100644 --- a/app/models/gestionnaire.rb +++ b/app/models/gestionnaire.rb @@ -12,18 +12,10 @@ class Gestionnaire < ActiveRecord::Base after_create :build_default_preferences_list_dossier - def dossiers_filter - dossiers.where(procedure_id: procedure_filter_list) - end - def dossiers_follow dossiers.joins(:follows).where("follows.gestionnaire_id = #{id}") end - def procedure_filter_list - procedure_filter.empty? ? procedures.pluck(:id) : procedure_filter - end - def toggle_follow_dossier dossier_id dossier = dossier_id dossier = Dossier.find(dossier_id) unless dossier_id.class == Dossier diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb index 1f72288a7..2ef534620 100644 --- a/app/services/dossiers_list_gestionnaire_service.rb +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -15,27 +15,27 @@ class DossiersListGestionnaireService end def nouveaux - @nouveaux ||= @current_devise_profil.dossiers_filter.nouveaux + @nouveaux ||= @current_devise_profil.dossiers.nouveaux end def waiting_for_gestionnaire - @waiting_for_gestionnaire ||= @current_devise_profil.dossiers_filter.waiting_for_gestionnaire + @waiting_for_gestionnaire ||= @current_devise_profil.dossiers.waiting_for_gestionnaire end def waiting_for_user - @waiting_for_user ||= @current_devise_profil.dossiers_filter.waiting_for_user + @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user end def deposes - @deposes ||= @current_devise_profil.dossiers_filter.deposes + @deposes ||= @current_devise_profil.dossiers.deposes end def a_instruire - @a_instruire ||= @current_devise_profil.dossiers_filter.a_instruire + @a_instruire ||= @current_devise_profil.dossiers.a_instruire end def termine - @termine ||= @current_devise_profil.dossiers_filter.termine + @termine ||= @current_devise_profil.dossiers.termine end def suivi diff --git a/app/views/backoffice/procedure_filter/index.html.haml b/app/views/backoffice/procedure_filter/index.html.haml deleted file mode 100644 index d616eb6a2..000000000 --- a/app/views/backoffice/procedure_filter/index.html.haml +++ /dev/null @@ -1,16 +0,0 @@ -%h2.text-primary Filtre des procédures -%h4 Sélectionnez les procédures que vous souhaitez suivre. - -= form_for @gestionnaire, url:{controller: 'backoffice/procedure_filter', action: :update } do |f| - .input-group - - @procedures.each do |procedure| - .checkbox - %label - = check_box_tag 'procedure_filter[]', procedure.id, (true if @gestionnaire.procedure_filter.include?(procedure.id)) - = procedure.libelle - %br - = submit_tag 'Valider', class: 'btn btn-primary' - -%br -%b - Aucune sélection = voir tout \ No newline at end of file diff --git a/app/views/gestionnaires/_login_banner.html.haml b/app/views/gestionnaires/_login_banner.html.haml index 0a4d33e33..40651db9d 100644 --- a/app/views/gestionnaires/_login_banner.html.haml +++ b/app/views/gestionnaires/_login_banner.html.haml @@ -1,17 +1,6 @@ -%div{ style: "decorate:none; display: flex;box-shadow:none; float:right; display: flex" } - %div{ style: "vertical-align: middle; margin-right: 10px; margin-top: auto; margin-bottom: auto;" } - = current_gestionnaire.email - .dropdown#admin_menu - %button.btn.btn-default.dropdown-toggle#dropdownMenuAdmin{ type: :button, 'data-toggle' => 'dropdown', 'aria-haspopup' => true, 'aria-expanded' => false} - %i.fa.fa-cog - %span.caret - %ul.dropdown-menu.dropdown-menu-right - %li - = link_to(backoffice_filtres_path, id: :filter) do - %i.fa.fa-list -  Filtre procédure - %li.divider{ role: :separator} - %li - = link_to('/gestionnaires/sign_out',id: :admin_sign_out, method: :delete) do - %i.fa.fa-power-off -  Se déconnecter +%div.user + + %i.fa.fa-user + = current_gestionnaire.email + + = link_to "Déconnexion", '/gestionnaires/sign_out', method: :delete, :class => 'btn btn-md' \ No newline at end of file diff --git a/app/views/layouts/_navbar.html.haml b/app/views/layouts/_navbar.html.haml index 2849be7cf..718624635 100644 --- a/app/views/layouts/_navbar.html.haml +++ b/app/views/layouts/_navbar.html.haml @@ -18,19 +18,7 @@ -elsif administrateur_signed_in? = render partial: 'administrateurs/login_banner' - elsif user_signed_in? - %div.user - -if current_user.loged_in_with_france_connect? - %div{ id: "fconnect-profile", "data-fc-logout-url" => '/users/sign_out" data-method="delete' } - %a.text-info{ href: "#" } - = "#{current_user.given_name} #{current_user.family_name}" - - = link_to "", '/users/sign_out', method: :delete, :class => 'btn fa fa-power-off off-fc-link' - - -else - %i.fa.fa-user - = current_user.email - - = link_to "Déconnexion", '/users/sign_out', method: :delete, :class => 'btn btn-md' + = render partial: 'users/login_banner' - else = link_to "Utilisateur", '/users/sign_in', method: :get, :class => 'btn btn-md' = link_to "Accompagnateur", '/gestionnaires/sign_in', method: :get, :class => 'btn btn-md' diff --git a/app/views/users/_login_banner.html.haml b/app/views/users/_login_banner.html.haml new file mode 100644 index 000000000..f467eebea --- /dev/null +++ b/app/views/users/_login_banner.html.haml @@ -0,0 +1,13 @@ +%div.user + -if current_user.loged_in_with_france_connect? + %div{ id: "fconnect-profile", "data-fc-logout-url" => '/users/sign_out" data-method="delete' } + %a.text-info{ href: "#" } + = "#{current_user.given_name} #{current_user.family_name}" + + = link_to "", '/users/sign_out', method: :delete, :class => 'btn fa fa-power-off off-fc-link' + + -else + %i.fa.fa-user + = current_user.email + + = link_to "Déconnexion", '/users/sign_out', method: :delete, :class => 'btn btn-md' \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 66e600ab1..9c582b394 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -142,9 +142,6 @@ Rails.application.routes.draw do get 'dossiers/search' => 'dossiers#search' - get 'filtres' => 'procedure_filter#index' - patch 'filtres/update' => 'procedure_filter#update' - resource :private_formulaire namespace :preference_list_dossier do diff --git a/db/migrate/20160822142045_delete_value_of_filter_procedure.rb b/db/migrate/20160822142045_delete_value_of_filter_procedure.rb new file mode 100644 index 000000000..f541aefc9 --- /dev/null +++ b/db/migrate/20160822142045_delete_value_of_filter_procedure.rb @@ -0,0 +1,9 @@ +class DeleteValueOfFilterProcedure < ActiveRecord::Migration + class Gestionnaire < ActiveRecord::Base + + end + + def change + Gestionnaire.all.update_all(procedure_filter: '{}') + end +end diff --git a/db/schema.rb b/db/schema.rb index 86f0bac18..80b669500 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160809083606) do +ActiveRecord::Schema.define(version: 20160822142045) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" diff --git a/spec/controllers/backoffice/procedure_filter_controller_spec.rb b/spec/controllers/backoffice/procedure_filter_controller_spec.rb deleted file mode 100644 index 4f8aac276..000000000 --- a/spec/controllers/backoffice/procedure_filter_controller_spec.rb +++ /dev/null @@ -1,62 +0,0 @@ -require 'spec_helper' - -describe Backoffice::ProcedureFilterController, type: :controller do - let(:gestionnaire) { create :gestionnaire } - - before do - sign_in gestionnaire - end - - describe '#GET index' do - subject { get :index } - - before do - subject - end - - it { expect(response.status).to eq 200 } - end - - describe '#PATCH update' do - context 'when procedure_filter params is not present' do - subject { patch :update } - - before do - subject - end - - it { is_expected.to redirect_to backoffice_filtres_path } - it { expect(gestionnaire.procedure_filter).to eq [] } - end - - context 'when procedure_filter attribut is not empty and procedure_filter params is not present' do - let(:gestionnaire) { create :gestionnaire, procedure_filter: [3,2] } - - subject { patch :update } - - before do - subject - gestionnaire.reload - end - - it { is_expected.to redirect_to backoffice_filtres_path } - it { expect(gestionnaire.procedure_filter).to eq [] } - end - - context 'when procedure_filter params is present' do - let (:procedure_filter) { ["3", "1"] } - - subject { patch :update, procedure_filter: procedure_filter } - - before do - subject - gestionnaire.reload - end - - it { is_expected.to redirect_to backoffice_filtres_path } - it { expect(gestionnaire.procedure_filter.size).to eq 2 } - it { expect(gestionnaire.procedure_filter).to include 1 } - it { expect(gestionnaire.procedure_filter).to include 3 } - end - end -end diff --git a/spec/models/gestionnaire_spec.rb b/spec/models/gestionnaire_spec.rb index ff8762702..dc5841a82 100644 --- a/spec/models/gestionnaire_spec.rb +++ b/spec/models/gestionnaire_spec.rb @@ -35,36 +35,6 @@ describe Gestionnaire, type: :model do it { is_expected.to have_many(:preference_list_dossiers) } end - describe '#dossiers_filter' do - let!(:dossier) { create :dossier, procedure: procedure } - - subject { gestionnaire.dossiers_filter } - - context 'before filter' do - it { expect(subject.size).to eq 1 } - end - - context 'after filter' do - let(:procedure_filter) { [procedure_2.id] } - - it { expect(subject.size).to eq 0 } - end - end - - describe '#procedure_filter_list' do - subject { gestionnaire.procedure_filter_list } - - context 'when gestionnaire procedure_filter is empty' do - it { expect(subject).to eq [procedure.id, procedure_2.id] } - end - - context 'when gestionnaire procedure_filter is no empty' do - let(:procedure_filter) { [procedure.id] } - - it { expect(subject).to eq [procedure.id] } - end - end - describe '#toggle_follow_dossier' do let!(:dossier) { create :dossier, procedure: procedure } diff --git a/spec/views/backoffice/procedure_filter/index_html.haml_spec.rb b/spec/views/backoffice/procedure_filter/index_html.haml_spec.rb deleted file mode 100644 index 3f4a8b442..000000000 --- a/spec/views/backoffice/procedure_filter/index_html.haml_spec.rb +++ /dev/null @@ -1,37 +0,0 @@ -require 'spec_helper' - -describe 'backoffice/procedure_filter/index.html.haml', type: :view do - let(:administrateur) { create :administrateur } - - before do - create :procedure, libelle: 'plip', administrateur: administrateur - create :procedure, libelle: 'plop', administrateur: administrateur - create :procedure, libelle: 'plap', administrateur: administrateur - end - - context 'when gestionnaire have already check procedure' do - let(:gestionnaire) { create(:gestionnaire, - administrateurs: [administrateur], - procedure_filter: [administrateur.procedures.first.id, - administrateur.procedures.last.id]) } - - before do - create :assign_to, gestionnaire: gestionnaire, procedure: administrateur.procedures.first - create :assign_to, gestionnaire: gestionnaire, procedure: administrateur.procedures.second - create :assign_to, gestionnaire: gestionnaire, procedure: administrateur.procedures.last - - sign_in gestionnaire - - assign(:gestionnaire, gestionnaire) - assign(:procedures, gestionnaire.procedures) - - render - end - - subject { rendered } - - it { is_expected.to have_content('Filtre des procédures') } - it { is_expected.to have_css("input[type=checkbox][value='#{gestionnaire.procedures.first.id}'][checked=checked]") } - it { is_expected.to have_css("input[type=checkbox][value='#{gestionnaire.procedures.last.id}'][checked=checked]") } - end -end \ No newline at end of file diff --git a/spec/views/layouts/_navbar_spec.rb b/spec/views/layouts/_navbar_spec.rb index 3c3156d6d..dab6e8493 100644 --- a/spec/views/layouts/_navbar_spec.rb +++ b/spec/views/layouts/_navbar_spec.rb @@ -52,7 +52,7 @@ describe 'layouts/_navbar.html.haml', type: :view do it { is_expected.not_to match(/href="\/administrateurs\/sign_in">Administrateur/) } it { is_expected.not_to match(/Mes Procédures/) } it { is_expected.to match(/Mes Dossiers/) } - it { is_expected.to match(/Se déconnecter/) } + it { is_expected.to match(/Déconnexion/) } end end From 42943aad19543edab580ee49913e562ad644164e Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 11:40:53 +0200 Subject: [PATCH 09/53] Explicit the use of lien_demarche attr --- app/assets/javascripts/procedure.js | 19 +++++++++++++++++-- app/assets/stylesheets/procedure.scss | 4 ++++ .../admin/procedures/_informations.html.haml | 5 ++++- .../dossiers/_pieces_justificatives.html.haml | 3 --- .../_pieces_justificatives.html.haml | 12 +++++++++++- app/views/users/description/_show.html.haml | 4 ++-- 6 files changed, 38 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/procedure.js b/app/assets/javascripts/procedure.js index ab110a53f..875e5f504 100644 --- a/app/assets/javascripts/procedure.js +++ b/app/assets/javascripts/procedure.js @@ -1,5 +1,10 @@ -$(document).on('page:load', buttons_api_carto); -$(document).ready(buttons_api_carto); +$(document).on('page:load', button_edit_procedure_init); +$(document).ready(button_edit_procedure_init); + +function button_edit_procedure_init(){ + buttons_api_carto(); + button_cerfa(); +} function buttons_api_carto () { @@ -9,4 +14,14 @@ function buttons_api_carto () { if ($('#procedure_module_api_carto_use_api_carto').is(':checked')) $("#modules_api_carto").show(); +} + +function button_cerfa () { + + $("#procedure_cerfa_flag").on('change', function() { + $("#procedure_lien_demarche").toggle() + }); + + if ($('#procedure_cerfa_flag').is(':checked')) + $("#procedure_lien_demarche").show(); } \ No newline at end of file diff --git a/app/assets/stylesheets/procedure.scss b/app/assets/stylesheets/procedure.scss index 9edc53793..c35fb74aa 100644 --- a/app/assets/stylesheets/procedure.scss +++ b/app/assets/stylesheets/procedure.scss @@ -1,3 +1,7 @@ #modules_api_carto { display: none; +} + +#procedure_lien_demarche{ + display: none; } \ No newline at end of file diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index 6be1a248f..264dd40b1 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -1,7 +1,7 @@ %br --{libelle: 'Libellé*', description: 'Description*', lien_demarche: 'Lien démarche', organisation: 'Organisation', direction: 'Direction'}.each do |key, value| +-{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction'}.each do |key, value| .form-group{class: ('has-error' if @procedure.errors.messages[key])} %h4 =value @@ -47,8 +47,11 @@ %label = ff.check_box :cadastre Cadastre + .col-md-6.col-lg-6 %h4 Formulaire / CERFA %label =f.check_box :cerfa_flag Activer l'envoi de formulaire / CERFA + %br + =f.text_field :lien_demarche, class: 'form-control', placeholder: 'URL vers le formulaire vierge (facultatif)' diff --git a/app/views/dossiers/_pieces_justificatives.html.haml b/app/views/dossiers/_pieces_justificatives.html.haml index 69a367896..18fedcae7 100644 --- a/app/views/dossiers/_pieces_justificatives.html.haml +++ b/app/views/dossiers/_pieces_justificatives.html.haml @@ -7,9 +7,6 @@ ='Formulaire' %td.col-lg-6.col-md-6 - if @facade.dossier.cerfa_available? - -#- if user_signed_in? - -# = 'Pièce fournie' - -#- elsif gestionnaire_signed_in? %a{ href: "#{@facade.dossier.cerfa.last.content_url}", target: '_blank' } Consulter %span{style:'margin-left:12px'} \- diff --git a/app/views/users/description/_pieces_justificatives.html.haml b/app/views/users/description/_pieces_justificatives.html.haml index e440520e8..df889d102 100644 --- a/app/views/users/description/_pieces_justificatives.html.haml +++ b/app/views/users/description/_pieces_justificatives.html.haml @@ -2,7 +2,7 @@ - if @dossier.procedure.cerfa_flag %tr %th{class:'col-lg-6'} - ='Formulaire' + ='Formulaire / CERFA' %td{class:'col-lg-5'} -if @dossier.cerfa_available? @@ -27,3 +27,13 @@ Modifier = file_field_tag "piece_justificative_#{type_de_piece_justificative.id}", accept: PieceJustificative.accept_format, :max_file_size => 3.megabytes + +#state_description.row{style:'width: 50%; margin-left:20px'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + Les documents administratifs ne sont pas indispensable afin d'initier votre dossier. + Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 463ac15e8..df4862777 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -16,8 +16,8 @@ -unless @procedure.lien_demarche.blank? %p - Formulaire / documentation de la démarche : - %a{style:'font-size:0.9em; padding-left:3px', id: 'lien_cerfa' ,href: "#{@procedure.lien_demarche}", :target => '_blank'} Accéder + Récupérer le formulaire / CERFA vierge pour mon dossier : + %a{style:'font-size:0.9em; padding-left:3px', id: 'lien_cerfa' ,href: "#{@procedure.lien_demarche}", :target => '_blank'} Télécharger %br From c700701b366b8f4552b6214e462f0b7ff8eda66b Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 12:14:25 +0200 Subject: [PATCH 10/53] Add lien_site_web attr and lien_notice attr --- app/controllers/admin/procedures_controller.rb | 2 +- .../admin/procedures/_informations.html.haml | 2 +- app/views/dossiers/etapes/_etape1.html.haml | 6 +++++- app/views/users/description/_show.html.haml | 15 ++++++++++++++- ...094151_add_lien_site_web_in_procedure_table.rb | 5 +++++ ...24094451_add_lien_notice_in_procedure_table.rb | 5 +++++ db/schema.rb | 4 +++- 7 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20160824094151_add_lien_site_web_in_procedure_table.rb create mode 100644 db/migrate/20160824094451_add_lien_notice_in_procedure_table.rb diff --git a/app/controllers/admin/procedures_controller.rb b/app/controllers/admin/procedures_controller.rb index 1f6539c6d..a6e8f7fec 100644 --- a/app/controllers/admin/procedures_controller.rb +++ b/app/controllers/admin/procedures_controller.rb @@ -187,7 +187,7 @@ class Admin::ProceduresController < AdminController private def create_procedure_params - 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) + params.require(:procedure).permit(:libelle, :description, :organisation, :direction, :lien_demarche, :lien_site_web, :lien_notice, :euro_flag, :logo, :cerfa_flag, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id) end def create_module_api_carto_params diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index 264dd40b1..c28e08a77 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -1,7 +1,7 @@ %br --{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction'}.each do |key, value| +-{libelle: 'Libellé*', description: 'Description*', organisation: 'Organisation', direction: 'Direction', lien_site_web: 'Lien site internet', lien_notice: 'Lien notice'}.each do |key, value| .form-group{class: ('has-error' if @procedure.errors.messages[key])} %h4 =value diff --git a/app/views/dossiers/etapes/_etape1.html.haml b/app/views/dossiers/etapes/_etape1.html.haml index 9b3a10025..b6353413c 100644 --- a/app/views/dossiers/etapes/_etape1.html.haml +++ b/app/views/dossiers/etapes/_etape1.html.haml @@ -17,4 +17,8 @@ = @facade.procedure.libelle %p#description_procedure{style:'width: 95%;', class: (@facade.entreprise.nil? ? '' : 'mask')} - = h @facade.procedure.description.html_safe \ No newline at end of file + = h @facade.procedure.description.html_safe + + - unless @facade.procedure.lien_site_web.blank? + .center + =link_to truncate(@facade.procedure.lien_site_web, length: 40), @facade.procedure.lien_site_web, {target: '_blank'} \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index df4862777..294884e26 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -1,6 +1,19 @@ .container#description_page - %h2 + - unless @dossier.procedure.lien_notice.blank? + #lien_notice_panel.row{style:'width: 280px; position: fixed; background-color: white; right: 5%; top: 80px;'} + .panel.panel-info{style:'margin-bottom:0'} + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-10.col-lg-10{style:'padding-right: 0px'} + %b + =link_to 'Accéder au guide', @dossier.procedure.lien_notice, {target: '_blank'} + pour remplir pour votre dossier + + %h2.text-info = @dossier.procedure.libelle + %h3 Votre dossier -#TODO use form_for diff --git a/db/migrate/20160824094151_add_lien_site_web_in_procedure_table.rb b/db/migrate/20160824094151_add_lien_site_web_in_procedure_table.rb new file mode 100644 index 000000000..3635b2cd9 --- /dev/null +++ b/db/migrate/20160824094151_add_lien_site_web_in_procedure_table.rb @@ -0,0 +1,5 @@ +class AddLienSiteWebInProcedureTable < ActiveRecord::Migration + def change + add_column :procedures, :lien_site_web, :string + end +end diff --git a/db/migrate/20160824094451_add_lien_notice_in_procedure_table.rb b/db/migrate/20160824094451_add_lien_notice_in_procedure_table.rb new file mode 100644 index 000000000..218805fee --- /dev/null +++ b/db/migrate/20160824094451_add_lien_notice_in_procedure_table.rb @@ -0,0 +1,5 @@ +class AddLienNoticeInProcedureTable < ActiveRecord::Migration + def change + add_column :procedures, :lien_notice, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index 80b669500..a6e5f6713 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160822142045) do +ActiveRecord::Schema.define(version: 20160824094451) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -276,6 +276,8 @@ ActiveRecord::Schema.define(version: 20160822142045) do t.boolean "cerfa_flag", default: false t.string "logo_secure_token" t.boolean "published", default: false, null: false + t.string "lien_site_web" + t.string "lien_notice" end create_table "quartier_prioritaires", force: :cascade do |t| From dd03b96e0c911d92707aca2ed29b0ffca2e41ac7 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 15:17:40 +0200 Subject: [PATCH 11/53] Disabled link on rich textarea --- app/assets/javascripts/bootstrap_wysihtml5.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/bootstrap_wysihtml5.js b/app/assets/javascripts/bootstrap_wysihtml5.js index 7537a1656..479404c3c 100644 --- a/app/assets/javascripts/bootstrap_wysihtml5.js +++ b/app/assets/javascripts/bootstrap_wysihtml5.js @@ -3,6 +3,6 @@ $(document).on('page:load', wysihtml5_active); function wysihtml5_active (){ $('.wysihtml5').each(function(i, elem) { - $(elem).wysihtml5({ toolbar:{ "fa": true } }); + $(elem).wysihtml5({ toolbar:{ "fa": true, "link": false } }); }); } \ No newline at end of file From 3ebdab23a9cb320f15f32a13592ed3190570af22 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 15:32:41 +0200 Subject: [PATCH 12/53] Enable french local on rich textarea --- app/assets/javascripts/bootstrap_wysihtml5.js | 2 +- app/assets/stylesheets/application.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/bootstrap_wysihtml5.js b/app/assets/javascripts/bootstrap_wysihtml5.js index 479404c3c..4f1ed7bcf 100644 --- a/app/assets/javascripts/bootstrap_wysihtml5.js +++ b/app/assets/javascripts/bootstrap_wysihtml5.js @@ -3,6 +3,6 @@ $(document).on('page:load', wysihtml5_active); function wysihtml5_active (){ $('.wysihtml5').each(function(i, elem) { - $(elem).wysihtml5({ toolbar:{ "fa": true, "link": false } }); + $(elem).wysihtml5({ toolbar:{ "fa": true, "link": false, "color": true }, "locale": "fr-FR" }); }); } \ No newline at end of file diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 8f625624f..cb7b0123c 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -18,10 +18,10 @@ *= require leaflet *= require font-awesome *= require franceconnect + *= require bootstrap-wysihtml5 */ @import "bootstrap-sprockets"; @import "bootstrap"; -@import "bootstrap-wysihtml5/bootstrap3-wysihtml5"; body { background-color: rgb(255, 255, 255); From b16c5d7beaf74557b9a2044efcfa592363915954 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 24 Aug 2016 15:51:16 +0200 Subject: [PATCH 13/53] Renate site web link on etape 1 page. --- app/views/dossiers/etapes/_etape1.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/dossiers/etapes/_etape1.html.haml b/app/views/dossiers/etapes/_etape1.html.haml index b6353413c..70c1e11fb 100644 --- a/app/views/dossiers/etapes/_etape1.html.haml +++ b/app/views/dossiers/etapes/_etape1.html.haml @@ -21,4 +21,4 @@ - unless @facade.procedure.lien_site_web.blank? .center - =link_to truncate(@facade.procedure.lien_site_web, length: 40), @facade.procedure.lien_site_web, {target: '_blank'} \ No newline at end of file + =link_to 'En savoir plus ...', @facade.procedure.lien_site_web, {target: '_blank'} \ No newline at end of file From 39df032c8c51dc5472091b1848fdb32cd22cb018 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Wed, 24 Aug 2016 17:05:38 +0200 Subject: [PATCH 14/53] Translate type de champ values --- app/models/type_de_champ.rb | 4 ++++ .../admin/types_de_champ/_fields.html.haml | 2 +- config/locales/models/type_de_champ/fr.yml | 20 +++++++++++++++++++ spec/features/admin/add_type_de_champ_spec.rb | 7 ++++--- 4 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 config/locales/models/type_de_champ/fr.yml diff --git a/app/models/type_de_champ.rb b/app/models/type_de_champ.rb index 4292aa8c7..db33a1a9c 100644 --- a/app/models/type_de_champ.rb +++ b/app/models/type_de_champ.rb @@ -26,4 +26,8 @@ class TypeDeChamp < ActiveRecord::Base validates :libelle, presence: true, allow_blank: false, allow_nil: false validates :type_champ, presence: true, allow_blank: false, allow_nil: false # validates :order_place, presence: true, allow_blank: false, allow_nil: false + + def self.type_de_champs_list_fr + type_champs.map { |champ| [ I18n.t("activerecord.attributes.type_de_champ.type_champs.#{champ.last}"), champ.first ] } + end end \ No newline at end of file diff --git a/app/views/admin/types_de_champ/_fields.html.haml b/app/views/admin/types_de_champ/_fields.html.haml index 3b9c5c6f9..649be960e 100644 --- a/app/views/admin/types_de_champ/_fields.html.haml +++ b/app/views/admin/types_de_champ/_fields.html.haml @@ -6,7 +6,7 @@ .form-group.type %h4 Type - = ff.select :type_champ, TypeDeChamp.type_champs, {}, {class: 'form-control type_champ'} + = ff.select :type_champ, TypeDeChamp.type_de_champs_list_fr, {}, {class: 'form-control type_champ'} .form-group.description %h4 Description diff --git a/config/locales/models/type_de_champ/fr.yml b/config/locales/models/type_de_champ/fr.yml new file mode 100644 index 000000000..2c53daf98 --- /dev/null +++ b/config/locales/models/type_de_champ/fr.yml @@ -0,0 +1,20 @@ +fr: + activerecord: + models: + type_de_champ: 'Type de champ' + attributes: + type_de_champ: + type_champs: + text: 'Texte' + textarea: 'Zone de texte' + date: 'Date' + datetime: 'Date et Heure' + number: 'Nombre' + checkbox: 'checkbox' + civilite: 'Civilité' + email: 'Email' + phone: 'Téléphone' + address: 'Adresse' + yes_no: 'Oui/Non' + drop_down_list: 'Menu déroulant' + header_section: 'Titre de section' \ No newline at end of file diff --git a/spec/features/admin/add_type_de_champ_spec.rb b/spec/features/admin/add_type_de_champ_spec.rb index 2540a2fcf..adbf661f9 100644 --- a/spec/features/admin/add_type_de_champ_spec.rb +++ b/spec/features/admin/add_type_de_champ_spec.rb @@ -40,11 +40,12 @@ feature 'add a new type de champs', js: true do context 'user fill another one' do let(:libelle) { 'coucou' } - let(:type_champ) { 'textarea' } + let(:type_champ_value) { 'textarea' } + let(:type_champ_label) { 'Zone de texte' } let(:description) { 'to be or not to be' } before do page.find_by_id('procedure_types_de_champ_attributes_1_libelle').set libelle - select(type_champ, from: 'procedure_types_de_champ_attributes_1_type_champ') + select(type_champ_label, from: 'procedure_types_de_champ_attributes_1_type_champ') page.find_by_id('procedure_types_de_champ_attributes_1_description').set description click_button 'Ajouter le champ' wait_for_ajax @@ -54,7 +55,7 @@ feature 'add a new type de champs', js: true do scenario 'creates another types_de_champ' do expect(page).to have_css('#procedure_types_de_champ_attributes_2_libelle') expect(subject.libelle).to eq(libelle) - expect(subject.type_champ).to eq(type_champ) + expect(subject.type_champ).to eq(type_champ_value) expect(subject.description).to eq(description) expect(subject.order_place).to eq(1) expect(procedure.types_de_champ.count).to eq(2) From e4cf25b677ddf96f91799a40c05ddfa0b7df41da Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 25 Aug 2016 12:30:15 +0200 Subject: [PATCH 15/53] Download all gestionnaire dossier with a button --- app/controllers/backoffice/dossiers_controller.rb | 8 ++++++++ app/views/backoffice/dossiers/_onglets.html.haml | 1 + config/routes.rb | 2 ++ 3 files changed, 11 insertions(+) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 9453ce3bf..d3a450bbc 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -13,6 +13,14 @@ class Backoffice::DossiersController < ApplicationController @champs = @facade.champs_private unless @facade.nil? end + def download_dossiers_tps + dossiers = current_gestionnaire.dossiers.where.not(state: :draft) + + response.headers['Content-Type'] = 'text/csv' + + render csv: dossiers, status: 200 + end + def search @search_terms = params[:q] @dossiers_search, @dossier = Dossier.search(current_gestionnaire, @search_terms) diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index dbd429e6f..2d88d5b7b 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -1,3 +1,4 @@ +=link_to 'Tous mes dossiers en CSV', backoffice_download_dossiers_tps_path, {class: 'btn btn-success btn-sm', style: 'float: right; margin-right: 4%; margin-top: 7px'} %h1 Gestion des dossiers %br diff --git a/config/routes.rb b/config/routes.rb index 9c582b394..c0be6950b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -152,6 +152,8 @@ Rails.application.routes.draw do get 'reload_pref_list' end + get 'download_dossiers_tps' => 'dossiers#download_dossiers_tps' + resources :dossiers do post 'valid' => 'dossiers#valid' post 'close' => 'dossiers#close' From 0120ce2a3211d5309c208cae0389bb7f9a311bc9 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 25 Aug 2016 15:21:25 +0200 Subject: [PATCH 16/53] Add an action to set a dossier as 'recu'. --- .../backoffice/dossiers_controller.rb | 9 +++++ app/models/dossier.rb | 8 +++- app/views/dossiers/_infos_dossier.html.haml | 7 +++- config/routes.rb | 1 + .../backoffice/dossiers_controller_spec.rb | 16 +++++++- spec/models/dossier_spec.rb | 40 +++++++++++++++++-- .../dossiers/show.html.html_spec.rb | 39 +++++++++--------- 7 files changed, 92 insertions(+), 28 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index d3a450bbc..2c19239f0 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -48,6 +48,15 @@ class Backoffice::DossiersController < ApplicationController render 'show' end + def receive + create_dossier_facade params[:dossier_id] + + @facade.dossier.next_step! 'gestionnaire', 'receive' + flash.notice = 'Dossier considéré comme reçu.' + + render 'show' + end + def close create_dossier_facade params[:dossier_id] diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 120d56f35..c8f9c454a 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -87,7 +87,7 @@ class Dossier < ActiveRecord::Base end def next_step! role, action - unless %w(initiate update comment valid submit close).include?(action) + unless %w(initiate update comment valid submit receive close).include?(action) fail 'action is not valid' end @@ -130,8 +130,12 @@ class Dossier < ActiveRecord::Base elsif initiated? validated! end - when 'close' + when 'receive' if submitted? + received! + end + when 'close' + if received? closed! end end diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 5f0238d31..0d51edced 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -66,7 +66,12 @@ = 'Valider le dossier' -elsif @facade.dossier.submitted? + = form_tag(url_for({controller: 'backoffice/dossiers', action: :receive, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do + %button#action_button.btn.btn-success + = 'Notifier de la bonne réception' + + -elsif @facade.dossier.received? = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do %button#action_button.btn.btn-success - = 'Traiter le dossier' + = 'Accepter le dossier' diff --git a/config/routes.rb b/config/routes.rb index c0be6950b..228950579 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -156,6 +156,7 @@ Rails.application.routes.draw do resources :dossiers do post 'valid' => 'dossiers#valid' + post 'receive' => 'dossiers#receive' post 'close' => 'dossiers#close' post 'invites' => '/invites#create' diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 19d5c280b..87943c6b6 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -119,12 +119,26 @@ describe Backoffice::DossiersController, type: :controller do end end - describe 'POST #close' do + describe 'POST #receive' do before do dossier.submitted! sign_in gestionnaire end + it 'change state to received' do + post :receive, dossier_id: dossier_id + + dossier.reload + expect(dossier.state).to eq('received') + end + end + + describe 'POST #close' do + before do + dossier.received! + sign_in gestionnaire + end + it 'change state to closed' do post :close, dossier_id: dossier_id diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 2ad0dfed3..7ac092ab4 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -323,10 +323,10 @@ describe Dossier do dossier.submitted! end - context 'when user is connect' do + context 'when user is connected' do let(:role) { 'user' } - context 'when is post a comment' do + context 'when he posts a comment' do let(:action) { 'comment' } it { is_expected.to eq('submitted') } @@ -336,13 +336,45 @@ describe Dossier do context 'when gestionnaire is connect' do let(:role) { 'gestionnaire' } - context 'when is post a comment' do + context 'when he posts a comment' do let(:action) { 'comment' } it { is_expected.to eq('submitted') } end - context 'when is closed the dossier' do + context 'when he receive the dossier' do + let(:action) { 'receive' } + + it { is_expected.to eq('received') } + end + end + end + + context 'when dossier is at state received' do + before do + dossier.received! + 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('received') } + 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('received') } + end + + context 'when he closes the dossier' do let(:action) { 'close' } it { is_expected.to eq('closed') } diff --git a/spec/views/backoffice/dossiers/show.html.html_spec.rb b/spec/views/backoffice/dossiers/show.html.html_spec.rb index ee4e26a5d..e02a9cea3 100644 --- a/spec/views/backoffice/dossiers/show.html.html_spec.rb +++ b/spec/views/backoffice/dossiers/show.html.html_spec.rb @@ -119,28 +119,13 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Déposé') } - it 'button Traiter le dossier is present' do + it 'button notifier de la bonne réception is present' do expect(rendered).to have_css('#action_button') - expect(rendered).to have_content('Traiter le dossier') + expect(rendered).to have_content('Notifier de la bonne réception') end it 'button Valider le dossier is not present' do - expect(rendered).not_to have_content('Valider le dossier') - end - end - - context 'when dossier have state closed' do - let(:state) { 'closed' } - - before do - render - end - - it { expect(rendered).to have_content('Accepté') } - - it 'button Valider le dossier is not present' do - expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Valider le dossier') + expect(rendered).not_to have_content('Accepter le dossier') end end @@ -153,9 +138,23 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Reçu') } - it 'button Valider le dossier is not present' do + it 'button accepter le dossier is present' do + expect(rendered).to have_content('Accepter le dossier') + end + end + + context 'when dossier have state closed' do + let(:state) { 'closed' } + + before do + render + end + + it { expect(rendered).to have_content('Accepté') } + + it 'button Accepter le dossier is not present' do expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Valider le dossier') + expect(rendered).not_to have_content('Accepter le dossier') end end From 09236f32aa8acaeb55642b86e8046a6140e70c75 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 25 Aug 2016 17:46:26 +0200 Subject: [PATCH 17/53] Add 'refuser' and 'classer sans suite' buttons --- app/assets/javascripts/application.js | 1 + .../backoffice/dossiers_controller.rb | 18 +++++++ app/models/dossier.rb | 10 +++- app/views/dossiers/_infos_dossier.html.haml | 10 +++- config/routes.rb | 2 + spec/models/dossier_spec.rb | 53 +++++++++++++++++++ .../dossiers/show.html.html_spec.rb | 21 +++++--- 7 files changed, 104 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 8c2de3421..e9049908b 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -42,6 +42,7 @@ function application_init(){ } function tooltip_init() { + $('.action_button[data-toggle="tooltip"]').tooltip({delay: { "show": 100, "hide": 100 }}); $('[data-toggle="tooltip"]').tooltip({delay: { "show": 800, "hide": 100 }}); } diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 2c19239f0..826794e2d 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -57,6 +57,24 @@ class Backoffice::DossiersController < ApplicationController render 'show' end + def refuse + create_dossier_facade params[:dossier_id] + + @facade.dossier.next_step! 'gestionnaire', 'refuse' + flash.notice = 'Dossier considéré comme refusé.' + + render 'show' + end + + def without_continuation + create_dossier_facade params[:dossier_id] + + @facade.dossier.next_step! 'gestionnaire', 'without_continuation' + flash.notice = 'Dossier considéré comme sans suite.' + + render 'show' + end + def close create_dossier_facade params[:dossier_id] diff --git a/app/models/dossier.rb b/app/models/dossier.rb index c8f9c454a..ccae17f45 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -87,7 +87,7 @@ class Dossier < ActiveRecord::Base end def next_step! role, action - unless %w(initiate update comment valid submit receive close).include?(action) + unless %w(initiate update comment valid submit receive refuse without_continuation close).include?(action) fail 'action is not valid' end @@ -138,6 +138,14 @@ class Dossier < ActiveRecord::Base if received? closed! end + when 'refuse' + if received? + refused! + end + when 'without_continuation' + if received? + without_continuation! + end end end state diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 0d51edced..3947d592e 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -71,7 +71,13 @@ = 'Notifier de la bonne réception' -elsif @facade.dossier.received? - = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do + = form_tag(url_for({controller: 'backoffice/dossiers', action: :close, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Accepter') do %button#action_button.btn.btn-success - = 'Accepter le dossier' + %i.fa.fa-check + = form_tag(url_for({controller: 'backoffice/dossiers', action: :refuse, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Refuser') do + %button#action_button.btn.btn-danger + %i.fa.fa-times + = form_tag(url_for({controller: 'backoffice/dossiers', action: :without_continuation, dossier_id: @facade.dossier.id}), class: 'form-inline action_button', method: 'POST', style: 'display:inline', 'data-toggle' => :tooltip, title: 'Classer sans suite') do + %button#action_button.btn.btn-warning + %i.fa.fa-circle-o diff --git a/config/routes.rb b/config/routes.rb index 228950579..d1f05b3c1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -157,6 +157,8 @@ Rails.application.routes.draw do resources :dossiers do post 'valid' => 'dossiers#valid' post 'receive' => 'dossiers#receive' + post 'refuse' => 'dossiers#refuse' + post 'without_continuation' => 'dossiers#without_continuation' post 'close' => 'dossiers#close' post 'invites' => '/invites#create' diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 7ac092ab4..19c46a4f1 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -382,6 +382,59 @@ describe Dossier do end end + context 'when dossier is at state refused' do + before do + dossier.refused! + 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('refused') } + 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('refused') } + end + end + end + + context 'when dossier is at state without_continuation' do + before do + dossier.without_continuation! + 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('without_continuation') } + 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('without_continuation') } + end + end + end + + context 'when dossier is at state closed' do before do dossier.closed! diff --git a/spec/views/backoffice/dossiers/show.html.html_spec.rb b/spec/views/backoffice/dossiers/show.html.html_spec.rb index e02a9cea3..657baeb83 100644 --- a/spec/views/backoffice/dossiers/show.html.html_spec.rb +++ b/spec/views/backoffice/dossiers/show.html.html_spec.rb @@ -138,8 +138,10 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Reçu') } - it 'button accepter le dossier is present' do - expect(rendered).to have_content('Accepter le dossier') + it 'button accepter / refuser / classer sans suite are present' do + expect(rendered).to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') end end @@ -153,8 +155,9 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Accepté') } it 'button Accepter le dossier is not present' do - expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Accepter le dossier') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') end end @@ -168,8 +171,9 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Sans suite') } it 'button Valider le dossier is not present' do - expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Valider le dossier') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') end end @@ -183,8 +187,9 @@ describe 'backoffice/dossiers/show.html.haml', type: :view do it { expect(rendered).to have_content('Refusé') } it 'button Valider le dossier is not present' do - expect(rendered).not_to have_css('#action_button') - expect(rendered).not_to have_content('Valider le dossier') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Accepter"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Classer sans suite"]') + expect(rendered).not_to have_css('.action_button[data-toggle="tooltip"][title="Refuser"]') end end end From fc99dc65d608d11c4cec6f2444be7123ece6e7b3 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 25 Aug 2016 18:02:56 +0200 Subject: [PATCH 18/53] Send notification emails when a dossier is closed. --- .../backoffice/dossiers_controller.rb | 6 ++ app/mailers/notification_mailer.rb | 12 ++++ .../dossier_closed.text.erb | 10 ++++ .../dossier_refused.text.erb | 10 ++++ .../dossier_without_continuation.text.erb | 10 ++++ .../backoffice/dossiers_controller_spec.rb | 56 ++++++++++++++++++- 6 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 app/views/notification_mailer/dossier_closed.text.erb create mode 100644 app/views/notification_mailer/dossier_refused.text.erb create mode 100644 app/views/notification_mailer/dossier_without_continuation.text.erb diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 826794e2d..76230a9d0 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -63,6 +63,8 @@ class Backoffice::DossiersController < ApplicationController @facade.dossier.next_step! 'gestionnaire', 'refuse' flash.notice = 'Dossier considéré comme refusé.' + NotificationMailer.dossier_refused(@facade.dossier).deliver_now! + render 'show' end @@ -72,6 +74,8 @@ class Backoffice::DossiersController < ApplicationController @facade.dossier.next_step! 'gestionnaire', 'without_continuation' flash.notice = 'Dossier considéré comme sans suite.' + NotificationMailer.dossier_without_continuation(@facade.dossier).deliver_now! + render 'show' end @@ -81,6 +85,8 @@ class Backoffice::DossiersController < ApplicationController @facade.dossier.next_step! 'gestionnaire', 'close' flash.notice = 'Dossier traité avec succès.' + NotificationMailer.dossier_closed(@facade.dossier).deliver_now! + render 'show' end diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb index eb609268b..3b9ee8bd1 100644 --- a/app/mailers/notification_mailer.rb +++ b/app/mailers/notification_mailer.rb @@ -11,6 +11,18 @@ class NotificationMailer < ApplicationMailer send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été déposé" end + def dossier_without_continuation dossier + send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été classé sans suite" + end + + def dossier_refused dossier + send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été refusé" + end + + def dossier_closed dossier + send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été accepté" + end + private def vars_mailer dossier diff --git a/app/views/notification_mailer/dossier_closed.text.erb b/app/views/notification_mailer/dossier_closed.text.erb new file mode 100644 index 000000000..57e7c03fa --- /dev/null +++ b/app/views/notification_mailer/dossier_closed.text.erb @@ -0,0 +1,10 @@ +Bonjour <%= @user.email %> + +votre dossier N°<%=@dossier.id%> déposé auprès de <%= @dossier.procedure.organisation %> a été accepté ce jour à <%= @dossier.updated_at %>. + +A tout moment, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> + +Bonne journée + +--- +L'équide TPS - tps@apientreprise.fr \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_refused.text.erb b/app/views/notification_mailer/dossier_refused.text.erb new file mode 100644 index 000000000..1c061ad32 --- /dev/null +++ b/app/views/notification_mailer/dossier_refused.text.erb @@ -0,0 +1,10 @@ +Bonjour <%= @user.email %> + +votre dossier N°<%=@dossier.id%> déposé auprès de <%= @dossier.procedure.organisation %> a été refusé ce jour à <%= @dossier.updated_at %>. + +Pour en savoir plus sur le motif du refus, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> + +Bonne journée, + +--- +L'équide TPS - tps@apientreprise.fr \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_without_continuation.text.erb b/app/views/notification_mailer/dossier_without_continuation.text.erb new file mode 100644 index 000000000..66d0604c2 --- /dev/null +++ b/app/views/notification_mailer/dossier_without_continuation.text.erb @@ -0,0 +1,10 @@ +Bonjour <%= @user.email %> + +votre dossier N°<%=@dossier.id%> déposé auprès de <%= @dossier.procedure.organisation %> a été classé sans suite ce jour à <%= @dossier.updated_at %>. + +Pour en savoir plus sur les raisons de ce classement sans suite, vous pouvez consulter le contenu de vos dossiers et les éventuels commentaires de l'administration à cette adresse : <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> + +Bonne journée, + +--- +L'équide TPS - tps@apientreprise.fr \ No newline at end of file diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 87943c6b6..13c22edff 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -133,18 +133,72 @@ describe Backoffice::DossiersController, type: :controller do end end + describe 'POST #refuse' do + before do + dossier.refused! + sign_in gestionnaire + end + + subject { post :refuse, dossier_id: dossier_id } + + it 'change state to refused' do + subject + + dossier.reload + expect(dossier.state).to eq('refused') + end + + it 'Notification email is sent' do + expect(NotificationMailer).to receive(:dossier_refused).and_return(NotificationMailer) + expect(NotificationMailer).to receive(:deliver_now!) + + subject + end + end + + describe 'POST #without_continuation' do + before do + dossier.without_continuation! + sign_in gestionnaire + end + subject { post :without_continuation, dossier_id: dossier_id } + + + it 'change state to without_continuation' do + subject + + dossier.reload + expect(dossier.state).to eq('without_continuation') + end + + it 'Notification email is sent' do + expect(NotificationMailer).to receive(:dossier_without_continuation).and_return(NotificationMailer) + expect(NotificationMailer).to receive(:deliver_now!) + + subject + end + end + describe 'POST #close' do before do dossier.received! sign_in gestionnaire end + subject { post :close, dossier_id: dossier_id } it 'change state to closed' do - post :close, dossier_id: dossier_id + subject dossier.reload expect(dossier.state).to eq('closed') end + + it 'Notification email is sent' do + expect(NotificationMailer).to receive(:dossier_closed).and_return(NotificationMailer) + expect(NotificationMailer).to receive(:deliver_now!) + + subject + end end describe 'PUT #toggle_follow' do From db511b15a82f73977a006980aed24faa684698dc Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Thu, 25 Aug 2016 18:03:05 +0200 Subject: [PATCH 19/53] Fix typos in notification emails --- app/views/notification_mailer/dossier_submitted.text.erb | 4 ++-- app/views/notification_mailer/dossier_validated.text.erb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/notification_mailer/dossier_submitted.text.erb b/app/views/notification_mailer/dossier_submitted.text.erb index ced433b16..bc05f0e26 100644 --- a/app/views/notification_mailer/dossier_submitted.text.erb +++ b/app/views/notification_mailer/dossier_submitted.text.erb @@ -1,8 +1,8 @@ Bonjour <%= @user.email %> -Nous vous confirmons que votre dossier N°<%=@dossier.id%> a été déposé aurpès de <%= @dossier.procedure.organisation %> avec succès ce jour à <%= @dossier.updated_at %>. +Nous vous confirmons que votre dossier N°<%=@dossier.id%> a été déposé auprès de <%= @dossier.procedure.organisation %> avec succès ce jour à <%= @dossier.updated_at %>. -Bonne journée +Bonne journée, --- L'équide TPS - tps@apientreprise.fr \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_validated.text.erb b/app/views/notification_mailer/dossier_validated.text.erb index f2a555ac4..adf8e4d08 100644 --- a/app/views/notification_mailer/dossier_validated.text.erb +++ b/app/views/notification_mailer/dossier_validated.text.erb @@ -2,9 +2,9 @@ Bonjour <%= @user.email %> Votre dossier N°<%=@dossier.id%> a été validé par votre accompagnateur. -Afin de finaliser son dépot, merci de vous rendre sur <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> +Afin de finaliser son dépôt, merci de vous rendre sur <%=users_dossier_recapitulatif_url(dossier_id: @dossier.id)%> -Bonne journée +Bonne journée, --- L'équide TPS - tps@apientreprise.fr \ No newline at end of file From a179c372cf1cc46d480277e453c58c9f9a60657d Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 26 Aug 2016 09:17:31 +0200 Subject: [PATCH 20/53] Ajust text --- .../description/_pieces_justificatives.html.haml | 13 +------------ app/views/users/description/_show.html.haml | 11 +++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/views/users/description/_pieces_justificatives.html.haml b/app/views/users/description/_pieces_justificatives.html.haml index df889d102..83e292f91 100644 --- a/app/views/users/description/_pieces_justificatives.html.haml +++ b/app/views/users/description/_pieces_justificatives.html.haml @@ -2,7 +2,7 @@ - if @dossier.procedure.cerfa_flag %tr %th{class:'col-lg-6'} - ='Formulaire / CERFA' + ='Formulaire / CERFA (complété et numérisé)' %td{class:'col-lg-5'} -if @dossier.cerfa_available? @@ -26,14 +26,3 @@ %span.btn.btn-sm.btn-file.btn-success Modifier = file_field_tag "piece_justificative_#{type_de_piece_justificative.id}", accept: PieceJustificative.accept_format, :max_file_size => 3.megabytes - - -#state_description.row{style:'width: 50%; margin-left:20px'} - .panel.panel-info - .panel-body.center - .row - .col-md-1.col-lg-1 - .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} - .col-md-11.col-lg-11 - Les documents administratifs ne sont pas indispensable afin d'initier votre dossier. - Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 294884e26..b6fd592f0 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -37,6 +37,17 @@ //TODO a refactorer = render partial: 'users/description/pieces_justificatives' + #state_description.row{style:'width: 50%; margin-left:20px'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + Les documents administratifs ne sont pas indispensables afin d'initier votre dossier. + Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. + + - if user_signed_in? %div{style: 'text-align:right'} From 2e613289e04cda95e866ca5a8f7f6d7233b17a10 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 26 Aug 2016 09:17:31 +0200 Subject: [PATCH 21/53] Ajust text --- .../description/_pieces_justificatives.html.haml | 13 +------------ app/views/users/description/_show.html.haml | 11 +++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/views/users/description/_pieces_justificatives.html.haml b/app/views/users/description/_pieces_justificatives.html.haml index df889d102..83e292f91 100644 --- a/app/views/users/description/_pieces_justificatives.html.haml +++ b/app/views/users/description/_pieces_justificatives.html.haml @@ -2,7 +2,7 @@ - if @dossier.procedure.cerfa_flag %tr %th{class:'col-lg-6'} - ='Formulaire / CERFA' + ='Formulaire / CERFA (complété et numérisé)' %td{class:'col-lg-5'} -if @dossier.cerfa_available? @@ -26,14 +26,3 @@ %span.btn.btn-sm.btn-file.btn-success Modifier = file_field_tag "piece_justificative_#{type_de_piece_justificative.id}", accept: PieceJustificative.accept_format, :max_file_size => 3.megabytes - - -#state_description.row{style:'width: 50%; margin-left:20px'} - .panel.panel-info - .panel-body.center - .row - .col-md-1.col-lg-1 - .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} - .col-md-11.col-lg-11 - Les documents administratifs ne sont pas indispensable afin d'initier votre dossier. - Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. \ No newline at end of file diff --git a/app/views/users/description/_show.html.haml b/app/views/users/description/_show.html.haml index 294884e26..b6fd592f0 100644 --- a/app/views/users/description/_show.html.haml +++ b/app/views/users/description/_show.html.haml @@ -37,6 +37,17 @@ //TODO a refactorer = render partial: 'users/description/pieces_justificatives' + #state_description.row{style:'width: 50%; margin-left:20px'} + .panel.panel-info + .panel-body.center + .row + .col-md-1.col-lg-1 + .fa.fa-info-circle.text-info{style:'font-size: 2em; margin-top: 20%'} + .col-md-11.col-lg-11 + Les documents administratifs ne sont pas indispensables afin d'initier votre dossier. + Vous pourrez dans tous les cas les compléter plus tard si vous ne les possédez pas de suite. + + - if user_signed_in? %div{style: 'text-align:right'} From 0eb2acb959af7c5536ca3638df2c7381e1987716 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 29 Aug 2016 11:02:02 +0200 Subject: [PATCH 22/53] CGU --- app/controllers/cgu_controller.rb | 5 + app/views/cgu/index.html.haml | 167 ++++++++++++++++++++++++ app/views/layouts/application.html.haml | 12 +- config/routes.rb | 2 + 4 files changed, 182 insertions(+), 4 deletions(-) create mode 100644 app/controllers/cgu_controller.rb create mode 100644 app/views/cgu/index.html.haml diff --git a/app/controllers/cgu_controller.rb b/app/controllers/cgu_controller.rb new file mode 100644 index 000000000..95bb4ab15 --- /dev/null +++ b/app/controllers/cgu_controller.rb @@ -0,0 +1,5 @@ +class CguController < ApplicationController + def index + + end +end \ No newline at end of file diff --git a/app/views/cgu/index.html.haml b/app/views/cgu/index.html.haml new file mode 100644 index 000000000..70632182c --- /dev/null +++ b/app/views/cgu/index.html.haml @@ -0,0 +1,167 @@ +%h2 + Condition d’utilisation du service « TPS » pour téléprocédure simplifiée +%br +%h3 + Editeur +%p Ce service est proposé par le Secrétariat général pour la modernisation de l’action publique, un service interministériel du Premier Ministre, mis à disposition du ministère de la Réforme de l’Etat, de la Décentralisation et de la Fonction publique. +%p Il est opéré par la Direction interministérielle du numérique et du système d'information et de communication de l'Etat (DINSIC). +%p +%p + %strong Secrétariat Général pour la Modernisation de l’Action publique + %br/ + 64-70 allée de Bercy + %br/ + 75572 Paris Cedex 12 +%p + %strong Directeur de la publication +%p Laure de LA BRETECHE +%p + %strong Responsable éditorial +%p Henri VERDIER +%p + %strong Responsable éditorial délégué +%p Philippe VRIGNAUD +%br +%h3 + Ingénierie et hébergement informatique +%p L'ingénierie du site est assurée par : +%p + %strong OVH + %br/ + SAS au capital de 10 000 000 € + %br/ + RCS Roubaix – Tourcoing 424 761 419 00045 + %br/ + Code APE 6202A + %br/ + N° TVA : FR 22 424 761 419 + %br/ + Siège social : 2 rue Kellermann - 59100 Roubaix - France. +%br +%h3 + Object du site internet + %a{:href => "https://tps.apientreprise.fr/"} + %strong tps.apientreprise.fr +%p + Le site internet tps.apientreprise.fr a pour objet de faciliter la création de démarches administratives en ligne par les acteurs publics, et l’instruction par plusieurs services des demandes formulées par les usagers auprès d’un ou organismes publics. +%br +%h3 + Acteurs de + %a{:href => "https://tps.apientreprise.fr/"} + TPS +%p Les acteurs de TPS sont les suivants : +%ul + %li Le SGMAP qui héberge le service TPS, le maintien en condition opérationnelle et gère les droits d’accès + %li L’administrateur au sein d’une administration donnée qui crée la démarche en ligne + %li Le ou les accompagnateurs au sein d’une administration donnée, qui reçoivent les démarches des usagers, les accompagnent le cas échéant dans le bouclage de leurs dossier, instruisent la demande et décident des suites à donner aux demandes + %li Les Usagers qui formulent les demandes en ligne via le formulaire qui leur est mis à disposition +%br +%h3 + Déclaration CNIL +%p Le SGMAP a procédé à la déclaration CNIL de TPS. Néanmoins les administrations devront procéder à une déclaration complémentaire auprès de la CNIL si les données du formulaire qu’elles ont produit comportent des données de la nature suivante : +%ul + %li N° de sécurité sociale, + %li Infractions, condamnations, mesures de sécurité, + %li + %a{:href => "https://www.declaration.cnil.fr/declarations/declaration/donneesSensibles_DN.display.action"} Opinions philosophiques, politiques, religieuses, syndicales, vie sexuelle, données de santé, origine raciale. +%br +%h3 + Données collectées et responsabilité des organismes publics à l’initiative de démarches en ligne avec TPS. +%p Les données collectées par le service sont définis par les services publics utilisateurs du service qui arrêtent, sous leur responsabilité, la liste des informations qui seront demandées à l’usager. +%p Les organismes publics s’engagent à créer des démarches pour collecter les informations strictement nécessaires à l’instruction des demandes formulées auprès des acteurs publics, dans le cadre juridique prévu par chacune des démarches. +%p Ces données sont collectées et traitées par les seuls services concernés par l’instruction des demandes, et précisées dans la notice d’utilisation de chaque démarche publiée par l’organisme public. + +%br +%h3 Traitement des données à caractère personnel +%h4 Données personnelles : +%p + En application de la loi n°78-17 Informatique et Libertés du 6 janvier 1978, vous disposez d'un droit d'accès, de rectification, de modification et de suppression concernant les données qui vous concernent. Vous pouvez exercer ce droit à travers la rubrique + %a{:href => "http://www.faire-simple.gouv.fr/contact"} Contact +%h4 Données de connexion : +%p Conformément à la loi n°2004-575 du 21 juin 2004 pour la confiance dans l’économie numérique, certaines données de connexion sont conservées par le service aux fins de protection contre les intrusions et de poursuites judiciaires le cas échéant. Ces données sont conservées pendant un an. + +%br +%h3 Règles relatives aux informations sur les entreprises mises à disposition par les partenaires publics du SGMAP. +%p Le service « TPS », opéré par le SGMAP propose l’affichage aux internautes d’informations issues de deux bases de données distinctes gérées par quatre organismes qui sont : +%br +%h4 L’INSEE : +%p + %strong Insee (Institut national de la statistique et des études économiques) + %br/ + 18, boulevard Adolphe Pinard + %br/ + 75675 Paris cedex 14 + %br/ + Tél. : 01 41 17 50 50 +%p + %a{:href => "http://www.insee.fr/fr/bases-de-donnees/default.asp?page=sirene.htm"} Informations de la base SIRENE + %br/ + %a{:href => "http://www.sirene.fr/sirene/public/static/mentions-legales"} Condition légales d’utilisation de service SIRENE +%br +%h4 INFOGREFFE : +%p + %strong INFOGREFFE  + %br/ + Immeuble Le Parisien + %br/ + 5-7, avenue de Paris + %br/ + 94300 VINCENNES +%p + Les informations transmises aux autorités publiques en charges de l’instruction de dossiers de candidature sont définis par le service en ligne suivant proposé aux internautes : + %a{:href => "https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html"} https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html +%p + %a{:href => "https://www.infogreffe.fr/societes/cgu-cgv.html"} Conditions générales d’utilisation des données d’infogreffe + +%br +%h4 TPS fait appel à d’autres services opérés par le SGMAP afin de faciliter les démarches administratives : +%br +%p + %strong> France CONNECT + \ : informations complémentaires : + %a{:href => "https://franceconnect.gouv.fr/"} https://franceconnect.gouv.fr/ +%p + %strong La base d’adresse nationale : + %a{:href => "https://adresse.data.gouv.fr/"} https://adresse.data.gouv.fr/ +%p + %strong TPS est un service de l’Etat Plateforme : + + %a{:href => "http://etatplateforme.modernisation.gouv.fr/"} http://etatplateforme.modernisation.gouv.fr/ +%p + %strong Il met en œuvre les principes définis par le programme « Dites-le nous une fois » +%p + %a{:href => "http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises"} http://www.modernisation.gouv.fr/les-services-publics-se-simplifient-et-innovent/par-des-simplifications-pour-les-entreprises/dites-le-nous-une-fois-un-programme-pour-simplifier-la-vie-des-entreprises +%br +%h3 Droit de reproduction : +%p Toute copie de pages du site doit avoir obtenu l’autorisation du directeur de la publication. +%p La création de liens avec le site « tps.apientreprise.fr » est libre. +%p Le SGMAP se réserve le droit de demander la suppression d’un lien qu’elle estime non conforme à l’objet du service « tps.apientreprise.fr » aux missions du SGMAP, ou plus généralement aux principes véhiculés par l’Administration. +%p L’autorisation de création de liens est valable pour tout support, à l’exception de ceux diffusant des informations à caractère raciste, pornographique, xénophobe ou pouvant porter atteinte à la sensibilité du plus grand nombre. +%p + La rubrique + %a{:href => "http://www.faire-simple.gouv.fr/contact"} Contactez-nous + est à votre disposition pour nous faire part de vos remarques et suggestions. +%br +%h3 Propriété intellectuelle, droits d’auteur et copyright +%p Ce service relève de la législation française et internationale sur le droit d'auteur et la propriété intellectuelle. Tous les droits de reproduction sont réservés, y compris pour les documents téléchargeables et les représentations iconographiques et photographiques. +%p La reproduction de tout ou partie de ce site sur un support électronique quel qu'il soit est formellement interdite sauf autorisation expresse du Directeur de la publication (voir ci-après : Reproduction des contenus). +%p Les marques citées sur ce site sont protégées par les organismes qui en sont propriétaires. + +%br +%h3 Logiciels nécessaires à la consultation +%p Ce service est optimisé pour un affichage en 1024*768. Il est prévu pour : +%ul + %li les versions 10 ou supérieures d'Internet Explorer (sur windows 7 ou plus) + %li toutes versions de Microsoft Edge + %li les versions 19 ou supérieures d’Opera + %li les versions 8 ou supérieures de Safari + %li les versions 45.3.0 ou 48 ou supérieures de Firefox + %li les versions 40 ou supérieures de Chrome +%p + La liste des versions compatibles a volontairement été réduite afin de garantir une meilleure sécurité sur nos services. Par ailleurs, le service TPS peut fonctionner sur des versions antérieures à celles évoquées ci-dessus mais sans garantie par le SGMAP. +%p Certains navigateurs peuvent bloquer par défaut l'ouverture de fenêtres sur ce site. Afin de vous permettre d'afficher certaines pages, vous devez autoriser l'ouverture des fenêtres lorsque le navigateur vous le propose en cliquant sur le bandeau d'avertissement alors affiché en haut de la page. En cas d'absence de message d'avertissement de la part de votre navigateur, vous devez configurer celui-ci afin qu'il autorise l'ouverture des fenêtres pour le site "tps.apientreprise.fr". +%br +%h3 Conception & Réalisation +%p SGMAP +%p   +%p   \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 7fb7c8008..95c642ffb 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -36,13 +36,17 @@ .container.center %p{style:'margin-top: 1em;'} %p{class: "copyright text-muted small"} - Copyright © - =link_to 'SGMAP', "http://etatplateforme.modernisation.gouv.fr" - 2016 - Tous droits réservés + 2016 - =link_to 'contact@tps.apientreprise.fr', "mailto:contact@tps.apientreprise.fr" + \- + + =link_to 'CGU / Mentions légales', cgu_path + + \- + + =link_to 'Contact', "mailto:contact@tps.apientreprise.fr" diff --git a/config/routes.rb b/config/routes.rb index d1f05b3c1..6445a1710 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -36,6 +36,8 @@ Rails.application.routes.draw do root 'root#index' + get 'cgu' => 'cgu#index' + namespace :france_connect do get 'particulier' => 'particulier#login' get 'particulier/callback' => 'particulier#callback' From ed8da1552c87fae0a716a0333f63a1a1e7ee879a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 29 Aug 2016 12:07:30 +0200 Subject: [PATCH 23/53] Admin can be declare a procedure for individual people (no SIRET) --- app/controllers/admin/procedures_controller.rb | 2 +- app/views/admin/procedures/_informations.html.haml | 13 ++++++++++++- ...58_add_for_individual_attr_in_procedure_table.rb | 5 +++++ db/schema.rb | 3 ++- 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20160829094658_add_for_individual_attr_in_procedure_table.rb diff --git a/app/controllers/admin/procedures_controller.rb b/app/controllers/admin/procedures_controller.rb index a6e8f7fec..3c5e013e8 100644 --- a/app/controllers/admin/procedures_controller.rb +++ b/app/controllers/admin/procedures_controller.rb @@ -187,7 +187,7 @@ class Admin::ProceduresController < AdminController private def create_procedure_params - params.require(:procedure).permit(:libelle, :description, :organisation, :direction, :lien_demarche, :lien_site_web, :lien_notice, :euro_flag, :logo, :cerfa_flag, 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, :lien_site_web, :lien_notice, :euro_flag, :logo, :cerfa_flag, :for_individual, module_api_carto_attributes: [:id, :use_api_carto, :quartiers_prioritaires, :cadastre]).merge(administrateur_id: current_administrateur.id) end def create_module_api_carto_params diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index c28e08a77..7c14e2941 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -52,6 +52,17 @@ %h4 Formulaire / CERFA %label =f.check_box :cerfa_flag - Activer l'envoi de formulaire / CERFA + Activer l'envoi de formulaire / CERFA %br =f.text_field :lien_demarche, class: 'form-control', placeholder: 'URL vers le formulaire vierge (facultatif)' + +%br +.row + .col-md-6.col-lg-6 + %h4 Particuliers + %label + =f.check_box :for_individual + Cette procédure s'adresse à un public qui + %b + ne possède pas de numéro SIRET, + qui doivent donc s'identifier en tant que personne physique. diff --git a/db/migrate/20160829094658_add_for_individual_attr_in_procedure_table.rb b/db/migrate/20160829094658_add_for_individual_attr_in_procedure_table.rb new file mode 100644 index 000000000..abcf83c05 --- /dev/null +++ b/db/migrate/20160829094658_add_for_individual_attr_in_procedure_table.rb @@ -0,0 +1,5 @@ +class AddForIndividualAttrInProcedureTable < ActiveRecord::Migration + def change + add_column :procedures, :for_individual, :boolean, default: false + end +end diff --git a/db/schema.rb b/db/schema.rb index a6e5f6713..c06938ac8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160824094451) do +ActiveRecord::Schema.define(version: 20160829094658) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -278,6 +278,7 @@ ActiveRecord::Schema.define(version: 20160824094451) do t.boolean "published", default: false, null: false t.string "lien_site_web" t.string "lien_notice" + t.boolean "for_individual", default: false end create_table "quartier_prioritaires", force: :cascade do |t| From a69433e8deee4f6bd89a1cd945f3e5199a3d2244 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 30 Aug 2016 11:18:43 +0200 Subject: [PATCH 24/53] User can be begin without SIRET --- app/controllers/users/dossiers_controller.rb | 10 +++-- app/decorators/entreprise_decorator.rb | 2 +- app/facades/dossier_facades.rb | 4 ++ app/models/dossier.rb | 10 +++++ app/models/entreprise.rb | 6 +++ app/models/individual.rb | 9 ++++ app/views/backoffice/dossiers/show.html.haml | 4 +- app/views/dossiers/etapes/_etape2.html.haml | 44 ++----------------- .../etapes/etape_2/_entreprise.html.haml | 40 +++++++++++++++++ .../etapes/etape_2/_individual.html.haml | 40 +++++++++++++++++ app/views/users/dossiers/_list.html.haml | 12 ++--- app/views/users/registrations/new.html.haml | 1 + config/locales/models/individual/fr.yml | 19 ++++++++ .../20160829114646_create_individual_table.rb | 11 +++++ db/schema.rb | 9 +++- .../backoffice/navigate_to_dossier_spec.rb | 16 +++++++ spec/features/users/list_dossiers_spec.rb | 12 ++--- spec/mailers/notification_mailer_spec.rb | 4 +- spec/models/dossier_spec.rb | 19 ++++++++ spec/models/individual_spec.rb | 8 ++++ .../users/dossiers/index_html.haml_spec.rb | 11 +---- 21 files changed, 220 insertions(+), 71 deletions(-) create mode 100644 app/models/individual.rb create mode 100644 app/views/dossiers/etapes/etape_2/_entreprise.html.haml create mode 100644 app/views/dossiers/etapes/etape_2/_individual.html.haml create mode 100644 config/locales/models/individual/fr.yml create mode 100644 db/migrate/20160829114646_create_individual_table.rb create mode 100644 spec/models/individual_spec.rb diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index e5bf6a48c..4193859c9 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -84,8 +84,12 @@ class Users::DossiersController < UsersController @facade = facade params[:dossier][:id] if checked_autorisation_donnees? - @facade.dossier.update_attributes(update_params) - + begin + @facade.dossier.update_attributes!(update_params) + rescue + flash.now.alert = @facade.dossier.errors.full_messages.join('
').html_safe + return render 'show' + end if @facade.dossier.procedure.module_api_carto.use_api_carto redirect_to url_for(controller: :carte, action: :show, dossier_id: @facade.dossier.id) else @@ -117,7 +121,7 @@ class Users::DossiersController < UsersController end def update_params - params.require(:dossier).permit(:autorisation_donnees) + params.require(:dossier).permit(:id, :autorisation_donnees, individual_attributes: [:nom, :prenom, :birthdate]) end def checked_autorisation_donnees? diff --git a/app/decorators/entreprise_decorator.rb b/app/decorators/entreprise_decorator.rb index fe34dbace..6db7236fe 100644 --- a/app/decorators/entreprise_decorator.rb +++ b/app/decorators/entreprise_decorator.rb @@ -2,7 +2,7 @@ class EntrepriseDecorator < Draper::Decorator delegate_all def raison_sociale_or_name - raison_sociale.nil? ? nom + ' ' + prenom : raison_sociale + raison_sociale.blank? ? nom + ' ' + prenom : raison_sociale end def effectif diff --git a/app/facades/dossier_facades.rb b/app/facades/dossier_facades.rb index 059462848..f44f1a9e5 100644 --- a/app/facades/dossier_facades.rb +++ b/app/facades/dossier_facades.rb @@ -50,6 +50,10 @@ class DossierFacades @dossier.ordered_champs_private end + def individual + @dossier.individual + end + def commentaires_files PieceJustificative.where(dossier_id: @dossier.id, type_de_piece_justificative_id: nil) end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index ccae17f45..623cb9515 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -14,6 +14,7 @@ class Dossier < ActiveRecord::Base has_one :etablissement, dependent: :destroy has_one :entreprise, dependent: :destroy + has_one :individual, dependent: :destroy has_many :cerfa, dependent: :destroy has_many :pieces_justificatives, dependent: :destroy @@ -28,6 +29,8 @@ class Dossier < ActiveRecord::Base belongs_to :procedure belongs_to :user + accepts_nested_attributes_for :individual + delegate :siren, to: :entreprise delegate :siret, to: :etablissement, allow_nil: true delegate :types_de_piece_justificative, to: :procedure @@ -35,6 +38,7 @@ class Dossier < ActiveRecord::Base delegate :france_connect_information, to: :user after_save :build_default_champs, if: Proc.new { procedure_id_changed? } + after_save :build_default_individual, if: Proc.new { procedure.for_individual? } validates :user, presence: true @@ -66,6 +70,12 @@ class Dossier < ActiveRecord::Base end end + def build_default_individual + Individual.new(dossier_id: id).save(validate: false) + Entreprise.new(dossier_id: id).save(validate: false) + Etablissement.new(dossier_id: id, entreprise_id: entreprise.id).save(validate: false) + end + def ordered_champs champs.joins(', types_de_champ').where("champs.type_de_champ_id = types_de_champ.id AND types_de_champ.procedure_id = #{procedure.id}").order('order_place') end diff --git a/app/models/entreprise.rb b/app/models/entreprise.rb index ad3a8ee9b..8218f75e4 100644 --- a/app/models/entreprise.rb +++ b/app/models/entreprise.rb @@ -4,4 +4,10 @@ class Entreprise < ActiveRecord::Base has_one :rna_information, dependent: :destroy validates_presence_of :siren + + before_save :default_values + + def default_values + self.raison_sociale ||= '' + end end diff --git a/app/models/individual.rb b/app/models/individual.rb new file mode 100644 index 000000000..324438c48 --- /dev/null +++ b/app/models/individual.rb @@ -0,0 +1,9 @@ +class Individual < ActiveRecord::Base + belongs_to :dossier + + validates_uniqueness_of :dossier_id + + validates :nom, presence: true, allow_nil: false, allow_blank: false + validates :prenom, presence: true, allow_nil: false, allow_blank: false + validates :birthdate, presence: true, allow_nil: false, allow_blank: false +end diff --git a/app/views/backoffice/dossiers/show.html.haml b/app/views/backoffice/dossiers/show.html.haml index 6a99e2f16..6eaa95dde 100644 --- a/app/views/backoffice/dossiers/show.html.haml +++ b/app/views/backoffice/dossiers/show.html.haml @@ -7,8 +7,8 @@ = @facade.dossier.display_state = render partial: 'follow_action' - - = render partial: '/dossiers/infos_entreprise' + - unless @facade.procedure.for_individual? + = render partial: '/dossiers/infos_entreprise' = render partial: '/dossiers/infos_dossier' %br diff --git a/app/views/dossiers/etapes/_etape2.html.haml b/app/views/dossiers/etapes/_etape2.html.haml index 2e8f161e9..3f36a3c2a 100644 --- a/app/views/dossiers/etapes/_etape2.html.haml +++ b/app/views/dossiers/etapes/_etape2.html.haml @@ -1,40 +1,4 @@ -.etape.etapes_menu.col-md-3.col-lg-3 - %h3 - Mes informations - %br - - unless @facade.entreprise.nil? - .center{style:'margin-left: -5%'} - Vous êtes authentifié avec le SIRET - - %h3.text-success - = @facade.etablissement.siret - = form_for @facade.dossier, url: users_dossier_change_siret_path(dossier_id: @facade.dossier.id), method: :put, remote: true do |f| - = f.submit 'Changer de SIRET', class: %w(btn btn-xs btn-primary) - - -.etape.etapes_informations.col-md-9.col-lg-9 - .row - - if @facade.entreprise.nil? - #new_siret{style:'margin-left: 20%; margin-top: 5%'} - = form_for @facade.dossier, html: {class: 'form-inline'}, url: users_dossier_siret_informations_path(dossier_id: @facade.dossier.id), method: :post, remote: true do |f| - .form-group.form-group-lg - = f.text_field :siret, class: "form-control", placeholder: "Entrez votre Siret", value: @siret - = f.hidden_field :dossier_id, value: @facade.dossier.id - = f.submit 'Valider', class: %w(btn btn-lg btn-success), data: { disable_with: "Recherche en cours ..." } - - else - %br - #recap_info_entreprise - = render partial: '/dossiers/infos_entreprise' - - %p#insee_infogreffe{style:'color:grey; float:right'} - %i - Informations récupérées auprès de l'INSEE et d'INFOGREFFE - - %br - = form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f| - = f.hidden_field :id - %label{ style:'font-weight:normal' } - = f.check_box :autorisation_donnees - J'autorise les décideurs publics à vérifier les informations de mon organisation auprès des administrations concernées. Ces informations resteront strictement confidentielles. - %br - = f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right', id: 'etape_suivante', disabled: :disabled +- if @facade.procedure.for_individual? + = render partial: 'dossiers/etapes/etape_2/individual' +- else + = render partial: 'dossiers/etapes/etape_2/entreprise' \ No newline at end of file diff --git a/app/views/dossiers/etapes/etape_2/_entreprise.html.haml b/app/views/dossiers/etapes/etape_2/_entreprise.html.haml new file mode 100644 index 000000000..2e8f161e9 --- /dev/null +++ b/app/views/dossiers/etapes/etape_2/_entreprise.html.haml @@ -0,0 +1,40 @@ +.etape.etapes_menu.col-md-3.col-lg-3 + %h3 + Mes informations + %br + - unless @facade.entreprise.nil? + .center{style:'margin-left: -5%'} + Vous êtes authentifié avec le SIRET + + %h3.text-success + = @facade.etablissement.siret + = form_for @facade.dossier, url: users_dossier_change_siret_path(dossier_id: @facade.dossier.id), method: :put, remote: true do |f| + = f.submit 'Changer de SIRET', class: %w(btn btn-xs btn-primary) + + +.etape.etapes_informations.col-md-9.col-lg-9 + .row + - if @facade.entreprise.nil? + #new_siret{style:'margin-left: 20%; margin-top: 5%'} + = form_for @facade.dossier, html: {class: 'form-inline'}, url: users_dossier_siret_informations_path(dossier_id: @facade.dossier.id), method: :post, remote: true do |f| + .form-group.form-group-lg + = f.text_field :siret, class: "form-control", placeholder: "Entrez votre Siret", value: @siret + = f.hidden_field :dossier_id, value: @facade.dossier.id + = f.submit 'Valider', class: %w(btn btn-lg btn-success), data: { disable_with: "Recherche en cours ..." } + - else + %br + #recap_info_entreprise + = render partial: '/dossiers/infos_entreprise' + + %p#insee_infogreffe{style:'color:grey; float:right'} + %i + Informations récupérées auprès de l'INSEE et d'INFOGREFFE + + %br + = form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f| + = f.hidden_field :id + %label{ style:'font-weight:normal' } + = f.check_box :autorisation_donnees + J'autorise les décideurs publics à vérifier les informations de mon organisation auprès des administrations concernées. Ces informations resteront strictement confidentielles. + %br + = f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right', id: 'etape_suivante', disabled: :disabled diff --git a/app/views/dossiers/etapes/etape_2/_individual.html.haml b/app/views/dossiers/etapes/etape_2/_individual.html.haml new file mode 100644 index 000000000..0b1c37ece --- /dev/null +++ b/app/views/dossiers/etapes/etape_2/_individual.html.haml @@ -0,0 +1,40 @@ +.etape.etapes_menu.col-md-3.col-lg-3 + %h3 + Mes informations + %br + %p.center + Les informations de bases + %br + vous concernant. + +.etape.etapes_informations.col-md-9.col-lg-9 + .row + = form_for @facade.dossier, url: { controller: '/users/dossiers', action: :update } do |f| + = f.hidden_field :id + + = f.fields_for :individual, @facade.individual do |ff| + .form-group + %label + %h4 + Nom + = ff.text_field :nom, {class: 'form-control'} + .form-group + %label + %h4 + Prénom + = ff.text_field :prenom, {class: 'form-control'} + .form-group + %label + %h4 + Date de naissance + = ff.text_field :birthdate, {class: 'form-control', 'data-provide' => 'datepicker', 'data-date-format' => 'dd/mm/yyyy'} + + %p + %label{ style:'font-weight:normal' } + = f.check_box :autorisation_donnees + = " ".html_safe + Vos informations personnelles ne seront jamais utilisées dans un but lucratif ou commercial. Elles ne pourront être communiquées à de tiers personnes sans votre accord préalable. Elles pourront en revanche être communiquées aux administrations compétentes afin d'instruire votre dossier, conformément à la déclaration CNIL effectué par le service TPS. + =link_to 'en savoir plus', cgu_path, target: '_blank' + + %br + = f.submit 'Etape suivante', class: "btn btn btn-info", style: 'float:right', id: 'etape_suivante' diff --git a/app/views/users/dossiers/_list.html.haml b/app/views/users/dossiers/_list.html.haml index 3f788cee0..e8bdcc86d 100644 --- a/app/views/users/dossiers/_list.html.haml +++ b/app/views/users/dossiers/_list.html.haml @@ -1,8 +1,8 @@ - unless smart_listing.empty? %table.table %thead - %th.col-md-4.col-lg-4= smart_listing.sortable 'Procédure', 'procedure.libelle' - %th.col-md-4.col-lg-4= smart_listing.sortable 'Raison sociale', 'entreprise.raison_sociale' + %th.col-md-1.col-lg-1= smart_listing.sortable 'Numéro', 'id' + %th.col-md-5.col-lg-5= smart_listing.sortable 'Procédure', 'procedure.libelle' %th.col-md-2.col-lg-2= smart_listing.sortable 'État', 'state' %th.col-md-2.col-lg-2= smart_listing.sortable 'Date de mise à jour', 'updated_at' - @dossiers.each do |dossier| @@ -12,11 +12,11 @@ - else - dossier = dossier.decorate %tr + %td.center + = dossier.id %td - = dossier.procedure.libelle - %td - = link_to(dossier.entreprise.raison_sociale, users_dossiers_invite_path(id: invite.id)) unless invite.nil? - = link_to(dossier.entreprise.raison_sociale, users_dossier_recapitulatif_path(dossier)) if invite.nil? + = link_to(dossier.procedure.libelle, users_dossiers_invite_path(id: invite.id)) unless invite.nil? + = link_to(dossier.procedure.libelle, users_dossier_recapitulatif_path(dossier)) if invite.nil? %td{id: "dossier_#{dossier.id}_state"}= dossier.display_state %td= dossier.last_update diff --git a/app/views/users/registrations/new.html.haml b/app/views/users/registrations/new.html.haml index 4e780d97f..17054c523 100644 --- a/app/views/users/registrations/new.html.haml +++ b/app/views/users/registrations/new.html.haml @@ -29,6 +29,7 @@ = devise_error_messages! #form_login + %br = image_tag('logo-tps.png') %br %h2#gestionnaire_login Inscription diff --git a/config/locales/models/individual/fr.yml b/config/locales/models/individual/fr.yml new file mode 100644 index 000000000..88aba8e77 --- /dev/null +++ b/config/locales/models/individual/fr.yml @@ -0,0 +1,19 @@ +fr: + activerecord: + attributes: + individual: + nom: Nom + prenom: Prénom + birthdate: Date de naissance + errors: + models: + individual: + attributes: + nom: + blank: 'doit être rempli' + prenom: + blank: 'doit être rempli' + birthdate: + blank: 'doit être rempli' + + diff --git a/db/migrate/20160829114646_create_individual_table.rb b/db/migrate/20160829114646_create_individual_table.rb new file mode 100644 index 000000000..f93c6a8ca --- /dev/null +++ b/db/migrate/20160829114646_create_individual_table.rb @@ -0,0 +1,11 @@ +class CreateIndividualTable < ActiveRecord::Migration + def change + create_table :individuals do |t| + t.string :nom + t.string :prenom + t.string :birthdate + end + + add_belongs_to :individuals, :dossier + end +end diff --git a/db/schema.rb b/db/schema.rb index c06938ac8..5cb43da5e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160829094658) do +ActiveRecord::Schema.define(version: 20160829114646) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -213,6 +213,13 @@ ActiveRecord::Schema.define(version: 20160829094658) do add_index "gestionnaires", ["email"], name: "index_gestionnaires_on_email", unique: true, using: :btree add_index "gestionnaires", ["reset_password_token"], name: "index_gestionnaires_on_reset_password_token", unique: true, using: :btree + create_table "individuals", force: :cascade do |t| + t.string "nom" + t.string "prenom" + t.string "birthdate" + t.integer "dossier_id" + end + create_table "invites", force: :cascade do |t| t.string "email" t.string "email_sender" diff --git a/spec/features/backoffice/navigate_to_dossier_spec.rb b/spec/features/backoffice/navigate_to_dossier_spec.rb index 8f29befa2..972c70f58 100644 --- a/spec/features/backoffice/navigate_to_dossier_spec.rb +++ b/spec/features/backoffice/navigate_to_dossier_spec.rb @@ -29,5 +29,21 @@ feature 'on backoffice page' do expect(page).to have_css('#backoffice_dossier_show') end end + + context 'when gestionnaire have enterprise and individual dossier in his inbox' do + let!(:procedure_individual) { create :procedure, libelle: 'procedure individual', administrateur: administrateur, for_individual: true } + let!(:dossier_individual) { create :dossier, procedure: procedure_individual, state: 'updated' } + + before do + create :assign_to, gestionnaire: gestionnaire, procedure: procedure_individual + + visit backoffice_path + page.click_on dossier_individual.id + end + + scenario 'it redirect to dossier page' do + expect(page).to have_css('#backoffice_dossier_show') + end + end end end \ No newline at end of file diff --git a/spec/features/users/list_dossiers_spec.rb b/spec/features/users/list_dossiers_spec.rb index acf68a384..85fdc963f 100644 --- a/spec/features/users/list_dossiers_spec.rb +++ b/spec/features/users/list_dossiers_spec.rb @@ -9,8 +9,8 @@ feature 'user access to the list of his dossier' do before do dossier1.update_column(:updated_at, "19/07/2052 15:35".to_time) - dossier1.entreprise.update_column(:raison_sociale, 'PLOP') - last_updated_dossier.entreprise.update_column(:raison_sociale, 'PLIP') + dossier1.procedure.update_column(:libelle, 'PLOP') + last_updated_dossier.procedure.update_column(:libelle, 'PLIP') visit new_user_session_path within('#new_user') do @@ -20,12 +20,12 @@ feature 'user access to the list of his dossier' do end end scenario 'the list of dossier is displayed' do - expect(page).to have_content(dossier1.entreprise.raison_sociale) - expect(page).not_to have_content(dossier2.entreprise.raison_sociale) + expect(page).to have_content(dossier1.procedure.libelle) + expect(page).not_to have_content(dossier2.procedure.libelle) end scenario 'the list must be order by last updated' do - expect(page.body).to match(/#{last_updated_dossier.entreprise.raison_sociale}.*#{dossier1.entreprise.raison_sociale}/m) + expect(page.body).to match(/#{last_updated_dossier.procedure.libelle}.*#{dossier1.procedure.libelle}/m) end scenario 'the state of dossier is displayed' do @@ -34,7 +34,7 @@ feature 'user access to the list of his dossier' do context 'when user clicks on a projet in list' do before do - page.click_on dossier1.entreprise.raison_sociale + page.click_on dossier1.procedure.libelle end scenario 'user is redirected to dossier page' do expect(page).to have_css('#recap_dossier') diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 48a3e25e5..44f5d68ea 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -19,7 +19,7 @@ RSpec.describe NotificationMailer, type: :mailer do subject(:subject) { described_class.dossier_validated(dossier) } it { expect(subject.body).to match("Votre dossier N°#{dossier.id} a été validé par votre accompagnateur.") } - it { expect(subject.body).to include("Afin de finaliser son dépot, merci de vous rendre sur #{users_dossier_recapitulatif_url(dossier_id: dossier.id)}") } + it { expect(subject.body).to include("Afin de finaliser son dépôt, merci de vous rendre sur #{users_dossier_recapitulatif_url(dossier_id: dossier.id)}") } it { expect(subject.subject).to eq("Votre dossier TPS N°#{dossier.id} a été validé") } end @@ -30,7 +30,7 @@ RSpec.describe NotificationMailer, type: :mailer do subject(:subject) { described_class.dossier_submitted(dossier) } it { expect(subject.body).to match("Nous vous confirmons que votre dossier N°#{dossier.id} a été déposé") } - it { expect(subject.body).to match("aurpès de #{dossier.procedure.organisation} avec succès") } + it { expect(subject.body).to match("auprès de #{dossier.procedure.organisation} avec succès") } it { expect(subject.body).to match("ce jour à #{dossier.updated_at}.") } it { expect(subject.subject).to eq("Votre dossier TPS N°#{dossier.id} a été déposé") } end diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 19c46a4f1..583a47410 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -23,6 +23,7 @@ describe Dossier do it { is_expected.to have_many(:cerfa) } it { is_expected.to have_one(:etablissement) } it { is_expected.to have_one(:entreprise) } + it { is_expected.to have_one(:individual) } it { is_expected.to belong_to(:user) } it { is_expected.to have_many(:invites) } it { is_expected.to have_many(:follows) } @@ -105,6 +106,24 @@ describe Dossier do end end + describe '#build_default_individual' do + context 'when dossier is linked to a procedure with for_individual attr false' do + let(:dossier) { create(:dossier, user: user) } + + it 'have no object created' do + expect(dossier.individual).to be_nil + end + end + + context 'when dossier is linked to a procedure with for_individual attr true' do + let(:dossier) { create(:dossier, user: user, procedure: (create :procedure, for_individual: true)) } + + it 'have no object created' do + expect(dossier.individual).not_to be_nil + end + end + end + describe '#save' do subject { build(:dossier, procedure: procedure, user: user) } let!(:procedure) { create(:procedure) } diff --git a/spec/models/individual_spec.rb b/spec/models/individual_spec.rb new file mode 100644 index 000000000..e0d02e03b --- /dev/null +++ b/spec/models/individual_spec.rb @@ -0,0 +1,8 @@ +require 'spec_helper' + +describe Individual do + it { is_expected.to have_db_column(:nom) } + it { is_expected.to have_db_column(:prenom) } + it { is_expected.to have_db_column(:birthdate) } + it { is_expected.to belong_to(:dossier) } +end diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index c6424b4d0..617cb3276 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -15,15 +15,6 @@ describe 'users/dossiers/index.html.haml', type: :view do let!(:decorate_dossier_invite) { create(:dossier, :with_entreprise, user: create(:user), state: 'initiated').decorate } before do - decorate_dossier_replied.entreprise.update_column(:raison_sociale, 'plap') - decorate_dossier_updated.entreprise.update_column(:raison_sociale, 'plep') - decorate_dossier_validated.entreprise.update_column(:raison_sociale, 'plip') - decorate_dossier_submitted.entreprise.update_column(:raison_sociale, 'plop') - decorate_dossier_received.entreprise.update_column(:raison_sociale, 'plup') - decorate_dossier_closed.entreprise.update_column(:raison_sociale, 'plyp') - decorate_dossier_refused.entreprise.update_column(:raison_sociale, 'plzp') - decorate_dossier_without_continuation.entreprise.update_column(:raison_sociale, 'plnp') - create :invite, dossier: decorate_dossier_invite, user: user end @@ -42,8 +33,8 @@ describe 'users/dossiers/index.html.haml', type: :view do subject { rendered } describe 'columns' do + it { is_expected.to have_content(decorate_dossier_at_check.id) } it { is_expected.to have_content(decorate_dossier_at_check.procedure.libelle) } - it { is_expected.to have_content(decorate_dossier_at_check.entreprise.raison_sociale) } it { is_expected.to have_content(decorate_dossier_at_check.display_state) } it { is_expected.to have_content(decorate_dossier_at_check.last_update) } end From f07606a373b1c32464009782af65fa1364416284 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 30 Aug 2016 11:42:33 +0200 Subject: [PATCH 25/53] IE 9 alert --- Gemfile | 2 +- Gemfile.lock | 3 --- app/views/layouts/_ie_lt_10.html.haml | 4 ++++ app/views/layouts/application.html.haml | 7 ++++++- 4 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 app/views/layouts/_ie_lt_10.html.haml diff --git a/Gemfile b/Gemfile index e9897f411..74ec148d8 100644 --- a/Gemfile +++ b/Gemfile @@ -82,7 +82,7 @@ gem 'mailjet' gem "smart_listing" -gem 'css_splitter' +# gem 'css_splitter' gem 'bootstrap-wysihtml5-rails', '~> 0.3.3.8' gem 'as_csv' diff --git a/Gemfile.lock b/Gemfile.lock index c7f277ceb..a9ac8e9f2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -115,8 +115,6 @@ GEM concurrent-ruby (1.0.2) crack (0.4.2) safe_yaml (~> 1.0.0) - css_splitter (0.4.5) - sprockets (>= 2.0.0) database_cleaner (1.4.1) debug_inspector (0.0.2) deep_cloneable (2.2.1) @@ -636,7 +634,6 @@ DEPENDENCIES chartkick clamav-client coffee-rails (~> 4.1.0) - css_splitter database_cleaner deep_cloneable (~> 2.2.1) devise diff --git a/app/views/layouts/_ie_lt_10.html.haml b/app/views/layouts/_ie_lt_10.html.haml new file mode 100644 index 000000000..07d0581d5 --- /dev/null +++ b/app/views/layouts/_ie_lt_10.html.haml @@ -0,0 +1,4 @@ +%div.center{style:'width: 100%; background-color: white; position: fixed; top:0; left:0; z-index: 100000'} + %h3.text-danger + %b + Votre version d'Internet Explorer est trop ancienne pour être utilisée sur le service TPS. Version minimum : Internet Explorer 10 \ No newline at end of file diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 95c642ffb..aab4cbe64 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -8,7 +8,6 @@ = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true = stylesheet_link_tag 'application_split2', media: 'all', 'data-turbolinks-track' => true - = javascript_include_tag 'application', 'data-turbolinks-track' => true = csrf_meta_tags %body @@ -16,6 +15,12 @@ %script{type: 'text/javascript'} (typeof jQuery !== 'undefined') && (jQuery.fx.off = true); + ="".html_safe + %div#wrap %div#header.navbar =render partial: "layouts/navbar" From 16c1fe31c1b95c6d300b8307660e6ee7b2a43daa Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 30 Aug 2016 13:29:40 +0200 Subject: [PATCH 26/53] Update CGU --- app/views/cgu/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/cgu/index.html.haml b/app/views/cgu/index.html.haml index 70632182c..7e8525f5c 100644 --- a/app/views/cgu/index.html.haml +++ b/app/views/cgu/index.html.haml @@ -58,7 +58,7 @@ %br %h3 Déclaration CNIL -%p Le SGMAP a procédé à la déclaration CNIL de TPS. Néanmoins les administrations devront procéder à une déclaration complémentaire auprès de la CNIL si les données du formulaire qu’elles ont produit comportent des données de la nature suivante : +%p Le SGMAP a procédé à la déclaration CNIL de TPS. Celle-ci porte le numéro "1986658 v 0" à la date du 30 août 2016. Néanmoins les administrations devront procéder à une déclaration complémentaire auprès de la CNIL si les données du formulaire qu’elles ont produit comportent des données de la nature suivante : %ul %li N° de sécurité sociale, %li Infractions, condamnations, mesures de sécurité, From d438e9a3295420782367d34c7ab0d998facdb3ac Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 30 Aug 2016 14:14:18 +0200 Subject: [PATCH 27/53] Ajust landing page --- app/assets/images/landing_background.jpg | Bin 392961 -> 0 bytes app/assets/images/landing_background.png | Bin 0 -> 320295 bytes app/assets/stylesheets/landing.scss | 8 +++++--- app/views/root/landing.html.haml | 4 ++-- 4 files changed, 7 insertions(+), 5 deletions(-) delete mode 100644 app/assets/images/landing_background.jpg create mode 100644 app/assets/images/landing_background.png diff --git a/app/assets/images/landing_background.jpg b/app/assets/images/landing_background.jpg deleted file mode 100644 index f7ddc8c98fe030cc5c8275b3c82c810a65d7044e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392961 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 _b7VkF43nb2gU(@;^04%QmBH5cgOW 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 z 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

BqfH1yCO$gi$hH} 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

6Q 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 literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/landing.scss b/app/assets/stylesheets/landing.scss index 6574664f6..7c22bc774 100644 --- a/app/assets/stylesheets/landing.scss +++ b/app/assets/stylesheets/landing.scss @@ -5,11 +5,13 @@ #landing { - background-image: image-url('landing_background.jpg'); + background-image: image-url('landing_background.png'); background-attachment: fixed; background-position: top center; background-repeat: no-repeat; + background-color: rgba(11,107,168,0.2); + #title { h1 { font-size: 65px; @@ -22,8 +24,8 @@ text-shadow: none; } color: white; - padding-top: 6%; - padding-bottom: 7%; + padding-top: 3%; + padding-bottom: 4%; text-shadow: 0px 0px 10px rgb(0, 0, 0); } diff --git a/app/views/root/landing.html.haml b/app/views/root/landing.html.haml index 700c56814..0e2e9e1ba 100644 --- a/app/views/root/landing.html.haml +++ b/app/views/root/landing.html.haml @@ -7,7 +7,7 @@ %br %h3.center - Simplifiez toutes vos démarches pour les rendre 100% en ligne. + Dématérialisez, réceptionnez et co-instruisez toutes vos démarches depuis un espace unique. %br %br @@ -23,7 +23,7 @@ .col-md-6.col-lg-6 %ul.dynamic_ul %li - Générateur simplifiée de démarches en ligne pour les administrations + Générateur simplifié de démarches en ligne pour les administrations %li Ne demander que les informations strictement nécessaires %li From 12ebab66ccce18369dfead1f67c8cdadb23b8d65 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 31 Aug 2016 16:07:11 +0200 Subject: [PATCH 28/53] Administrateur can be param the acknowledgement of delivery mail object and body. --- app/controllers/admin/mails_controller.rb | 20 +++++++++ app/models/mail_received.rb | 18 ++++++++ app/models/mail_template.rb | 10 +++++ app/models/procedure.rb | 18 +++++--- app/views/admin/mails/index.html.haml | 29 +++++++++++++ app/views/admin/procedures/_navbar.html.haml | 3 ++ config/routes.rb | 2 + ...60830142653_create_mail_templates_table.rb | 11 +++++ db/schema.rb | 9 +++- .../admin/mails_controller_spec.rb | 42 +++++++++++++++++++ spec/factories/mail_received.rb | 7 ++++ spec/models/mail_template_spec.rb | 27 ++++++++++++ spec/models/procedure_spec.rb | 32 ++++++++++++++ 13 files changed, 222 insertions(+), 6 deletions(-) create mode 100644 app/controllers/admin/mails_controller.rb create mode 100644 app/models/mail_received.rb create mode 100644 app/models/mail_template.rb create mode 100644 app/views/admin/mails/index.html.haml create mode 100644 db/migrate/20160830142653_create_mail_templates_table.rb create mode 100644 spec/controllers/admin/mails_controller_spec.rb create mode 100644 spec/factories/mail_received.rb create mode 100644 spec/models/mail_template_spec.rb diff --git a/app/controllers/admin/mails_controller.rb b/app/controllers/admin/mails_controller.rb new file mode 100644 index 000000000..6101ac8c3 --- /dev/null +++ b/app/controllers/admin/mails_controller.rb @@ -0,0 +1,20 @@ +class Admin::MailsController < AdminController + before_action :retrieve_procedure + + def index + + end + + def update + mail = current_administrateur.procedures.find(params[:procedure_id]).mail_templates.find(params[:id]) + mail.update_attributes(update_params) + + redirect_to admin_procedure_mails_path + end + + private + + def update_params + params.require(:mail_received).permit(:body, :object) + end +end \ No newline at end of file diff --git a/app/models/mail_received.rb b/app/models/mail_received.rb new file mode 100644 index 000000000..b8611eea9 --- /dev/null +++ b/app/models/mail_received.rb @@ -0,0 +1,18 @@ +class MailReceived < MailTemplate + before_save :default_values + + def default_values + self.object ||= "[TPS] Accusé de réception pour votre dossier n°--numero_dossier--" + self.body ||= "Bonjour, +
+
+ Votre administration vous confirme la bonne réception de votre dossier complet. Celui-ci sera instruit dans le délais légal déclaré par votre interlocuteur.
+
+ En vous souhaitant une bonne journée, +
+
+ --- +
+ L'équipe TPS" + end +end diff --git a/app/models/mail_template.rb b/app/models/mail_template.rb new file mode 100644 index 000000000..116570d83 --- /dev/null +++ b/app/models/mail_template.rb @@ -0,0 +1,10 @@ +class MailTemplate < ActiveRecord::Base + belongs_to :procedure + + enum balises: { + numero_dossier: { + attr: 'dossier.id', + description: "Permet d'afficher le numéro de dossier de l'utilisateur." + } + } +end diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 73f950cef..0bef80a6c 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -3,6 +3,8 @@ class Procedure < ActiveRecord::Base has_many :types_de_champ, class_name: 'TypeDeChampPublic', dependent: :destroy has_many :types_de_champ_private, dependent: :destroy has_many :dossiers + has_many :mail_templates + has_one :mail_received has_one :procedure_path, dependent: :destroy @@ -15,7 +17,7 @@ class Procedure < ActiveRecord::Base delegate :use_api_carto, to: :module_api_carto - accepts_nested_attributes_for :types_de_champ,:reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true + accepts_nested_attributes_for :types_de_champ, :reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true accepts_nested_attributes_for :types_de_piece_justificative, :reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true accepts_nested_attributes_for :module_api_carto accepts_nested_attributes_for :types_de_champ_private @@ -25,12 +27,18 @@ class Procedure < ActiveRecord::Base validates :libelle, presence: true, allow_blank: false, allow_nil: false validates :description, presence: true, allow_blank: false, allow_nil: false + after_save :build_default_mails, if: Proc.new { id_changed? } + + def build_default_mails + MailReceived.create(procedure: self) + end + def path procedure_path.path unless procedure_path.nil? end def default_path - libelle.downcase.gsub(/[^a-z0-9\-_]/,"_").gsub(/_*$/, '').gsub(/_+/, '_') + libelle.downcase.gsub(/[^a-z0-9\-_]/, "_").gsub(/_*$/, '').gsub(/_+/, '_') end def types_de_champ_ordered @@ -79,20 +87,20 @@ class Procedure < ActiveRecord::Base end def clone - procedure = self.deep_clone(include: [ :types_de_piece_justificative, :types_de_champ, :module_api_carto ]) + procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto]) procedure.archived = false procedure.published = false return procedure if procedure.save end def publish!(path) - self.update_attributes!({ published: true, archived: false }) + self.update_attributes!({published: true, archived: false}) ProcedurePath.create!(path: path, procedure: self, administrateur: self.administrateur) end def archive self.procedure_path.destroy! if self.path - self.update_attributes!({ archived: true }) + self.update_attributes!({archived: true}) end def total_dossier diff --git a/app/views/admin/mails/index.html.haml b/app/views/admin/mails/index.html.haml new file mode 100644 index 000000000..26b258e61 --- /dev/null +++ b/app/views/admin/mails/index.html.haml @@ -0,0 +1,29 @@ +=render partial: 'admin/procedures/head', locals: {active: 'E-mails'} + +%h3 + E-mail d'accusé de réception + +- unless @procedure.mail_received.blank? + = form_for @procedure.mail_received, url: {controller: 'admin/mails', action: 'update', id: @procedure.mail_received.id} do |f| + =f.text_field :object, {class:'form-control', style:'width: 40%'} + %br + =f.text_area :body, {class: 'form-control wysihtml5'} + %br + =f.submit 'Mettre à jour', {class:'btn btn-success', style:'float: right'} + + +%table.table{style:'width: 50%'} + %tr + %th + Balise + %th + Description + - MailTemplate.balises.each do |balise| + %tr + %td.center + %b.text-success + \-- + = balise.first + \-- + %td + =balise.second[:description] diff --git a/app/views/admin/procedures/_navbar.html.haml b/app/views/admin/procedures/_navbar.html.haml index 6a382894a..f2d67d181 100644 --- a/app/views/admin/procedures/_navbar.html.haml +++ b/app/views/admin/procedures/_navbar.html.haml @@ -20,5 +20,8 @@ = link_to_unless(@procedure.locked?, 'Champs privés', admin_procedure_types_de_champ_private_path(@procedure)) do = link_to('Champs privés', '#') +%li{ class: ('active' if active == 'E-mails') } + = link_to('E-mails', admin_procedure_mails_path(@procedure)) + %li{ class: ('active' if active == 'Prévisualisation'), style: 'float:right' } = link_to('Prévisualisation', admin_procedure_previsualisation_path(@procedure), {style: 'font-style: italic;'}) \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 6445a1710..673bdbb14 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -114,6 +114,8 @@ Rails.application.routes.draw do post '/:index/move_down' => 'pieces_justificatives#move_down', as: :move_down end + resources 'mails' + put 'archive' => 'procedures#archive', as: :archive put 'publish' => 'procedures#publish', as: :publish post 'transfer' => 'procedures#transfer', as: :transfer diff --git a/db/migrate/20160830142653_create_mail_templates_table.rb b/db/migrate/20160830142653_create_mail_templates_table.rb new file mode 100644 index 000000000..8cc41d792 --- /dev/null +++ b/db/migrate/20160830142653_create_mail_templates_table.rb @@ -0,0 +1,11 @@ +class CreateMailTemplatesTable < ActiveRecord::Migration + def change + create_table :mail_templates do |t| + t.string :object + t.text :body + t.string :type + end + + add_belongs_to :mail_templates, :procedure + end +end diff --git a/db/schema.rb b/db/schema.rb index 5cb43da5e..c377a367d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160829114646) do +ActiveRecord::Schema.define(version: 20160830142653) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -227,6 +227,13 @@ ActiveRecord::Schema.define(version: 20160829114646) do t.integer "user_id" end + create_table "mail_templates", force: :cascade do |t| + t.string "object" + t.text "body" + t.string "type" + t.integer "procedure_id" + end + create_table "module_api_cartos", force: :cascade do |t| t.integer "procedure_id" t.boolean "use_api_carto", default: false diff --git a/spec/controllers/admin/mails_controller_spec.rb b/spec/controllers/admin/mails_controller_spec.rb new file mode 100644 index 000000000..acb973e24 --- /dev/null +++ b/spec/controllers/admin/mails_controller_spec.rb @@ -0,0 +1,42 @@ +require 'spec_helper' + +describe Admin::MailsController, type: :controller do + let(:procedure) { create :procedure } + + before do + sign_in procedure.administrateur + end + + describe 'GET index' do + subject { get :index, procedure_id: procedure.id } + + it { expect(subject.status).to eq 200 } + end + + describe 'PATCH update' do + let(:object) { 'plop modif' } + let(:body) { 'plip modif' } + + context 'when is mail_received id' do + subject { patch :update, + procedure_id: procedure.id, + id: procedure.mail_received.id, + mail_received: { + object: object, + body: body + } } + + it { expect(subject).to redirect_to admin_procedure_mails_path } + + describe 'values in database for mail received' do + before do + subject + procedure.reload + end + + it { expect(procedure.mail_received.object).to eq object } + it { expect(procedure.mail_received.body).to eq body } + end + end + end +end \ No newline at end of file diff --git a/spec/factories/mail_received.rb b/spec/factories/mail_received.rb new file mode 100644 index 000000000..2e6ef674c --- /dev/null +++ b/spec/factories/mail_received.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + factory :mail_received do + object "Mail d'accusé de bonne reception de votre dossier" + body "Votre dossier est correctement reçu" + type 'MailReceived' + end +end diff --git a/spec/models/mail_template_spec.rb b/spec/models/mail_template_spec.rb new file mode 100644 index 000000000..5a6d937eb --- /dev/null +++ b/spec/models/mail_template_spec.rb @@ -0,0 +1,27 @@ +require 'spec_helper' + +describe MailTemplate do + it { is_expected.to have_db_column(:body) } + it { is_expected.to have_db_column(:type) } + + it { is_expected.to belong_to(:procedure) } + + describe '.balises' do + subject { MailTemplate.balises } + + it { expect(subject.size).to eq 1 } + + describe 'numero_dossier' do + subject { super().first } + + it { expect(subject.first).to eq 'numero_dossier' } + + describe 'attr and description value' do + subject { super().second } + + it { expect(subject[:attr]).to eq 'dossier.id' } + it { expect(subject[:description]).to eq "Permet d'afficher le numéro de dossier de l'utilisateur." } + end + end + end +end diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index 0cf700164..4c67b4b9f 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -5,6 +5,8 @@ describe Procedure do it { is_expected.to have_many(:types_de_piece_justificative) } it { is_expected.to have_many(:types_de_champ) } it { is_expected.to have_many(:dossiers) } + it { is_expected.to have_many(:mail_templates) } + it { is_expected.to have_one(:mail_received) } it { is_expected.to have_one(:module_api_carto) } it { is_expected.to belong_to(:administrateur) } end @@ -20,6 +22,36 @@ describe Procedure do it { is_expected.to have_db_column(:logo_secure_token) } it { is_expected.to have_db_column(:cerfa_flag) } it { is_expected.to have_db_column(:published) } + + describe 'mail_received' do + let(:procedure) { create :procedure } + + before do + create :mail_received, procedure: procedure + end + + it { expect(procedure.mail_received).not_to be_nil } + end + + end + + describe '#build_default_mails' do + subject { build :procedure } + + it 'call the fonction build_default_mails' do + expect(subject).to receive(:build_default_mails) + subject.save + end + + describe 'accessible values' do + + before do + subject.save + end + + it { expect(subject.mail_templates.size).to eq 1 } + it { expect(subject.mail_received).not_to be_nil } + end end describe 'validation' do From f03733f3ff2ad7209f7c4b6ede2011ce443c4f89 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 10:27:22 +0200 Subject: [PATCH 29/53] Mail for receive dossier is now send. --- .../backoffice/dossiers_controller.rb | 2 + app/mailers/notification_mailer.rb | 4 ++ app/models/mail_received.rb | 2 +- app/models/mail_template.rb | 27 ++++++++- app/views/admin/mails/index.html.haml | 2 +- .../dossier_received.text.erb | 1 + .../backoffice/dossiers_controller_spec.rb | 23 ++++++-- spec/mailers/notification_mailer_spec.rb | 10 ++++ spec/models/mail_template_spec.rb | 59 ++++++++++++++++--- 9 files changed, 112 insertions(+), 18 deletions(-) create mode 100644 app/views/notification_mailer/dossier_received.text.erb diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 76230a9d0..dde387679 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -54,6 +54,8 @@ class Backoffice::DossiersController < ApplicationController @facade.dossier.next_step! 'gestionnaire', 'receive' flash.notice = 'Dossier considéré comme reçu.' + NotificationMailer.dossier_received(@facade.dossier).deliver_now! + render 'show' end diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb index 3b9ee8bd1..5f4303042 100644 --- a/app/mailers/notification_mailer.rb +++ b/app/mailers/notification_mailer.rb @@ -3,6 +3,10 @@ class NotificationMailer < ApplicationMailer send_mail dossier, "Nouveau commentaire pour votre dossier TPS N°#{dossier.id}" end + def dossier_received dossier + send_mail dossier, MailTemplate.replace_tags(dossier.procedure.mail_received.object, dossier) + end + def dossier_validated dossier send_mail dossier, "Votre dossier TPS N°#{dossier.id} a été validé" end diff --git a/app/models/mail_received.rb b/app/models/mail_received.rb index b8611eea9..232260865 100644 --- a/app/models/mail_received.rb +++ b/app/models/mail_received.rb @@ -6,7 +6,7 @@ class MailReceived < MailTemplate self.body ||= "Bonjour,

- Votre administration vous confirme la bonne réception de votre dossier complet. Celui-ci sera instruit dans le délais légal déclaré par votre interlocuteur.
+ Votre administration vous confirme la bonne réception de votre dossier n°--numero_dossier-- complet. Celui-ci sera instruit dans le délais légal déclaré par votre interlocuteur.

En vous souhaitant une bonne journée,
diff --git a/app/models/mail_template.rb b/app/models/mail_template.rb index 116570d83..d51c8dbb8 100644 --- a/app/models/mail_template.rb +++ b/app/models/mail_template.rb @@ -1,10 +1,33 @@ class MailTemplate < ActiveRecord::Base belongs_to :procedure - enum balises: { + enum tags: { numero_dossier: { - attr: 'dossier.id', description: "Permet d'afficher le numéro de dossier de l'utilisateur." + }, + libelle_procedure: { + description: "Permet d'afficher le libellé de la procédure." } } + + def self.replace_tags string, dossier + @dossier = dossier + + tags.inject(string) do |acc, tag| + acc.gsub!("--#{tag.first}--", replace_tag(tag.first.to_sym)) || acc + end + end + + private + + def self.replace_tag tag + case tag + when :numero_dossier + @dossier.id.to_s + when :libelle_procedure + @dossier.procedure.libelle + else + '--BALISE_NON_RECONNUE--' + end + end end diff --git a/app/views/admin/mails/index.html.haml b/app/views/admin/mails/index.html.haml index 26b258e61..a910f76fe 100644 --- a/app/views/admin/mails/index.html.haml +++ b/app/views/admin/mails/index.html.haml @@ -18,7 +18,7 @@ Balise %th Description - - MailTemplate.balises.each do |balise| + - MailTemplate.tags.each do |balise| %tr %td.center %b.text-success diff --git a/app/views/notification_mailer/dossier_received.text.erb b/app/views/notification_mailer/dossier_received.text.erb new file mode 100644 index 000000000..42db34458 --- /dev/null +++ b/app/views/notification_mailer/dossier_received.text.erb @@ -0,0 +1 @@ +<%= MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier %> \ No newline at end of file diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 13c22edff..7769cc888 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' describe Backoffice::DossiersController, type: :controller do before do - @request.env['HTTP_REFERER'] = TPS::Application::URL + @request.env['HTTP_REFERER'] = TPS::Application::URL end let(:dossier) { create(:dossier, :with_entreprise) } @@ -125,11 +125,24 @@ describe Backoffice::DossiersController, type: :controller do sign_in gestionnaire end - it 'change state to received' do - post :receive, dossier_id: dossier_id + subject { post :receive, dossier_id: dossier_id } - dossier.reload - expect(dossier.state).to eq('received') + context 'when it post a receive instruction' do + before do + subject + dossier.reload + end + + it 'change state to received' do + expect(dossier.state).to eq('received') + end + end + + it 'Notification email is send' do + expect(NotificationMailer).to receive(:dossier_received).and_return(NotificationMailer) + expect(NotificationMailer).to receive(:deliver_now!) + + subject end end diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index 44f5d68ea..ff411562d 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -34,4 +34,14 @@ RSpec.describe NotificationMailer, type: :mailer do it { expect(subject.body).to match("ce jour à #{dossier.updated_at}.") } it { expect(subject.subject).to eq("Votre dossier TPS N°#{dossier.id} a été déposé") } end + + describe '.dossier_received' do + let(:user) { create(:user) } + let(:dossier) { create(:dossier, user: user) } + + subject(:subject) { described_class.dossier_received(dossier) } + + it { expect(subject.subject).to eq("[TPS] Accusé de réception pour votre dossier n°#{dossier.id}") } + it { expect(subject.body).to match("Votre administration vous confirme la bonne réception de votre dossier n°#{dossier.id}") } + end end diff --git a/spec/models/mail_template_spec.rb b/spec/models/mail_template_spec.rb index 5a6d937eb..dbbe349ef 100644 --- a/spec/models/mail_template_spec.rb +++ b/spec/models/mail_template_spec.rb @@ -6,22 +6,63 @@ describe MailTemplate do it { is_expected.to belong_to(:procedure) } - describe '.balises' do - subject { MailTemplate.balises } + describe '.tags' do + subject { MailTemplate.tags } - it { expect(subject.size).to eq 1 } + it { expect(subject.size).to eq 2 } describe 'numero_dossier' do - subject { super().first } - - it { expect(subject.first).to eq 'numero_dossier' } + subject { super()['numero_dossier'] } describe 'attr and description value' do - subject { super().second } - it { expect(subject[:attr]).to eq 'dossier.id' } - it { expect(subject[:description]).to eq "Permet d'afficher le numéro de dossier de l'utilisateur." } + it { expect(subject['description']).to eq "Permet d'afficher le numéro de dossier de l'utilisateur." } + end + end + + describe 'numero_dossier' do + subject { super()['libelle_procedure'] } + + describe 'attr and description value' do + + it { expect(subject['description']).to eq "Permet d'afficher le libellé de la procédure." } end end end + + describe '.replace_tags' do + let(:dossier) { create :dossier } + let(:procedure) { dossier.procedure } + let(:mail_received) { procedure.mail_received } + + describe 'for tag --numero_dossier--' do + before do + procedure.mail_received.update_column(:object, '[TPS] Dossier n°--numero_dossier--') + end + + subject { MailTemplate.replace_tags procedure.mail_received.object, dossier } + + it { expect(subject).to eq "[TPS] Dossier n°#{dossier.id}" } + end + + describe 'for tag --libelle_procedure--' do + before do + procedure.mail_received.update_column(:object, '[TPS] Dossier pour la procédure --libelle_procedure--') + end + + subject { MailTemplate.replace_tags procedure.mail_received.object, dossier } + + it { expect(subject).to eq "[TPS] Dossier pour la procédure #{procedure.libelle}" } + end + + describe 'multiple tags' do + before do + procedure.mail_received.update_column(:object, '[TPS] Dossier n°--numero_dossier-- pour la procédure --libelle_procedure-- et encore le numéro : --numero_dossier--') + end + + subject { MailTemplate.replace_tags procedure.mail_received.object, dossier } + + it { expect(subject).to eq "[TPS] Dossier n°#{dossier.id} pour la procédure #{procedure.libelle} et encore le numéro : #{dossier.id}" } + end + end end From 7a81b18d660d68d6a04a6c52f22b8f28a3d794f7 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 10:40:20 +0200 Subject: [PATCH 30/53] Initiated all Procedure mail_received --- ...itiated_all_received_mail_for_procedure.rb | 41 +++++++++++++++++++ db/schema.rb | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20160901082824_initiated_all_received_mail_for_procedure.rb diff --git a/db/migrate/20160901082824_initiated_all_received_mail_for_procedure.rb b/db/migrate/20160901082824_initiated_all_received_mail_for_procedure.rb new file mode 100644 index 000000000..225745646 --- /dev/null +++ b/db/migrate/20160901082824_initiated_all_received_mail_for_procedure.rb @@ -0,0 +1,41 @@ +class InitiatedAllReceivedMailForProcedure < ActiveRecord::Migration + class Procedure < ActiveRecord::Base + has_one :mail_received + end + + class MailTemplate < ActiveRecord::Base + + end + + class ::MailReceived < MailTemplate + before_save :default_values + + def default_values + self.object ||= "[TPS] Accusé de réception pour votre dossier n°--numero_dossier--" + self.body ||= "Bonjour, +
+
+ Votre administration vous confirme la bonne réception de votre dossier n°--numero_dossier-- complet. Celui-ci sera instruit dans le délais légal déclaré par votre interlocuteur.
+
+ En vous souhaitant une bonne journée, +
+
+ --- +
+ L'équipe TPS" + end + end + + def up + Procedure.all.each do |procedure| + procedure.mail_received ||= MailReceived.create(type: 'MailReceived') + procedure.save + end + end + + def down + Procedure.all.each do |procedure| + procedure.mail_received.delete + end + end +end diff --git a/db/schema.rb b/db/schema.rb index c377a367d..3b12345df 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160830142653) do +ActiveRecord::Schema.define(version: 20160901082824) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" From b56883db165b31794317fef8d576eb993ede21f5 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 10:43:49 +0200 Subject: [PATCH 31/53] Clone mail_templates where clone procedure --- app/models/procedure.rb | 2 +- spec/models/procedure_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 0bef80a6c..a99204e3a 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -87,7 +87,7 @@ class Procedure < ActiveRecord::Base end def clone - procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto]) + procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto, :mail_templates]) procedure.archived = false procedure.published = false return procedure if procedure.save diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index 4c67b4b9f..bd720b25a 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -164,6 +164,11 @@ describe Procedure do let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) } let!(:piece_justificative_0) { create(:type_de_piece_justificative, procedure: procedure, order_place: 0) } let!(:piece_justificative_1) { create(:type_de_piece_justificative, procedure: procedure, order_place: 1) } + + before do + procedure.mail_received.object = "Je vais être cloné" + end + subject { procedure.clone } it 'should duplicate specific objects with different id' do @@ -171,6 +176,7 @@ describe Procedure do expect(subject).to have_same_attributes_as(procedure) expect(subject.module_api_carto).to have_same_attributes_as(procedure.module_api_carto) + subject.types_de_champ.zip(procedure.types_de_champ).each do |stc, ptc| expect(stc).to have_same_attributes_as(ptc) end @@ -178,6 +184,10 @@ describe Procedure do subject.types_de_piece_justificative.zip(procedure.types_de_piece_justificative).each do |stc, ptc| expect(stc).to have_same_attributes_as(ptc) end + + subject.mail_templates.zip(procedure.mail_templates).each do |stc, ptc| + expect(stc).to have_same_attributes_as(ptc) + end end it 'should not duplicate specific related objects' do From a48299353e76730e97f789614db52aacd4048d21 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 11:00:06 +0200 Subject: [PATCH 32/53] Fix html interpretation in ReceivedMail --- app/views/notification_mailer/dossier_received.html.erb | 1 + app/views/notification_mailer/dossier_received.text.erb | 1 - config/environments/development.rb | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 app/views/notification_mailer/dossier_received.html.erb delete mode 100644 app/views/notification_mailer/dossier_received.text.erb diff --git a/app/views/notification_mailer/dossier_received.html.erb b/app/views/notification_mailer/dossier_received.html.erb new file mode 100644 index 000000000..9064120b6 --- /dev/null +++ b/app/views/notification_mailer/dossier_received.html.erb @@ -0,0 +1 @@ +<%= (MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier).html_safe %> \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_received.text.erb b/app/views/notification_mailer/dossier_received.text.erb deleted file mode 100644 index 42db34458..000000000 --- a/app/views/notification_mailer/dossier_received.text.erb +++ /dev/null @@ -1 +0,0 @@ -<%= MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier %> \ No newline at end of file diff --git a/config/environments/development.rb b/config/environments/development.rb index 66984e511..52c597431 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -37,10 +37,10 @@ Rails.application.configure do config.assets.raise_runtime_errors = true config.action_mailer.delivery_method = :test - config.action_mailer.default_url_options = { :host => 'localhost:3000' } + config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } # Raises error for missing translations # config.action_view.raise_on_missing_translations = true - config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } + end From 1c5cd471cd41326ad781f33fb0d41ba4f9cb8b9c Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 1 Sep 2016 12:09:44 +0200 Subject: [PATCH 33/53] Externalize in config file SIADE API URL. --- config/deploy.rb | 1 + config/initializers/urls.rb | 5 +++++ lib/siade/api.rb | 6 +----- 3 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 config/initializers/urls.rb diff --git a/config/deploy.rb b/config/deploy.rb index 4350ccd30..a40a9c2b6 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -68,6 +68,7 @@ set :shared_paths, [ 'config/initializers/features.yml', "config/environments/#{ENV['to']}.rb", "config/initializers/token.rb", + "config/initializers/urls.rb", "config/initializers/super_admin.rb", "config/unicorn.rb", "config/initializers/raven.rb", diff --git a/config/initializers/urls.rb b/config/initializers/urls.rb new file mode 100644 index 000000000..bb49d1437 --- /dev/null +++ b/config/initializers/urls.rb @@ -0,0 +1,5 @@ +if Rails.env.production? + SIADEURL = 'https://api.apientreprise.fr' +else + SIADEURL = 'https://api-dev.apientreprise.fr' +end \ No newline at end of file diff --git a/lib/siade/api.rb b/lib/siade/api.rb index 620c5f627..c182ab8c8 100644 --- a/lib/siade/api.rb +++ b/lib/siade/api.rb @@ -38,10 +38,6 @@ class SIADE::API end def self.base_url - if Rails.env.production? - 'https://api.apientreprise.fr' - else - 'https://api-dev.apientreprise.fr' - end + SIADEURL end end From 6a6ac7872a27a4b75ebcfae6f735ae0782da78b9 Mon Sep 17 00:00:00 2001 From: Guillaume Lazzara Date: Fri, 2 Sep 2016 17:10:55 +0200 Subject: [PATCH 34/53] Force deep copy of procedure logo --- app/models/procedure.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/procedure.rb b/app/models/procedure.rb index a99204e3a..317f70f44 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -90,6 +90,8 @@ class Procedure < ActiveRecord::Base procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto, :mail_templates]) procedure.archived = false procedure.published = false + procedure.logo_secure_token = nil + procedure.remote_logo_url = self.logo_url return procedure if procedure.save end From d5ad2569190425683aeeb6efa95bc4b431eddba3 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 6 Sep 2016 11:07:26 +0200 Subject: [PATCH 35/53] create route and controller to filter dossier view by procedure --- .../dossiers/procedure_controller.rb | 34 +++++++++++++++ app/facades/dossiers_list_facades.rb | 5 ++- .../dossiers_list_gestionnaire_service.rb | 22 +++++----- app/views/backoffice/dossiers/index.html.haml | 6 +-- config/routes.rb | 41 +++++++++---------- 5 files changed, 71 insertions(+), 37 deletions(-) create mode 100644 app/controllers/backoffice/dossiers/procedure_controller.rb diff --git a/app/controllers/backoffice/dossiers/procedure_controller.rb b/app/controllers/backoffice/dossiers/procedure_controller.rb new file mode 100644 index 000000000..1f55c5f42 --- /dev/null +++ b/app/controllers/backoffice/dossiers/procedure_controller.rb @@ -0,0 +1,34 @@ +class Backoffice::Dossiers::ProcedureController < ApplicationController + include SmartListing::Helper::ControllerExtensions + helper SmartListing::Helper + + before_action :authenticate_gestionnaire! + + def show + smartlisting_dossier (params[:liste] || 'a_traiter') + + render 'backoffice/dossiers/index' + rescue ActiveRecord::RecordNotFound + flash[:alert] = "Cette procédure n'existe pas ou vous n'y avez pas accès." + redirect_to backoffice_dossiers_path + end + + private + + def smartlisting_dossier liste + create_dossiers_list_facade liste + + @dossiers = smart_listing_create :dossiers, + @dossiers_list_facade.dossiers_to_display, + partial: "backoffice/dossiers/list", + array: true + end + + def create_dossiers_list_facade liste='a_traiter' + @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, liste, retrieve_procedure + end + + def retrieve_procedure + current_gestionnaire.procedures.find params[:id] + end +end diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 576e4d55a..ae376bbea 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -1,12 +1,13 @@ class DossiersListFacades - def initialize current_devise_profil, liste + def initialize current_devise_profil, liste, procedure = nil @current_devise_profil = current_devise_profil @liste = liste + @procedure = procedure end def service if gestionnaire? - @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste + @service ||= DossiersListGestionnaireService.new @current_devise_profil, @liste, @procedure elsif user? @service ||= DossiersListUserService.new @current_devise_profil, @liste end diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb index 2ef534620..a4ca81d98 100644 --- a/app/services/dossiers_list_gestionnaire_service.rb +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -1,7 +1,8 @@ class DossiersListGestionnaireService - def initialize current_devise_profil, liste + def initialize current_devise_profil, liste, procedure = nil @current_devise_profil = current_devise_profil @liste = liste + @procedure = procedure end def dossiers_to_display @@ -10,35 +11,34 @@ class DossiersListGestionnaireService 'en_attente' => waiting_for_user, 'deposes' => deposes, 'a_instruire' => a_instruire, - 'termine' => termine, - 'suivi' => suivi}[@liste] + 'termine' => termine}[@liste] end def nouveaux - @nouveaux ||= @current_devise_profil.dossiers.nouveaux + @nouveaux ||= filter_dossiers.nouveaux end def waiting_for_gestionnaire - @waiting_for_gestionnaire ||= @current_devise_profil.dossiers.waiting_for_gestionnaire + @waiting_for_gestionnaire ||= filter_dossiers.waiting_for_gestionnaire end def waiting_for_user - @waiting_for_user ||= @current_devise_profil.dossiers.waiting_for_user + @waiting_for_user ||= filter_dossiers.waiting_for_user end def deposes - @deposes ||= @current_devise_profil.dossiers.deposes + @deposes ||= filter_dossiers.deposes end def a_instruire - @a_instruire ||= @current_devise_profil.dossiers.a_instruire + @a_instruire ||= filter_dossiers.a_instruire end def termine - @termine ||= @current_devise_profil.dossiers.termine + @termine ||= filter_dossiers.termine end - def suivi - @suivi ||= @current_devise_profil.dossiers_follow + def filter_dossiers + @procedure.nil? ? @current_devise_profil.dossiers : @procedure.dossiers end end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/index.html.haml b/app/views/backoffice/dossiers/index.html.haml index c4fab90de..b6473abf4 100644 --- a/app/views/backoffice/dossiers/index.html.haml +++ b/app/views/backoffice/dossiers/index.html.haml @@ -1,10 +1,10 @@ #backoffice_index #pref_list_menu - = render partial: 'pref_list' - = render partial: 'onglets' + = render partial: 'backoffice/dossiers/pref_list' + = render partial: 'backoffice/dossiers/onglets' = smart_listing_render :dossiers %br %br - = render partial: 'state_description', locals: {dossiers_list_facade: @dossiers_list_facade} + = render partial: 'backoffice/dossiers/state_description', locals: {dossiers_list_facade: @dossiers_list_facade} diff --git a/config/routes.rb b/config/routes.rb index 673bdbb14..13e67732a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -37,6 +37,12 @@ Rails.application.routes.draw do root 'root#index' get 'cgu' => 'cgu#index' + get 'demo' => 'demo#index' + get 'users' => 'users#index' + get 'admin' => 'admin#index' + get 'backoffice' => 'backoffice#index' + + resources :administrations namespace :france_connect do get 'particulier' => 'particulier#login' @@ -47,9 +53,6 @@ Rails.application.routes.draw do post 'particulier/check_email' => 'particulier#check_email' end - get 'demo' => 'demo#index' - get 'users' => 'users#index' - namespace :users do namespace :dossiers do resources :invites, only: [:index, :show] @@ -85,8 +88,6 @@ Rails.application.routes.draw do resource :dossiers end - get 'admin' => 'admin#index' - namespace :admin do get 'sign_in' => '/administrateurs/sessions#new' get 'procedures/archived' => 'procedures#archived' @@ -139,25 +140,13 @@ Rails.application.routes.draw do get 'address_point' => 'search#get_address_point' end - get 'backoffice' => 'backoffice#index' - namespace :backoffice do get 'sign_in' => '/gestionnaires/sessions#new' - get 'dossiers/search' => 'dossiers#search' + get 'download_dossiers_tps' => 'dossiers#download_dossiers_tps' resource :private_formulaire - namespace :preference_list_dossier do - post 'add' - delete 'delete' - - get 'reload_smartlisting' => '/backoffice/dossiers#reload_smartlisting' - get 'reload_pref_list' - end - - get 'download_dossiers_tps' => 'dossiers#download_dossiers_tps' - resources :dossiers do post 'valid' => 'dossiers#valid' post 'receive' => 'dossiers#receive' @@ -170,10 +159,20 @@ Rails.application.routes.draw do put 'follow' => 'dossiers#follow' end - resources :commentaires, only: [:create] - end + namespace :dossiers do + resources :procedure, only: [:show] + end - resources :administrations + resources :commentaires, only: [:create] + + namespace :preference_list_dossier do + post 'add' + delete 'delete' + + get 'reload_smartlisting' => '/backoffice/dossiers#reload_smartlisting' + get 'reload_pref_list' + end + end namespace :api do namespace :v1 do From bb199820111cf8185bb36eb5cc2273bdcbd188f3 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 6 Sep 2016 14:07:07 +0200 Subject: [PATCH 36/53] Change onglet url to dynamic gestion --- app/facades/dossiers_list_facades.rb | 30 +++++++++++++++++++ .../backoffice/dossiers/_onglets.html.haml | 12 ++++---- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index ae376bbea..0ef6a6baf 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -1,4 +1,6 @@ class DossiersListFacades + include Rails.application.routes.url_helpers + def initialize current_devise_profil, liste, procedure = nil @current_devise_profil = current_devise_profil @liste = liste @@ -102,6 +104,30 @@ class DossiersListFacades def invite_total service.invite.count end + + def nouveaux_url + base_url 'nouveaux' + end + + def a_traiter_url + base_url 'a_traiter' + end + + def en_attente_url + base_url 'en_attente' + end + + def deposes_url + base_url 'deposes' + end + + def a_instruire_url + base_url 'a_instruire' + end + + def termine_url + base_url 'termine' + end private @@ -112,4 +138,8 @@ class DossiersListFacades def user? @current_devise_profil.class == User end + + def base_url liste + @procedure.nil? ? backoffice_dossiers_path(liste: liste) : backoffice_dossiers_procedure_path(id: @procedure.id, liste: liste) + end end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index 2d88d5b7b..55c4c85a4 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -5,42 +5,42 @@ #onglets %ul.nav.nav-tabs %li{ class: (@dossiers_list_facade.nouveaux_class)} - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'nouveaux')}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers non ouverts.'} + %a{:href => "#{url_for @dossiers_list_facade.nouveaux_url}", 'data-toggle' => :tooltip, title: 'Les nouveaux dossiers non ouverts.'} %h5.text-info = "Nouveaux " .badge.progress-bar-info =@dossiers_list_facade.nouveaux_total %li{ class: (@dossiers_list_facade.a_traiter_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_traiter')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} + %a{:href => "#{url_for @dossiers_list_facade.a_traiter_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui requièrent une action de votre part.'} %h5.text-danger = "Action requise" .badge.progress-bar-danger =@dossiers_list_facade.a_traiter_total %li{ class: (@dossiers_list_facade.en_attente_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'en_attente')}", 'data-toggle' => :tooltip, title: 'Les dossiers en attentes d\'une action de la part de l\'usager.'} + %a{:href => "#{url_for @dossiers_list_facade.en_attente_url}", 'data-toggle' => :tooltip, title: 'Les dossiers en attentes d\'une action de la part de l\'usager.'} %h5.text-default ="Attente usager " .badge.progress-bar-default =@dossiers_list_facade.en_attente_total %li{ class: (@dossiers_list_facade.deposes_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'deposes')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant instruction.'} + %a{:href => "#{url_for @dossiers_list_facade.deposes_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant instruction.'} %h5.text-purple ="À réceptionner" .badge.progress-bar-purple =@dossiers_list_facade.deposes_total %li{ class: (@dossiers_list_facade.a_instruire_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'a_instruire')}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été notifiés comme bien réceptionnés et qui attendent un verdict final.'} + %a{:href => "#{url_for @dossiers_list_facade.a_instruire_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été notifiés comme bien réceptionnés et qui attendent un verdict final.'} %h5.text-warning = "À instruire" .badge.progress-bar-warning =@dossiers_list_facade.a_instruire_total %li{ class: (@dossiers_list_facade.termine_class) } - %a{:href => "#{url_for backoffice_dossiers_path(liste: 'termine')}",'data-toggle' => :tooltip, title: 'Tous les dossiers qui ont été traité avec un statut "Validé", "Refusé" ou "Sans suite "'} + %a{:href => "#{url_for @dossiers_list_facade.termine_url}",'data-toggle' => :tooltip, title: 'Tous les dossiers qui ont été traité avec un statut "Validé", "Refusé" ou "Sans suite "'} %h5.text-success = "Terminé" .badge.progress-bar-success From 62a0b84048bbbc89a2cc52410c48f713a9fc12f1 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Thu, 8 Sep 2016 16:21:54 +0200 Subject: [PATCH 37/53] Filter by procedure is activated on route /backoffice/dossiers/procedure/:id --- .../admin/accompagnateurs_controller.rb | 8 +- .../backoffice/dossiers_controller.rb | 8 +- .../preference_list_dossier_controller.rb | 19 +++- app/facades/dossiers_list_facades.rb | 8 ++ app/models/preference_list_dossier.rb | 1 + app/models/procedure.rb | 2 + app/services/accompagnateur_service.rb | 12 +++ .../dossiers_list_gestionnaire_service.rb | 2 +- app/views/backoffice/dossiers/_list.html.haml | 4 +- .../backoffice/dossiers/_pref_list.html.haml | 4 +- .../backoffice/dossiers/_pref_list.js.erb | 4 +- ..._add_has_procedure_to_pref_list_dossier.rb | 5 + ...ild_default_pref_list_dossier_procedure.rb | 44 +++++++++ db/schema.rb | 3 +- .../admin/accompagnateurs_controller_spec.rb | 6 +- ...preference_list_dossier_controller_spec.rb | 1 + spec/facades/dossiers_list_facades_spec.rb | 39 ++++++++ ...st_dossier_by_procedure_backoffice_spec.rb | 92 +++++++++++++++++++ spec/models/preference_list_dossier_spec.rb | 1 + spec/models/procedure_spec.rb | 1 + spec/services/accompagnateur_service_spec.rb | 38 +++++++- 21 files changed, 287 insertions(+), 15 deletions(-) create mode 100644 db/migrate/20160906123255_add_has_procedure_to_pref_list_dossier.rb create mode 100644 db/migrate/20160906134155_build_default_pref_list_dossier_procedure.rb create mode 100644 spec/facades/dossiers_list_facades_spec.rb create mode 100644 spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb diff --git a/app/controllers/admin/accompagnateurs_controller.rb b/app/controllers/admin/accompagnateurs_controller.rb index 83f9a6c94..ef47687a8 100644 --- a/app/controllers/admin/accompagnateurs_controller.rb +++ b/app/controllers/admin/accompagnateurs_controller.rb @@ -23,7 +23,13 @@ class Admin::AccompagnateursController < AdminController end def update - AccompagnateurService.change_assignement! Gestionnaire.find(params[:accompagnateur_id]), Procedure.find(params[:procedure_id]), params[:to] + gestionnaire = Gestionnaire.find(params[:accompagnateur_id]) + procedure = Procedure.find(params[:procedure_id]) + to = params[:to] + + + AccompagnateurService.change_assignement! gestionnaire, procedure, to + AccompagnateurService.build_default_column gestionnaire, procedure, to flash.notice = "Assignement effectué" redirect_to admin_procedure_accompagnateurs_path, procedure_id: params[:procedure_id] diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index dde387679..6918c4653 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -123,7 +123,7 @@ class Backoffice::DossiersController < ApplicationController end def create_dossiers_list_facade liste='a_traiter' - @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, liste + @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, liste, retrieve_procedure end def create_dossier_facade dossier_id @@ -133,4 +133,10 @@ class Backoffice::DossiersController < ApplicationController flash.alert = t('errors.messages.dossier_not_found') redirect_to url_for(controller: '/backoffice') end + + + def retrieve_procedure + return if params[:procedure_id].blank? + current_gestionnaire.procedures.find params[:procedure_id] + end end diff --git a/app/controllers/backoffice/preference_list_dossier_controller.rb b/app/controllers/backoffice/preference_list_dossier_controller.rb index 034ff1fb1..0b9e564b3 100644 --- a/app/controllers/backoffice/preference_list_dossier_controller.rb +++ b/app/controllers/backoffice/preference_list_dossier_controller.rb @@ -3,6 +3,7 @@ class Backoffice::PreferenceListDossierController < ApplicationController helper SmartListing::Helper before_action :authenticate_gestionnaire! + before_action :params_procedure_id def add PreferenceListDossier.create( @@ -13,14 +14,17 @@ class Backoffice::PreferenceListDossierController < ApplicationController bootstrap_lg: params[:bootstrap_lg], order: nil, filter: nil, - gestionnaire: current_gestionnaire + gestionnaire: current_gestionnaire, + procedure_id: params_procedure_id ) render partial: 'backoffice/dossiers/pref_list', formats: :js end def reload_pref_list - render partial: 'backoffice/dossiers/pref_list' + @dossiers_list_facade = DossiersListFacades.new current_gestionnaire, '', retrieve_procedure + + render partial: 'backoffice/dossiers/pref_list', id: params_procedure_id end def delete @@ -28,4 +32,15 @@ class Backoffice::PreferenceListDossierController < ApplicationController render partial: 'backoffice/dossiers/pref_list', formats: :js end + + private + + def params_procedure_id + @procedure_id ||= params[:procedure_id] + end + + def retrieve_procedure + return if params[:procedure_id].blank? + current_gestionnaire.procedures.find params_procedure_id + end end diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 0ef6a6baf..39ee69c4d 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -19,10 +19,18 @@ class DossiersListFacades @liste end + def procedure_id + @procedure.nil? ? nil : @procedure.id + end + def dossiers_to_display service.dossiers_to_display end + def preference_list_dossiers_filter + @list_table_columns ||= @current_devise_profil.preference_list_dossiers.where(procedure: @procedure).order(:id) + end + def nouveaux_class (@liste == 'nouveaux' ? 'active' : '') end diff --git a/app/models/preference_list_dossier.rb b/app/models/preference_list_dossier.rb index a6a57f985..cc0a00a4f 100644 --- a/app/models/preference_list_dossier.rb +++ b/app/models/preference_list_dossier.rb @@ -1,5 +1,6 @@ class PreferenceListDossier < ActiveRecord::Base belongs_to :gestionnaire + belongs_to :procedure def table_attr return self.attr if table.nil? || table.empty? diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 317f70f44..2489f53d2 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -15,6 +15,8 @@ class Procedure < ActiveRecord::Base has_many :assign_to, dependent: :destroy has_many :gestionnaires, through: :assign_to + has_many :preference_list_dossiers + delegate :use_api_carto, to: :module_api_carto accepts_nested_attributes_for :types_de_champ, :reject_if => proc { |attributes| attributes['libelle'].blank? }, :allow_destroy => true diff --git a/app/services/accompagnateur_service.rb b/app/services/accompagnateur_service.rb index 119560418..8a254e06f 100644 --- a/app/services/accompagnateur_service.rb +++ b/app/services/accompagnateur_service.rb @@ -9,4 +9,16 @@ class AccompagnateurService AssignTo.delete_all(gestionnaire: accompagnateur, procedure: procedure) end end + + def self.build_default_column accompagnateur, procedure, to + return unless to == ASSIGN + return unless PreferenceListDossier.where(gestionnaire: accompagnateur, procedure: procedure).empty? + + accompagnateur.preference_list_dossiers.each do |pref| + clone = pref.dup + + clone.procedure = procedure + clone.save + end + end end \ No newline at end of file diff --git a/app/services/dossiers_list_gestionnaire_service.rb b/app/services/dossiers_list_gestionnaire_service.rb index a4ca81d98..6e3cda519 100644 --- a/app/services/dossiers_list_gestionnaire_service.rb +++ b/app/services/dossiers_list_gestionnaire_service.rb @@ -39,6 +39,6 @@ class DossiersListGestionnaireService end def filter_dossiers - @procedure.nil? ? @current_devise_profil.dossiers : @procedure.dossiers + @filter_dossiers ||= @procedure.nil? ? @current_devise_profil.dossiers : @procedure.dossiers end end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index 8add886a6..64390423b 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -1,14 +1,14 @@ - unless smart_listing.empty? %table.table %thead - - current_gestionnaire.preference_list_dossiers.order(:id).each do |preference| + - @dossiers_list_facade.preference_list_dossiers_filter.each do |preference| %th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"}= smart_listing.sortable preference.libelle, preference.table_attr %th.col-md-1.col-lg-1.center Actions %th.col-md-1.col-lg-1.center Abonnés - @dossiers.each do |dossier| %tr - - current_gestionnaire.preference_list_dossiers.order(:id).each_with_index do |preference, index| + - @dossiers_list_facade.preference_list_dossiers_filter.each_with_index do |preference, index| %td - if preference.table.nil? || preference.table.empty? - value = dossier.decorate.public_send(preference.attr_decorate) diff --git a/app/views/backoffice/dossiers/_pref_list.html.haml b/app/views/backoffice/dossiers/_pref_list.html.haml index e802bb638..30731efcb 100644 --- a/app/views/backoffice/dossiers/_pref_list.html.haml +++ b/app/views/backoffice/dossiers/_pref_list.html.haml @@ -9,10 +9,11 @@ Actuelles %ul - - current_gestionnaire.preference_list_dossiers.order(:id).each_with_index do |preference, index| + - @dossiers_list_facade.preference_list_dossiers_filter.each_with_index do |preference, index| %li = form_tag backoffice_preference_list_dossier_delete_path, method: :delete, remote: true do = hidden_field_tag :pref_id, preference.id + = hidden_field_tag :procedure_id, preference.procedure_id = preference.libelle %button.btn.btn-default.btn-xs{type: :submit, id: "delete_pref_list_#{preference[:table]}_#{preference[:attr]}"} %i.fa.fa-minus @@ -36,6 +37,7 @@ = hidden_field_tag :attr, columns.second[:attr] = hidden_field_tag :attr_decorate, columns.second[:attr_decorate] = hidden_field_tag :bootstrap_lg, columns.second[:bootstrap_lg] + = hidden_field_tag :procedure_id, @dossiers_list_facade.procedure_id = columns.second[:libelle] %button.btn.btn-default.btn-xs{type: :submit, id: "add_pref_list_#{columns.second[:table]}_#{columns.second[:attr]}"} diff --git a/app/views/backoffice/dossiers/_pref_list.js.erb b/app/views/backoffice/dossiers/_pref_list.js.erb index 2d421e10f..e15e3f068 100644 --- a/app/views/backoffice/dossiers/_pref_list.js.erb +++ b/app/views/backoffice/dossiers/_pref_list.js.erb @@ -1,12 +1,12 @@ $.ajax({ method: 'get', - url: '/backoffice/preference_list_dossier/reload_smartlisting', + url: '/backoffice/preference_list_dossier/reload_smartlisting?procedure_id=<%= @procedure_id %>', async: true }); $.ajax({ methd: 'get', - url: '/backoffice/preference_list_dossier/reload_pref_list', + url: '/backoffice/preference_list_dossier/reload_pref_list?procedure_id=<%= @procedure_id %>', async: true }).done(function (data) { $("#pref_list_menu").html(data); diff --git a/db/migrate/20160906123255_add_has_procedure_to_pref_list_dossier.rb b/db/migrate/20160906123255_add_has_procedure_to_pref_list_dossier.rb new file mode 100644 index 000000000..e80588537 --- /dev/null +++ b/db/migrate/20160906123255_add_has_procedure_to_pref_list_dossier.rb @@ -0,0 +1,5 @@ +class AddHasProcedureToPrefListDossier < ActiveRecord::Migration + def change + add_belongs_to :preference_list_dossiers, :procedure + end +end diff --git a/db/migrate/20160906134155_build_default_pref_list_dossier_procedure.rb b/db/migrate/20160906134155_build_default_pref_list_dossier_procedure.rb new file mode 100644 index 000000000..bb4545d69 --- /dev/null +++ b/db/migrate/20160906134155_build_default_pref_list_dossier_procedure.rb @@ -0,0 +1,44 @@ +class BuildDefaultPrefListDossierProcedure < ActiveRecord::Migration + class Gestionnaire < ActiveRecord::Base + has_many :assign_to, dependent: :destroy + has_many :procedures, through: :assign_to + has_many :preference_list_dossiers + end + + class PreferenceListDossier < ActiveRecord::Base + belongs_to :gestionnaire + belongs_to :procedure + end + + class AssignTo < ActiveRecord::Base + belongs_to :procedure + belongs_to :gestionnaire + end + + class Procedure < ActiveRecord::Base + has_many :gestionnaires, through: :assign_to + has_many :preference_list_dossiers + end + + def up + Gestionnaire.all.each do |gestionnaire| + gestionnaire.procedures.each do |procedure| + gestionnaire.preference_list_dossiers.where(procedure: nil).each do |preference| + clone = preference.dup + + clone.procedure = procedure + clone.save + end + + base_object = gestionnaire.preference_list_dossiers.where(procedure: nil).size + created_object = gestionnaire.preference_list_dossiers.where(procedure: procedure).size + + raise "ERROR nb object (#{base_object} != #{created_object})" unless created_object == base_object + end + end + end + + def down + PreferenceListDossier.where('procedure_id IS NOT NULL') + end +end diff --git a/db/schema.rb b/db/schema.rb index 3b12345df..7533be06e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160901082824) do +ActiveRecord::Schema.define(version: 20160906134155) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -264,6 +264,7 @@ ActiveRecord::Schema.define(version: 20160901082824) do t.string "order" t.string "filter" t.integer "gestionnaire_id" + t.integer "procedure_id" end create_table "procedure_paths", force: :cascade do |t| diff --git a/spec/controllers/admin/accompagnateurs_controller_spec.rb b/spec/controllers/admin/accompagnateurs_controller_spec.rb index 42889eb1f..285b43feb 100644 --- a/spec/controllers/admin/accompagnateurs_controller_spec.rb +++ b/spec/controllers/admin/accompagnateurs_controller_spec.rb @@ -15,7 +15,7 @@ describe Admin::AccompagnateursController, type: :controller do end describe 'PUT #update' do - subject { put :update, accompagnateur_id: gestionnaire.id ,procedure_id: procedure.id } + subject { put :update, accompagnateur_id: gestionnaire.id ,procedure_id: procedure.id, to: 'assign' } it { expect(subject).to redirect_to admin_procedure_accompagnateurs_path(procedure_id: procedure.id) } @@ -25,6 +25,10 @@ describe Admin::AccompagnateursController, type: :controller do end it { expect(flash[:notice]).to be_present } + + it 'default pref list dossier procedure columns are created' do + expect(procedure.preference_list_dossiers.size).to eq gestionnaire.preference_list_dossiers.where('procedure_id IS NULL').size + end end end end \ No newline at end of file diff --git a/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb b/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb index ecf6c25f0..06ccf9b55 100644 --- a/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb +++ b/spec/controllers/backoffice/preference_list_dossier_controller_spec.rb @@ -36,6 +36,7 @@ describe Backoffice::PreferenceListDossierController, type: :controller do it { expect(last.bootstrap_lg).to eq bootstrap_lg } it { expect(last.order).to be_nil } it { expect(last.filter).to be_nil } + it { expect(last.procedure_id).to be_nil } it { expect(last.gestionnaire).to eq gestionnaire } end end diff --git a/spec/facades/dossiers_list_facades_spec.rb b/spec/facades/dossiers_list_facades_spec.rb new file mode 100644 index 000000000..c701092f8 --- /dev/null +++ b/spec/facades/dossiers_list_facades_spec.rb @@ -0,0 +1,39 @@ +require 'spec_helper' + +describe DossiersListFacades do + + let(:gestionnaire) { create :gestionnaire } + let(:procedure) { create :procedure } + + before do + create :preference_list_dossier, + gestionnaire: gestionnaire, + table: '', + attr: 'state', + attr_decorate: 'display_state' + + create :preference_list_dossier, + gestionnaire: gestionnaire, + table: '', + attr: 'state', + attr_decorate: 'display_state', + procedure_id: procedure.id + end + + describe '#preference_list_dossiers_filter' do + + subject { facade.preference_list_dossiers_filter } + + context 'when procedure is not pasted at the facade' do + let(:facade) { described_class.new gestionnaire, 'nouveaux' } + + it { expect(subject.size).to eq 6 } + end + + context 'when procedure is pasted at the facade' do + let(:facade) { described_class.new gestionnaire, 'nouveaux', procedure } + + it { expect(subject.size).to eq 1 } + end + end +end \ No newline at end of file diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb new file mode 100644 index 000000000..2a0c01147 --- /dev/null +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb @@ -0,0 +1,92 @@ +require 'spec_helper' + +feature 'usage of pref list dossier lateral panel by procedure', js: true do + + let(:administrateur) { create(:administrateur) } + let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } + let(:procedure) { create(:procedure, administrateur: administrateur) } + + before do + create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') + create :assign_to, procedure: procedure, gestionnaire: gestionnaire + visit backoffice_path + end + + scenario 'he is redirected to /gestionnaires/sign_id' do + expect(page).to have_css('#gestionnaire_login') + end + + context 'when user enter good credentials' do + before do + page.find_by_id(:gestionnaire_email).set gestionnaire.email + page.find_by_id(:gestionnaire_password).set gestionnaire.password + page.click_on 'Se connecter' + end + + scenario 'he is redirected to /backoffice/dossiers/' do + expect(page).to have_css('#backoffice_index') + end + + describe 'user navigate to dossiers list by procedure' do + before do + visit backoffice_dossiers_procedure_path(procedure.id) + end + + scenario 'lateral panel is masked' do + expect(page).to have_css('#pref_list_menu', visible: false) + end + + context 'when on click on pref list button' do + before do + page.click_on 'pref_list_dossier_open_action' + end + + scenario 'lateral panel is appeared' do + expect(page).to have_css('#pref_list_menu') + end + + context 'when on click on add attribut button' do + before do + page.click_on 'add_pref_list_entreprise_siren' + end + + scenario 'preference list panel is brought up to date' do + wait_for_ajax + expect(page).to have_css('#delete_pref_list_entreprise_siren') + end + + scenario 'dossier is brought up to date' do + wait_for_ajax + expect(page).to have_selector("a.sortable[data-attr='entreprise.siren']") + end + + context 'when on click on delete attribut button' do + before do + page.click_on 'delete_pref_list_entreprise_siren' + end + + scenario 'preference list panel is brought up to date' do + wait_for_ajax + expect(page).not_to have_css('#delete_pref_list_entreprise_siren') + end + + scenario 'dossier is brought up to date' do + wait_for_ajax + expect(page).not_to have_selector("a.sortable[data-attr='entreprise.siren']") + end + + context 'when on click on close pref list button' do + before do + page.click_on 'pref_list_dossier_close_action' + end + + scenario 'lateral panel is masked' do + expect(page).to have_css('#pref_list_menu', visible: false) + end + end + end + end + end + end + end +end \ No newline at end of file diff --git a/spec/models/preference_list_dossier_spec.rb b/spec/models/preference_list_dossier_spec.rb index e65b377fb..f84082084 100644 --- a/spec/models/preference_list_dossier_spec.rb +++ b/spec/models/preference_list_dossier_spec.rb @@ -11,6 +11,7 @@ describe PreferenceListDossier do it { is_expected.to have_db_column(:gestionnaire_id) } it { is_expected.to belong_to(:gestionnaire) } + it { is_expected.to belong_to(:procedure) } describe '.available_columns' do subject { PreferenceListDossier.available_columns } diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index bd720b25a..2b52bcb13 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -9,6 +9,7 @@ describe Procedure do it { is_expected.to have_one(:mail_received) } it { is_expected.to have_one(:module_api_carto) } it { is_expected.to belong_to(:administrateur) } + it { is_expected.to have_many(:preference_list_dossiers) } end describe 'attributes' do diff --git a/spec/services/accompagnateur_service_spec.rb b/spec/services/accompagnateur_service_spec.rb index 1c0dcf9ab..c939ecf27 100644 --- a/spec/services/accompagnateur_service_spec.rb +++ b/spec/services/accompagnateur_service_spec.rb @@ -1,10 +1,11 @@ require 'spec_helper' describe AccompagnateurService do - describe '#change_assignement!' do - let(:procedure) { create :procedure } - let(:accompagnateur) { create :gestionnaire } + let(:procedure) { create :procedure } + let(:accompagnateur) { create :gestionnaire } + + describe '#change_assignement!' do subject { AccompagnateurService.change_assignement! accompagnateur, procedure, to } @@ -29,4 +30,35 @@ describe AccompagnateurService do it { expect(accompagnateur.procedures).not_to include procedure } end end + + describe '#build_default_column' do + + subject { AccompagnateurService.build_default_column accompagnateur, procedure, to } + + context 'when to is not assign' do + let(:to) { AccompagnateurService::NOT_ASSIGN } + + it { is_expected.to be_nil } + end + + context 'when to is assign' do + let(:to) { AccompagnateurService::ASSIGN } + + context 'when gestionnaire has already preference for this procedure' do + before do + create :preference_list_dossier, gestionnaire: accompagnateur, procedure: procedure + end + + it { is_expected.to be_nil } + end + + context 'when gestionnaire has not preference for this procedure' do + before do + subject + end + + it { expect(accompagnateur.preference_list_dossiers.where('procedure_id IS NULL').size).to eq procedure.preference_list_dossiers.size } + end + end + end end \ No newline at end of file From 955c984a88571fe821e61def6bf6cbe78df723db Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 15:05:46 +0200 Subject: [PATCH 38/53] Gestionnaire can add specific attr on dossier list by procedure --- .../france_connect_information_decorator.rb | 5 +- app/models/gestionnaire.rb | 2 +- app/models/preference_list_dossier.rb | 31 ++++++-- app/models/type_de_champ.rb | 5 +- app/views/backoffice/dossiers/_list.html.haml | 14 +++- .../backoffice/dossiers/_pref_list.html.haml | 6 +- ...st_dossier_by_procedure_backoffice_spec.rb | 17 ++--- spec/models/preference_list_dossier_spec.rb | 71 ++++++++++++++++++- spec/models/type_de_champ_shared_example.rb | 11 +++ 9 files changed, 134 insertions(+), 28 deletions(-) diff --git a/app/decorators/france_connect_information_decorator.rb b/app/decorators/france_connect_information_decorator.rb index 206361fe8..27e69987d 100644 --- a/app/decorators/france_connect_information_decorator.rb +++ b/app/decorators/france_connect_information_decorator.rb @@ -1,4 +1,7 @@ class FranceConnectInformationDecorator < Draper::Decorator delegate_all - + + def gender_fr + gender == 'female' ? 'Mme' : 'Mr' + end end diff --git a/app/models/gestionnaire.rb b/app/models/gestionnaire.rb index 68d8f30ee..9ed8990fa 100644 --- a/app/models/gestionnaire.rb +++ b/app/models/gestionnaire.rb @@ -35,7 +35,7 @@ class Gestionnaire < ActiveRecord::Base def build_default_preferences_list_dossier - PreferenceListDossier.available_columns.each do |table| + PreferenceListDossier.available_columns_for.each do |table| table.second.each do |column| if valid_couple_table_attr? table.first, column.first diff --git a/app/models/preference_list_dossier.rb b/app/models/preference_list_dossier.rb index cc0a00a4f..c5af12636 100644 --- a/app/models/preference_list_dossier.rb +++ b/app/models/preference_list_dossier.rb @@ -7,14 +7,21 @@ class PreferenceListDossier < ActiveRecord::Base table + '.' + attr end - def self.available_columns - { + def self.available_columns_for procedure_id = nil + columns = { dossier: columns_dossier, procedure: columns_procedure, entreprise: columns_entreprise, etablissement: columns_etablissement, - user: columns_user + user: columns_user, + france_connect: columns_france_connect } + + columns = columns.merge({ + champs: columns_champs_procedure(procedure_id) + }) unless procedure_id.nil? + + columns end private @@ -65,7 +72,6 @@ class PreferenceListDossier < ActiveRecord::Base def self.columns_user table = 'user' - { email: create_column('Email', table, 'email', 'email', 2) } @@ -75,12 +81,23 @@ class PreferenceListDossier < ActiveRecord::Base table = 'france_connect_information' { - gender: create_column('Civilité', table, 'gender', 'gender', 1), - given_name: create_column('Prénom', table, 'given_name', 'given_name', 2), - family_name: create_column('Nom', table, 'family_name', 'family_name', 2) + gender: create_column('Civilité (FC)', table, 'gender', 'gender_fr', 1), + given_name: create_column('Prénom (FC)', table, 'given_name', 'given_name', 2), + family_name: create_column('Nom (FC)', table, 'family_name', 'family_name', 2) } end + def self.columns_champs_procedure procedure_id + table = 'champs' + + Procedure.find(procedure_id).types_de_champ.inject({}) do |acc, type_de_champ| + acc = acc.merge({ + "type_de_champ_#{type_de_champ.id}" => create_column(type_de_champ.libelle, table, type_de_champ.id, 'value', 2) + }) if type_de_champ.field_for_list? + acc + end + end + def self.create_column libelle, table, attr, attr_decorate, bootstrap_lg { libelle: libelle, diff --git a/app/models/type_de_champ.rb b/app/models/type_de_champ.rb index db33a1a9c..3950d37ea 100644 --- a/app/models/type_de_champ.rb +++ b/app/models/type_de_champ.rb @@ -22,7 +22,6 @@ class TypeDeChamp < ActiveRecord::Base accepts_nested_attributes_for :drop_down_list - validates :libelle, presence: true, allow_blank: false, allow_nil: false validates :type_champ, presence: true, allow_blank: false, allow_nil: false # validates :order_place, presence: true, allow_blank: false, allow_nil: false @@ -30,4 +29,8 @@ class TypeDeChamp < ActiveRecord::Base def self.type_de_champs_list_fr type_champs.map { |champ| [ I18n.t("activerecord.attributes.type_de_champ.type_champs.#{champ.last}"), champ.first ] } end + + def field_for_list? + !(type_champ == 'textarea' || type_champ == 'header_section') + end end \ No newline at end of file diff --git a/app/views/backoffice/dossiers/_list.html.haml b/app/views/backoffice/dossiers/_list.html.haml index 64390423b..f9fa09309 100644 --- a/app/views/backoffice/dossiers/_list.html.haml +++ b/app/views/backoffice/dossiers/_list.html.haml @@ -2,7 +2,12 @@ %table.table %thead - @dossiers_list_facade.preference_list_dossiers_filter.each do |preference| - %th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"}= smart_listing.sortable preference.libelle, preference.table_attr + %th{class: "col-md-#{preference.bootstrap_lg} col-lg-#{preference.bootstrap_lg}"} + - if preference.table == 'champs' + = preference.libelle + -else + = smart_listing.sortable preference.libelle, preference.table_attr + %th.col-md-1.col-lg-1.center Actions %th.col-md-1.col-lg-1.center Abonnés @@ -12,8 +17,13 @@ %td - if preference.table.nil? || preference.table.empty? - value = dossier.decorate.public_send(preference.attr_decorate) + - elsif preference.table == 'champs' + - value = dossier.champs.find_by_type_de_champ_id(preference.attr).value - else - - value = dossier.public_send(preference.table).decorate.public_send(preference.attr_decorate) + - begin + - value = dossier.public_send(preference.table).decorate.public_send(preference.attr_decorate) + - rescue NoMethodError + - value = '' - if index == 0 = link_to value, backoffice_dossier_path(id: dossier.id) diff --git a/app/views/backoffice/dossiers/_pref_list.html.haml b/app/views/backoffice/dossiers/_pref_list.html.haml index 30731efcb..45825b606 100644 --- a/app/views/backoffice/dossiers/_pref_list.html.haml +++ b/app/views/backoffice/dossiers/_pref_list.html.haml @@ -22,11 +22,11 @@ Disponibles %table - - PreferenceListDossier.available_columns.each_with_index do |tables, index| - - if index%2 == 0 + - PreferenceListDossier.available_columns_for(@dossiers_list_facade.procedure_id).each_with_index do |tables, index| + - if index%2 == 0 || tables.first == :champs %tr - %td.col-sm-5.col-md-5.col-lg-5{style: 'vertical-align: top'} + %td.col-sm-5.col-md-5.col-lg-5{style: 'vertical-align: top', colspan: (tables.first == :champs ? 2 : 1)} %h5= tables.first.to_s.gsub('_', ' ').capitalize %ul - tables.second.each do |columns| diff --git a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb index 2a0c01147..d9b97d581 100644 --- a/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb +++ b/spec/features/backoffice/lateral_page_pref_list_dossier_by_procedure_backoffice_spec.rb @@ -4,7 +4,7 @@ feature 'usage of pref list dossier lateral panel by procedure', js: true do let(:administrateur) { create(:administrateur) } let(:gestionnaire) { create(:gestionnaire, administrateurs: [administrateur]) } - let(:procedure) { create(:procedure, administrateur: administrateur) } + let(:procedure) { create(:procedure, :with_type_de_champ, administrateur: administrateur) } before do create(:dossier, :with_entreprise, procedure: procedure, state: 'updated') @@ -45,29 +45,24 @@ feature 'usage of pref list dossier lateral panel by procedure', js: true do expect(page).to have_css('#pref_list_menu') end - context 'when on click on add attribut button' do + context 'when on click on add attribut specific at the procedure button' do before do - page.click_on 'add_pref_list_entreprise_siren' + page.click_on 'add_pref_list_champs_'+procedure.types_de_champ.first.id.to_s end scenario 'preference list panel is brought up to date' do wait_for_ajax - expect(page).to have_css('#delete_pref_list_entreprise_siren') - end - - scenario 'dossier is brought up to date' do - wait_for_ajax - expect(page).to have_selector("a.sortable[data-attr='entreprise.siren']") + expect(page).to have_css('#delete_pref_list_champs_'+procedure.types_de_champ.first.id.to_s) end context 'when on click on delete attribut button' do before do - page.click_on 'delete_pref_list_entreprise_siren' + page.click_on 'delete_pref_list_champs_'+procedure.types_de_champ.first.id.to_s end scenario 'preference list panel is brought up to date' do wait_for_ajax - expect(page).not_to have_css('#delete_pref_list_entreprise_siren') + expect(page).not_to have_css('#delete_pref_list_champs_'+procedure.types_de_champ.first.id.to_s) end scenario 'dossier is brought up to date' do diff --git a/spec/models/preference_list_dossier_spec.rb b/spec/models/preference_list_dossier_spec.rb index f84082084..095d1083d 100644 --- a/spec/models/preference_list_dossier_spec.rb +++ b/spec/models/preference_list_dossier_spec.rb @@ -13,8 +13,10 @@ describe PreferenceListDossier do it { is_expected.to belong_to(:gestionnaire) } it { is_expected.to belong_to(:procedure) } - describe '.available_columns' do - subject { PreferenceListDossier.available_columns } + describe '.available_columns_for' do + let(:procedure_id) { nil } + + subject { PreferenceListDossier.available_columns_for procedure_id } describe 'dossier' do subject { super()[:dossier] } @@ -250,5 +252,70 @@ describe PreferenceListDossier do it { expect(subject[:filter]).to be_nil } end end + + describe 'france_connect' do + subject { super()[:france_connect] } + + it { expect(subject.size).to eq 3 } + + describe 'gender' do + subject { super()[:gender] } + + it { expect(subject[:libelle]).to eq 'Civilité (FC)' } + it { expect(subject[:table]).to eq 'france_connect_information' } + it { expect(subject[:attr]).to eq 'gender' } + it { expect(subject[:attr_decorate]).to eq 'gender_fr' } + it { expect(subject[:bootstrap_lg]).to eq 1 } + it { expect(subject[:order]).to be_nil } + it { expect(subject[:filter]).to be_nil } + end + + describe 'family_name' do + subject { super()[:family_name] } + + it { expect(subject[:libelle]).to eq 'Nom (FC)' } + it { expect(subject[:table]).to eq 'france_connect_information' } + it { expect(subject[:attr]).to eq 'family_name' } + it { expect(subject[:attr_decorate]).to eq 'family_name' } + it { expect(subject[:bootstrap_lg]).to eq 2 } + it { expect(subject[:order]).to be_nil } + it { expect(subject[:filter]).to be_nil } + end + + describe 'gender' do + subject { super()[:given_name] } + + it { expect(subject[:libelle]).to eq 'Prénom (FC)' } + it { expect(subject[:table]).to eq 'france_connect_information' } + it { expect(subject[:attr]).to eq 'given_name' } + it { expect(subject[:attr_decorate]).to eq 'given_name' } + it { expect(subject[:bootstrap_lg]).to eq 2 } + it { expect(subject[:order]).to be_nil } + it { expect(subject[:filter]).to be_nil } + end + end + + context 'when a procedure ID is pasted' do + let(:procedure) { (create :procedure, :with_type_de_champ) } + let(:procedure_id) { procedure.id } + + describe 'champs' do + subject { super()[:champs] } + + it { expect(subject.size).to eq 1 } + + describe 'first champs' do + subject { super()["type_de_champ_#{procedure.types_de_champ.first.id}"] } + + it { expect(subject[:libelle]).to eq 'Description' } + it { expect(subject[:table]).to eq 'champs' } + it { expect(subject[:attr]).to eq procedure.types_de_champ.first.id } + it { expect(subject[:attr_decorate]).to eq 'value' } + it { expect(subject[:bootstrap_lg]).to eq 2 } + it { expect(subject[:order]).to be_nil } + it { expect(subject[:filter]).to be_nil } + end + end + end end end diff --git a/spec/models/type_de_champ_shared_example.rb b/spec/models/type_de_champ_shared_example.rb index 5ce94d7d3..e4ca86e0f 100644 --- a/spec/models/type_de_champ_shared_example.rb +++ b/spec/models/type_de_champ_shared_example.rb @@ -41,4 +41,15 @@ shared_examples 'type_de_champ_spec' do it { is_expected.to allow_value('blabla').for(:description) } end end + + describe 'field_for_list?' do + + let(:type_de_champ_yes) { create :type_de_champ_public, type_champ: 'text' } + let(:type_de_champ_no_1) { create :type_de_champ_public, type_champ: 'textarea' } + let(:type_de_champ_no_2) { create :type_de_champ_public, type_champ: 'header_section' } + + it { expect(type_de_champ_yes.field_for_list?).to be_truthy } + it { expect(type_de_champ_no_1.field_for_list?).to be_falsey } + it { expect(type_de_champ_no_2.field_for_list?).to be_falsey } + end end \ No newline at end of file From c5035ca81e32445eaa1501a0358551fbe00dd723 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 15:55:03 +0200 Subject: [PATCH 39/53] When gestionnaire follow an initiated dossier, this paste his state at 'updated' --- .../backoffice/dossiers_controller.rb | 2 ++ app/models/dossier.rb | 6 +++++- .../backoffice/dossiers_controller_spec.rb | 21 ++++++++++++++++++- spec/models/dossier_spec.rb | 18 +++++++++++----- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 6918c4653..7c1187471 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -95,6 +95,8 @@ class Backoffice::DossiersController < ApplicationController def follow follow = current_gestionnaire.toggle_follow_dossier params[:dossier_id] + current_gestionnaire.dossiers.find(params[:dossier_id]).next_step! 'gestionnaire', 'follow' + flash.notice = (follow.class == Follow ? 'Dossier suivi' : 'Dossier relaché') redirect_to request.referer end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 623cb9515..e94ffa375 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -97,7 +97,7 @@ class Dossier < ActiveRecord::Base end def next_step! role, action - unless %w(initiate update comment valid submit receive refuse without_continuation close).include?(action) + unless %w(initiate follow update comment valid submit receive refuse without_continuation close).include?(action) fail 'action is not valid' end @@ -132,6 +132,10 @@ class Dossier < ActiveRecord::Base elsif initiated? replied! end + when 'follow' + if initiated? + updated! + end when 'valid' if updated? validated! diff --git a/spec/controllers/backoffice/dossiers_controller_spec.rb b/spec/controllers/backoffice/dossiers_controller_spec.rb index 7769cc888..bcc763f42 100644 --- a/spec/controllers/backoffice/dossiers_controller_spec.rb +++ b/spec/controllers/backoffice/dossiers_controller_spec.rb @@ -4,14 +4,19 @@ describe Backoffice::DossiersController, type: :controller do before do @request.env['HTTP_REFERER'] = TPS::Application::URL end + let(:procedure) { create :procedure } - let(:dossier) { create(:dossier, :with_entreprise) } + let(:dossier) { create(:dossier, :with_entreprise, procedure: procedure) } let(:dossier_archived) { create(:dossier, :with_entreprise, archived: true) } let(:dossier_id) { dossier.id } let(:bad_dossier_id) { Dossier.count + 10 } let(:gestionnaire) { create(:gestionnaire, administrateurs: [create(:administrateur)]) } + before do + create :assign_to, procedure: procedure, gestionnaire: gestionnaire + end + describe 'GET #show' do context 'gestionnaire is connected' do before do @@ -223,6 +228,20 @@ describe Backoffice::DossiersController, type: :controller do it { expect(subject.status).to eq 302 } + context 'when dossier is at state initiated' do + let(:dossier) { create(:dossier, :with_entreprise, procedure: procedure, state: 'initiated') } + + before do + subject + dossier.reload + end + + it 'change state for updated' do + expect(dossier.state).to eq 'updated' + end + + end + describe 'flash alert' do context 'when dossier is not follow by gestionnaire' do before do diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 583a47410..21ac74bd0 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -219,6 +219,12 @@ describe Dossier do it { is_expected.to eq('replied') } end + context 'when is follow' do + let(:action) { 'follow' } + + it { is_expected.to eq 'updated' } + end + context 'when is validated the dossier' do let(:action) { 'valid' } @@ -244,10 +250,7 @@ describe Dossier do context 'when is updated dossier informations' do let(:action) { 'update' } - it { - - is_expected.to eq('updated') - } + it { is_expected.to eq('updated') } end end @@ -260,6 +263,12 @@ describe Dossier do it { is_expected.to eq('replied') } end + context 'when is follow' do + let(:action) { 'follow' } + + it { is_expected.to eq 'replied' } + end + context 'when is validated the dossier' do let(:action) { 'valid' } @@ -453,7 +462,6 @@ describe Dossier do end end - context 'when dossier is at state closed' do before do dossier.closed! From 30acd9bb3eab79d30e7d6d31742abcad41f3d662 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 16:20:07 +0200 Subject: [PATCH 40/53] A cookie file keep the last navigation tab for user and gestionnaire --- app/controllers/backoffice/dossiers/procedure_controller.rb | 3 ++- app/controllers/backoffice/dossiers_controller.rb | 3 ++- app/controllers/users/dossiers_controller.rb | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/controllers/backoffice/dossiers/procedure_controller.rb b/app/controllers/backoffice/dossiers/procedure_controller.rb index 1f55c5f42..bb43d4584 100644 --- a/app/controllers/backoffice/dossiers/procedure_controller.rb +++ b/app/controllers/backoffice/dossiers/procedure_controller.rb @@ -5,7 +5,8 @@ class Backoffice::Dossiers::ProcedureController < ApplicationController before_action :authenticate_gestionnaire! def show - smartlisting_dossier (params[:liste] || 'a_traiter') + cookies[:liste] = params[:liste] || cookies[:liste] || 'a_traiter' + smartlisting_dossier cookies[:liste] render 'backoffice/dossiers/index' rescue ActiveRecord::RecordNotFound diff --git a/app/controllers/backoffice/dossiers_controller.rb b/app/controllers/backoffice/dossiers_controller.rb index 7c1187471..2497f1199 100644 --- a/app/controllers/backoffice/dossiers_controller.rb +++ b/app/controllers/backoffice/dossiers_controller.rb @@ -5,7 +5,8 @@ class Backoffice::DossiersController < ApplicationController before_action :authenticate_gestionnaire! def index - smartlisting_dossier (params[:liste] || 'a_traiter') + cookies[:liste] = params[:liste] || cookies[:liste] || 'a_traiter' + smartlisting_dossier (cookies[:liste]) end def show diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 4193859c9..891bf600b 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -10,7 +10,8 @@ class Users::DossiersController < UsersController end def index - @dossiers_list_facade = DossiersListFacades.new current_user, (params[:liste] || 'a_traiter') + cookies[:liste] = params[:liste] || cookies[:liste] || 'a_traiter' + @dossiers_list_facade = DossiersListFacades.new current_user, cookies[:liste] @dossiers = smart_listing_create :dossiers, @dossiers_list_facade.dossiers_to_display, From f6ab83f8bd0067b3f4e412b89b96f21db1c303ce Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 17:29:21 +0200 Subject: [PATCH 41/53] gestionnaire can be filter be procedure on dossier list tab --- app/facades/dossiers_list_facades.rb | 4 ++++ .../backoffice/dossiers/_onglets.html.haml | 8 +++++++- spec/facades/dossiers_list_facades_spec.rb | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/facades/dossiers_list_facades.rb b/app/facades/dossiers_list_facades.rb index 39ee69c4d..87a72b22f 100644 --- a/app/facades/dossiers_list_facades.rb +++ b/app/facades/dossiers_list_facades.rb @@ -19,6 +19,10 @@ class DossiersListFacades @liste end + def gestionnaire_procedures_name_and_id_list + @current_devise_profil.procedures.order('libelle ASC').inject([]) { |acc, procedure| acc.push({id: procedure.id, libelle: procedure.libelle})} + end + def procedure_id @procedure.nil? ? nil : @procedure.id end diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index 55c4c85a4..cb69ef779 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -1,6 +1,12 @@ =link_to 'Tous mes dossiers en CSV', backoffice_download_dossiers_tps_path, {class: 'btn btn-success btn-sm', style: 'float: right; margin-right: 4%; margin-top: 7px'} %h1 Gestion des dossiers -%br + +#filter_by_procedure{style:'margin-left: 5%'} + %select{onchange: 'location = this.value', style:'margin-top: 10px; margin-bottom: 10px', id: 'filter_by_procedure_select'} + %option{value: backoffice_dossiers_path} + - @dossiers_list_facade.gestionnaire_procedures_name_and_id_list.each do |procedure| + %option{value: backoffice_dossiers_procedure_path(procedure[:id]), ('selected' if procedure[:id] == params[:id].to_i) => '' } + = truncate(procedure[:libelle], {length: 50}) #onglets %ul.nav.nav-tabs diff --git a/spec/facades/dossiers_list_facades_spec.rb b/spec/facades/dossiers_list_facades_spec.rb index c701092f8..625643930 100644 --- a/spec/facades/dossiers_list_facades_spec.rb +++ b/spec/facades/dossiers_list_facades_spec.rb @@ -4,8 +4,12 @@ describe DossiersListFacades do let(:gestionnaire) { create :gestionnaire } let(:procedure) { create :procedure } + let(:procedure_2) { create :procedure, libelle: 'plop' } before do + create :assign_to, procedure: procedure, gestionnaire: gestionnaire + create :assign_to, procedure: procedure_2, gestionnaire: gestionnaire + create :preference_list_dossier, gestionnaire: gestionnaire, table: '', @@ -36,4 +40,19 @@ describe DossiersListFacades do it { expect(subject.size).to eq 1 } end end + + describe '#gestionnaire_procedures_name_and_id_list' do + let(:facade) { described_class.new gestionnaire, 'nouveaux' } + + subject { facade.gestionnaire_procedures_name_and_id_list } + + it { expect(subject.size).to eq 2 } + + it { expect(subject.first[:id]).to eq procedure.id } + it { expect(subject.first[:libelle]).to eq procedure.libelle } + + it { expect(subject.last[:id]).to eq procedure_2.id } + it { expect(subject.last[:libelle]).to eq procedure_2.libelle } + + end end \ No newline at end of file From 969e5f020a784400f130fe2fb6cae1095d6557fd Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 17:39:56 +0200 Subject: [PATCH 42/53] Fix bug clonage private fields --- app/models/procedure.rb | 2 +- spec/models/procedure_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 2489f53d2..1e8d79bf9 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -89,7 +89,7 @@ class Procedure < ActiveRecord::Base end def clone - procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :module_api_carto, :mail_templates]) + procedure = self.deep_clone(include: [:types_de_piece_justificative, :types_de_champ, :types_de_champ_private, :module_api_carto, :mail_templates]) procedure.archived = false procedure.published = false procedure.logo_secure_token = nil diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index 2b52bcb13..47356f165 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -163,6 +163,8 @@ describe Procedure do let(:procedure) { create(:procedure, archived: archived, published: published) } let!(:type_de_champ_0) { create(:type_de_champ_public, procedure: procedure, order_place: 0) } let!(:type_de_champ_1) { create(:type_de_champ_public, procedure: procedure, order_place: 1) } + let!(:type_de_champ_private_0) { create(:type_de_champ_private, procedure: procedure, order_place: 0) } + let!(:type_de_champ_private_1) { create(:type_de_champ_private, procedure: procedure, order_place: 1) } let!(:piece_justificative_0) { create(:type_de_piece_justificative, procedure: procedure, order_place: 0) } let!(:piece_justificative_1) { create(:type_de_piece_justificative, procedure: procedure, order_place: 1) } @@ -177,11 +179,19 @@ describe Procedure do expect(subject).to have_same_attributes_as(procedure) expect(subject.module_api_carto).to have_same_attributes_as(procedure.module_api_carto) + expect(subject.types_de_piece_justificative.size).to eq procedure.types_de_piece_justificative.size + expect(subject.types_de_champ.size).to eq procedure.types_de_champ.size + expect(subject.types_de_champ_private.size).to eq procedure.types_de_champ_private.size + expect(subject.mail_templates.size).to eq procedure.mail_templates.size subject.types_de_champ.zip(procedure.types_de_champ).each do |stc, ptc| expect(stc).to have_same_attributes_as(ptc) end + subject.types_de_champ_private.zip(procedure.types_de_champ_private).each do |stc, ptc| + expect(stc).to have_same_attributes_as(ptc) + end + subject.types_de_piece_justificative.zip(procedure.types_de_piece_justificative).each do |stc, ptc| expect(stc).to have_same_attributes_as(ptc) end From 4a336b8af717d45614610e38532dc3d6e04a188c Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 9 Sep 2016 17:44:00 +0200 Subject: [PATCH 43/53] Config devise session timeout --- config/initializers/devise.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index ee376238c..16112041c 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -150,7 +150,7 @@ Devise.setup do |config| # ==> Configuration for :timeoutable # The time you want to timeout the user session without activity. After this # time the user will be asked for credentials again. Default is 30 minutes. - # config.timeout_in = 30.minutes + config.timeout_in = 24.hours # If true, expires auth token on session timeout. # config.expire_auth_token_on_timeout = false From e9d4685aef56325b1e44b4c6cf541c4c7a93c376 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Mon, 12 Sep 2016 17:30:25 +0200 Subject: [PATCH 44/53] Force use https for generate route --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.rb b/config/routes.rb index 13e67732a..f679c5057 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,5 @@ Rails.application.routes.draw do + default_url_options protocol: :https get "/ping" => "ping#index", :constraints => {:ip => /127.0.0.1/} From 0ac23f6d96f44f7c9adea80e14beebfb182b866b Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 13 Sep 2016 12:17:56 +0200 Subject: [PATCH 45/53] User can invite other User --- app/controllers/invites_controller.rb | 17 ++++++++++++++--- app/controllers/users/dossiers_controller.rb | 6 ++++-- app/models/dossier.rb | 8 ++++++++ app/views/dossiers/_infos_dossier.html.haml | 6 +++--- app/views/dossiers/_invites.html.haml | 2 +- .../dossiers/_tab_objects_dossier.html.haml | 7 +++++-- config/routes.rb | 6 ++++-- 7 files changed, 39 insertions(+), 13 deletions(-) diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb index ee82d2bf3..e729a84cd 100644 --- a/app/controllers/invites_controller.rb +++ b/app/controllers/invites_controller.rb @@ -1,6 +1,8 @@ class InvitesController < ApplicationController + before_action :gestionnaire_or_user? + def create - email_sender = current_gestionnaire.email + email_sender = @current_devise_profil.email user = User.find_by_email(params[:email]) invite = Invite.create(dossier_id: params[:dossier_id], user: user, email: params[:email].downcase, email_sender: email_sender) @@ -16,8 +18,17 @@ class InvitesController < ApplicationController if gestionnaire_signed_in? redirect_to url_for(controller: 'backoffice/dossiers', action: :show, id: params['dossier_id']) - # else - # redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: params['dossier_id']) + else + redirect_to url_for(controller: 'users/recapitulatif', action: :show, dossier_id: params['dossier_id']) end end + + private + + def gestionnaire_or_user? + return redirect_to root_path unless user_signed_in? || gestionnaire_signed_in? + + @current_devise_profil = current_user if user_signed_in? + @current_devise_profil = current_gestionnaire if gestionnaire_signed_in? + end end diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 891bf600b..bf81eae8c 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -10,8 +10,10 @@ class Users::DossiersController < UsersController end def index - cookies[:liste] = params[:liste] || cookies[:liste] || 'a_traiter' - @dossiers_list_facade = DossiersListFacades.new current_user, cookies[:liste] + liste = params[:liste] || cookies[:liste] || 'a_traiter' + cookies[:liste] = liste + + @dossiers_list_facade = DossiersListFacades.new current_user, liste @dossiers = smart_listing_create :dossiers, @dossiers_list_facade.dossiers_to_display, diff --git a/app/models/dossier.rb b/app/models/dossier.rb index e94ffa375..e00ca94c2 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -307,4 +307,12 @@ class Dossier < ActiveRecord::Base next_step! 'user', 'submit' NotificationMailer.dossier_submitted(self).deliver_now! end + + def read_only? + validated? || received? || submitted? || closed? || refused? || without_continuation? + end + + def owner? email + user.email == email + end end diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 3947d592e..8f97562e6 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -41,8 +41,8 @@ %br .row{style: 'text-align:right'} - - if !@facade.dossier.validated? && !@facade.dossier.received? && !@facade.dossier.submitted? && !@facade.dossier.closed? && !@facade.dossier.refused? && !@facade.dossier.without_continuation? - - if user_signed_in? && (current_user.email == @facade.dossier.user.email) + - unless @facade.dossier.read_only? + - if user_signed_in? && @facade.dossier.owner?(current_user.email) - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 %a.btn.btn-success{"data-target" => "#UploadPJmodal", "data-toggle" => "modal", @@ -60,7 +60,7 @@ = 'Modifier mon dossier' -if gestionnaire_signed_in? - -if !@facade.dossier.validated? && !@facade.dossier.received? && !@facade.dossier.submitted? && !@facade.dossier.closed? && !@facade.dossier.refused? && !@facade.dossier.without_continuation? + -if !@facade.dossier.read_only? = form_tag(url_for({controller: 'backoffice/dossiers', action: :valid, dossier_id: @facade.dossier.id}), class: 'form-inline', method: 'POST') do %button#action_button.btn.btn-success = 'Valider le dossier' diff --git a/app/views/dossiers/_invites.html.haml b/app/views/dossiers/_invites.html.haml index 788619476..8328ef5c4 100644 --- a/app/views/dossiers/_invites.html.haml +++ b/app/views/dossiers/_invites.html.haml @@ -12,7 +12,7 @@ Aucune personne invité .col-md-3.col-lg-3 - =form_tag backoffice_dossier_invites_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do + =form_tag invites_dossier_path(dossier_id: @facade.dossier.id), method: :post, class: 'form-inline' do =text_field_tag :email, '', class: 'form-control', placeholder: 'Envoyer une invitation' =submit_tag 'Ajouter', class: 'btn btn-success' diff --git a/app/views/dossiers/_tab_objects_dossier.html.haml b/app/views/dossiers/_tab_objects_dossier.html.haml index a478f0dbe..b95c33a60 100644 --- a/app/views/dossiers/_tab_objects_dossier.html.haml +++ b/app/views/dossiers/_tab_objects_dossier.html.haml @@ -6,10 +6,12 @@ %a{href: "#commentaires_files", 'aria-controls' => "commentaires_files", role: "tab", 'data-toggle' => "tab"} Fichiers - - if gestionnaire_signed_in? + - if gestionnaire_signed_in? || @facade.dossier.owner?(current_user.email) %li{role: "presentation"} %a{href: "#invites", 'aria-controls' => "invites", role: "tab", 'data-toggle' => "tab"} Invités + + - if gestionnaire_signed_in? %li{role: "presentation"} %a{href: "#followers", 'aria-controls' => "followers", role: "tab", 'data-toggle' => "tab"} Abonnés @@ -25,9 +27,10 @@ %div{role: "tabpanel", class: "tab-pane fade", id:"commentaires_files"} = render partial: '/dossiers/commentaires_files' - - if gestionnaire_signed_in? + - if gestionnaire_signed_in? || @facade.dossier.owner?(current_user.email) %div{role: "tabpanel", class: "tab-pane fade", id:"invites"} = render partial: '/dossiers/invites' + - if gestionnaire_signed_in? %div{role: "tabpanel", class: "tab-pane fade", id:"followers"} = render partial: 'followers' %div{role: "tabpanel", class: "tab-pane fade", id:"champs_private"} diff --git a/config/routes.rb b/config/routes.rb index f679c5057..9f3d48777 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -141,6 +141,10 @@ Rails.application.routes.draw do get 'address_point' => 'search#get_address_point' end + namespace :invites do + post 'dossier/:dossier_id' => '/invites#create', as: 'dossier' + end + namespace :backoffice do get 'sign_in' => '/gestionnaires/sessions#new' get 'dossiers/search' => 'dossiers#search' @@ -155,8 +159,6 @@ Rails.application.routes.draw do post 'without_continuation' => 'dossiers#without_continuation' post 'close' => 'dossiers#close' - post 'invites' => '/invites#create' - put 'follow' => 'dossiers#follow' end From 60b94fc41b8394a3996ba89f66f5d5a9622ff909 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 13 Sep 2016 15:54:26 +0200 Subject: [PATCH 46/53] Specialize Invite object --- app/controllers/invites_controller.rb | 4 +++- app/models/invite_gestionnaire.rb | 3 +++ app/models/invite_user.rb | 3 +++ app/views/dossiers/_infos_dossier.html.haml | 4 ++-- app/views/users/dossiers/_list.html.haml | 4 ++-- .../20160913093948_add_type_attr_in_invite_table.rb | 5 +++++ db/schema.rb | 3 ++- spec/controllers/invites_controller_spec.rb | 10 +++++++++- 8 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 app/models/invite_gestionnaire.rb create mode 100644 app/models/invite_user.rb create mode 100644 db/migrate/20160913093948_add_type_attr_in_invite_table.rb diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb index e729a84cd..3c550f6d4 100644 --- a/app/controllers/invites_controller.rb +++ b/app/controllers/invites_controller.rb @@ -4,8 +4,10 @@ class InvitesController < ApplicationController def create email_sender = @current_devise_profil.email + class_var = @current_devise_profil.class == User ? InviteUser : InviteGestionnaire + user = User.find_by_email(params[:email]) - invite = Invite.create(dossier_id: params[:dossier_id], user: user, email: params[:email].downcase, email_sender: email_sender) + invite = class_var.create(dossier_id: params[:dossier_id], user: user, email: params[:email].downcase, email_sender: email_sender) if invite.valid? InviteMailer.invite_user(invite).deliver_now! unless invite.user.nil? diff --git a/app/models/invite_gestionnaire.rb b/app/models/invite_gestionnaire.rb new file mode 100644 index 000000000..6021286da --- /dev/null +++ b/app/models/invite_gestionnaire.rb @@ -0,0 +1,3 @@ +class InviteGestionnaire < Invite + +end diff --git a/app/models/invite_user.rb b/app/models/invite_user.rb new file mode 100644 index 000000000..05ec141e9 --- /dev/null +++ b/app/models/invite_user.rb @@ -0,0 +1,3 @@ +class InviteUser < Invite + +end diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 8f97562e6..19e6c8551 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -55,9 +55,9 @@ -if @facade.dossier.procedure.module_api_carto.use_api_carto %a#maj_carte.btn.btn-primary{href: "/users/dossiers/#{@facade.dossier.id}/carte"} - = 'Modifier ma carte' + = 'Modifier la carte' %a#maj_infos.btn.btn-info{href: "/users/dossiers/#{@facade.dossier.id}/description"} - = 'Modifier mon dossier' + = 'Modifier le dossier' -if gestionnaire_signed_in? -if !@facade.dossier.read_only? diff --git a/app/views/users/dossiers/_list.html.haml b/app/views/users/dossiers/_list.html.haml index e8bdcc86d..61121ff96 100644 --- a/app/views/users/dossiers/_list.html.haml +++ b/app/views/users/dossiers/_list.html.haml @@ -6,9 +6,9 @@ %th.col-md-2.col-lg-2= smart_listing.sortable 'État', 'state' %th.col-md-2.col-lg-2= smart_listing.sortable 'Date de mise à jour', 'updated_at' - @dossiers.each do |dossier| - - if dossier.class == Invite + - if dossier.kind_of? Invite -invite = dossier - -dossier = dossier.dossier.decorate + -dossier = invite.dossier.decorate - else - dossier = dossier.decorate %tr diff --git a/db/migrate/20160913093948_add_type_attr_in_invite_table.rb b/db/migrate/20160913093948_add_type_attr_in_invite_table.rb new file mode 100644 index 000000000..a71813a9b --- /dev/null +++ b/db/migrate/20160913093948_add_type_attr_in_invite_table.rb @@ -0,0 +1,5 @@ +class AddTypeAttrInInviteTable < ActiveRecord::Migration + def change + add_column :invites, :type, :string, default: 'InviteGestionnaire' + end +end diff --git a/db/schema.rb b/db/schema.rb index 7533be06e..837be6fb9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160906134155) do +ActiveRecord::Schema.define(version: 20160913093948) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -225,6 +225,7 @@ ActiveRecord::Schema.define(version: 20160906134155) do t.string "email_sender" t.integer "dossier_id" t.integer "user_id" + t.string "type", default: "InviteGestionnaire" end create_table "mail_templates", force: :cascade do |t| diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb index 4d8cba09b..e528188cd 100644 --- a/spec/controllers/invites_controller_spec.rb +++ b/spec/controllers/invites_controller_spec.rb @@ -13,7 +13,15 @@ describe InvitesController, type: :controller do subject { post :create, dossier_id: dossier.id, email: email } - it { expect { subject }.to change(Invite, :count).by(1) } + it { expect { subject }.to change(InviteGestionnaire, :count).by(1) } + + context 'when is a user who is loged' do + before do + sign_in create(:user) + end + + it { expect { subject }.to change(InviteGestionnaire, :count).by(1) } + end context 'when email is assign to an user' do let! (:user) { create(:user, email: email) } From 0c9fea1c14a52f65f00b0a6dc818d0478d18c009 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 14 Sep 2016 16:36:01 +0200 Subject: [PATCH 47/53] User can invite other user to edit his dossier --- app/controllers/users_controller.rb | 6 +- app/models/dossier.rb | 5 + app/views/dossiers/_infos_dossier.html.haml | 4 +- .../user_controller_shared_example.rb | 43 +++ .../users/carte_controller_shared_example.rb | 256 +++++++++++++ .../users/carte_controller_spec.rb | 264 +------------ .../description_controller_shared_example.rb | 345 +++++++++++++++++ .../users/description_controller_spec.rb | 350 +----------------- spec/controllers/users_controller_spec.rb | 64 +--- spec/models/dossier_spec.rb | 27 ++ .../recapitulatif/show.html.haml_spec.rb | 107 ++++-- 11 files changed, 812 insertions(+), 659 deletions(-) create mode 100644 spec/controllers/user_controller_shared_example.rb create mode 100644 spec/controllers/users/carte_controller_shared_example.rb create mode 100644 spec/controllers/users/description_controller_shared_example.rb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 982b2f72c..dfc3689f3 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -8,7 +8,11 @@ class UsersController < ApplicationController def current_user_dossier dossier_id=nil dossier_id ||= params[:dossier_id] || params[:id] - current_user.dossiers.find(dossier_id) + dossier = Dossier.find(dossier_id) + + return dossier if dossier.owner?(current_user.email) || dossier.invite_by_user?(current_user.email) + + raise ActiveRecord::RecordNotFound end def authorized_routes? controller diff --git a/app/models/dossier.rb b/app/models/dossier.rb index e00ca94c2..9306e2e3e 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -24,6 +24,7 @@ class Dossier < ActiveRecord::Base has_many :cadastres, dependent: :destroy has_many :commentaires, dependent: :destroy has_many :invites, dependent: :destroy + has_many :invites_user, class_name: 'InviteUser', dependent: :destroy has_many :follows belongs_to :procedure @@ -315,4 +316,8 @@ class Dossier < ActiveRecord::Base def owner? email user.email == email end + + def invite_by_user? email + (invites_user.pluck :email).include? email + end end diff --git a/app/views/dossiers/_infos_dossier.html.haml b/app/views/dossiers/_infos_dossier.html.haml index 19e6c8551..d04d0187f 100644 --- a/app/views/dossiers/_infos_dossier.html.haml +++ b/app/views/dossiers/_infos_dossier.html.haml @@ -42,9 +42,9 @@ .row{style: 'text-align:right'} - unless @facade.dossier.read_only? - - if user_signed_in? && @facade.dossier.owner?(current_user.email) + - if user_signed_in? && (@facade.dossier.owner?(current_user.email) || @facade.dossier.invite_by_user?(current_user.email)) - if @facade.procedure.cerfa_flag? || @facade.dossier.types_de_piece_justificative.size > 0 - %a.btn.btn-success{"data-target" => "#UploadPJmodal", + %a#maj_pj.btn.btn-success{"data-target" => "#UploadPJmodal", "data-toggle" => "modal", :type => "button", style: 'margin-bottom: 15px; margin-top: -30px'} diff --git a/spec/controllers/user_controller_shared_example.rb b/spec/controllers/user_controller_shared_example.rb new file mode 100644 index 000000000..efe90eb88 --- /dev/null +++ b/spec/controllers/user_controller_shared_example.rb @@ -0,0 +1,43 @@ +shared_examples 'current_user_dossier_spec' do + context 'when no dossier_id is filled' do + it { expect { subject.current_user_dossier }.to raise_error } + end + + context 'when dossier_id is given as a param' do + context 'when dossier id is valid' do + it 'returns current user dossier' do + expect(subject.current_user_dossier dossier.id).to eq(dossier) + end + end + + context 'when dossier id is incorrect' do + it { expect { subject.current_user_dossier 1 }.to raise_error } + end + end + + context 'when no params[] is given' do + context 'when dossier id is valid' do + before do + subject.params[:dossier_id] = dossier.id + end + + it 'returns current user dossier' do + expect(subject.current_user_dossier).to eq(dossier) + end + end + + context 'when dossier id is incorrect' do + it { expect { subject.current_user_dossier }.to raise_error } + end + + context 'when dossier_id is given as a param' do + before do + subject.params[:dossier_id] = 1 + end + + it 'returns dossier with the id on params past' do + expect(subject.current_user_dossier dossier.id).to eq(dossier) + end + end + end +end diff --git a/spec/controllers/users/carte_controller_shared_example.rb b/spec/controllers/users/carte_controller_shared_example.rb new file mode 100644 index 000000000..eaacbddab --- /dev/null +++ b/spec/controllers/users/carte_controller_shared_example.rb @@ -0,0 +1,256 @@ +shared_examples 'carte_controller_spec' do + describe 'GET #show' do + describe 'before_action authorized_routes?' do + context 'when dossier’s procedure have api carto actived' do + context 'when dossier does not have a valid state' do + before do + dossier.state = 'validated' + dossier.save + + get :show, dossier_id: dossier.id + end + + it { is_expected.to redirect_to root_path} + end + end + + context 'when dossier’s procedure does not have api carto actived' do + let(:dossier) { create(:dossier) } + + before do + get :show, dossier_id: dossier.id + end + + it { is_expected.to redirect_to(root_path) } + end + end + + context 'user is not connected' do + before do + sign_out user + end + + it 'redirects to users/sign_in' do + get :show, dossier_id: dossier.id + expect(response).to redirect_to('/users/sign_in') + end + end + + it 'returns http success if carto is activated' do + get :show, dossier_id: dossier.id + expect(response).to have_http_status(:success) + end + + context 'when procedure not have activate api carto' do + it 'redirection on user dossier list' do + get :show, dossier_id: dossier_with_no_carto.id + expect(response).to redirect_to(root_path) + end + end + + context 'when dossier id not exist' do + it 'redirection on user dossier list' do + get :show, dossier_id: bad_dossier_id + expect(response).to redirect_to(root_path) + end + end + + it_behaves_like "not owner of dossier", :show + end + + describe 'POST #save' do + context 'Aucune localisation n\'a jamais été enregistrée' do + it do + post :save, dossier_id: dossier.id, json_latlngs: '' + expect(response).to redirect_to("/users/dossiers/#{dossier.id}/description") + end + end + + context 'En train de modifier la localisation' do + let(:dossier) { create(:dossier, state: 'initiated') } + before do + post :save, dossier_id: dossier.id, json_latlngs: '' + end + + it 'Redirection vers la page récapitulatif' do + expect(response).to redirect_to("/users/dossiers/#{dossier.id}/recapitulatif") + end + end + + describe 'Save quartier prioritaire' do + let(:module_api_carto) { create(:module_api_carto, :with_quartiers_prioritaires) } + + before do + allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter). + to receive(:to_params). + and_return({"QPCODE1234" => {:code => "QPCODE1234", :nom => "QP de test", :commune => "Paris", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) + + post :save, dossier_id: dossier.id, json_latlngs: json_latlngs + end + + context 'when json_latlngs params is empty' do + context 'when dossier have quartier prioritaire in database' do + let!(:dossier) { create(:dossier, :with_two_quartier_prioritaires) } + + before do + dossier.reload + end + + context 'when value is empty' do + let(:json_latlngs) { '' } + it { expect(dossier.quartier_prioritaires.size).to eq(0) } + end + + context 'when value is empty array' do + let(:json_latlngs) { '[]' } + it { expect(dossier.quartier_prioritaires.size).to eq(0) } + end + end + end + + context 'when json_latlngs params is informed' do + let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } + + it { expect(dossier.quartier_prioritaires.size).to eq(1) } + + describe 'Quartier Prioritaire' do + subject { QuartierPrioritaire.last } + + it { expect(subject.code).to eq('QPCODE1234') } + it { expect(subject.commune).to eq('Paris') } + it { expect(subject.nom).to eq('QP de test') } + it { expect(subject.dossier_id).to eq(dossier.id) } + end + end + end + + describe 'Save cadastre' do + let(:module_api_carto) { create(:module_api_carto, :with_cadastre) } + + before do + allow_any_instance_of(CARTO::SGMAP::Cadastre::Adapter). + to receive(:to_params). + and_return([{:surface_intersection => "0.0006", :surface_parcelle => 11252.692583090324, :numero => "0013", :feuille => 1, :section => "CD", :code_dep => "30", :nom_com => "Le Grau-du-Roi", :code_com => "133", :code_arr => "000", :geometry => {:type => "MultiPolygon", :coordinates => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}}]) + + post :save, dossier_id: dossier.id, json_latlngs: json_latlngs + end + + context 'when json_latlngs params is empty' do + context 'when dossier have cadastres in database' do + let!(:dossier) { create(:dossier, :with_two_cadastres) } + + before do + dossier.reload + end + + context 'when value is empty' do + let(:json_latlngs) { '' } + it { expect(dossier.cadastres.size).to eq(0) } + end + + context 'when value is empty array' do + let(:json_latlngs) { '[]' } + it { expect(dossier.cadastres.size).to eq(0) } + end + end + end + + context 'when json_latlngs params is informed' do + let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } + + it { expect(dossier.cadastres.size).to eq(1) } + + describe 'Cadastre' do + subject { Cadastre.last } + + it { expect(subject.surface_intersection).to eq('0.0006') } + it { expect(subject.surface_parcelle).to eq(11252.6925830903) } + it { expect(subject.numero).to eq('0013') } + it { expect(subject.feuille).to eq(1) } + it { expect(subject.section).to eq('CD') } + it { expect(subject.code_dep).to eq('30') } + it { expect(subject.nom_com).to eq('Le Grau-du-Roi') } + it { expect(subject.code_com).to eq('133') } + it { expect(subject.code_arr).to eq('000') } + it { expect(subject.geometry).to eq({"type" => "MultiPolygon", "coordinates" => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}) } + end + end + end + end + + describe '#get_position' do + context 'Geocodeur renvoie les positions par defaut' do + let(:etablissement) { create(:etablissement, adresse: bad_adresse, numero_voie: 'dzj', type_voie: 'fzjfk', nom_voie: 'hdidjkz', complement_adresse: 'fjef', code_postal: 'fjeiefk', localite: 'zjfkfz') } + let(:dossier) { create(:dossier, etablissement: etablissement) } + + before do + stub_request(:get, /http:\/\/api-adresse[.]data[.]gouv[.]fr\/search[?]limit=1&q=/) + .to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) + get :get_position, dossier_id: dossier.id + end + + subject { JSON.parse(response.body) } + + it 'on enregistre des coordonnées lat et lon avec les valeurs par defaut' do + expect(subject['lat']).to eq('46.538192') + expect(subject['lon']).to eq('2.428462') + end + end + + context 'retour d\'un fichier JSON avec 3 attributs' do + before do + stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{adresse}") + .to_return(status: 200, body: '{"query": "50 avenue des champs u00e9lysu00e9es Paris 75008", "version": "draft", "licence": "ODbL 1.0", "features": [{"geometry": {"coordinates": [2.306888, 48.870374], "type": "Point"}, "type": "Feature", "properties": {"city": "Paris", "label": "50 Avenue des Champs u00c9lysu00e9es 75008 Paris", "housenumber": "50", "id": "ADRNIVX_0000000270748251", "postcode": "75008", "name": "50 Avenue des Champs u00c9lysu00e9es", "citycode": "75108", "context": "75, u00cele-de-France", "score": 0.9054545454545454, "type": "housenumber"}}], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) + + get :get_position, dossier_id: dossier.id + end + subject { JSON.parse(response.body) } + + it 'format JSON valide' do + expect(response.content_type).to eq('application/json') + end + + it 'latitude' do + expect(subject['lat']).to eq('48.870374') + end + + it 'longitude' do + expect(subject['lon']).to eq('2.306888') + end + + it 'dossier_id' do + expect(subject['dossier_id']).to eq(dossier.id.to_s) + end + end + end + + describe 'POST #get_qp' do + before do + allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter). + to receive(:to_params). + and_return({"QPCODE1234" => {:code => "QPCODE1234", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) + + post :get_qp, dossier_id: dossier.id, coordinates: coordinates + end + + context 'when coordinates are empty' do + let(:coordinates) { '[]' } + + subject { JSON.parse(response.body) } + + it 'Quartier Prioritaire Adapter does not call' do + expect(subject['quartier_prioritaires']).to eq({}) + end + end + + context 'when coordinates are informed' do + let(:coordinates) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } + + subject { JSON.parse(response.body)['quartier_prioritaires'] } + it { expect(subject).not_to be_nil } + it { expect(subject['QPCODE1234']['code']).to eq('QPCODE1234') } + it { expect(subject['QPCODE1234']['geometry']['type']).to eq('MultiPolygon') } + it { expect(subject['QPCODE1234']['geometry']['coordinates']).to eq([[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]) } + end + end +end \ No newline at end of file diff --git a/spec/controllers/users/carte_controller_spec.rb b/spec/controllers/users/carte_controller_spec.rb index 3d25ef4c6..8fbb7216b 100644 --- a/spec/controllers/users/carte_controller_spec.rb +++ b/spec/controllers/users/carte_controller_spec.rb @@ -1,4 +1,5 @@ require 'spec_helper' +require 'controllers/users/carte_controller_shared_example' RSpec.describe Users::CarteController, type: :controller do let(:bad_adresse) { 'babouba' } @@ -7,6 +8,9 @@ RSpec.describe Users::CarteController, type: :controller do let(:procedure) { create(:procedure, module_api_carto: module_api_carto) } let(:dossier) { create(:dossier, procedure: procedure) } + let(:owner_user) { dossier.user } + let(:invite_by_user) { create :user, email: 'invite@plop.com' } + let(:dossier_with_no_carto) { create(:dossier) } let!(:entreprise) { create(:entreprise, dossier: dossier) } let!(:etablissement) { create(:etablissement, dossier: dossier) } @@ -14,262 +18,20 @@ RSpec.describe Users::CarteController, type: :controller do let(:adresse) { etablissement.geo_adresse } before do - sign_in dossier.user + create :invite, dossier: dossier, user: invite_by_user, email: invite_by_user.email, type: 'InviteUser' + + sign_in user end - describe 'GET #show' do + context 'when sign in user is the owner' do + let(:user) { owner_user } - describe 'before_action authorized_routes?' do - context 'when dossier’s procedure have api carto actived' do - context 'when dossier does not have a valid state' do - before do - dossier.state = 'validated' - dossier.save - - get :show, dossier_id: dossier.id - end - - it { is_expected.to redirect_to root_path} - end - end - - context 'when dossier’s procedure does not have api carto actived' do - let(:dossier) { create(:dossier) } - - before do - get :show, dossier_id: dossier.id - end - - it { is_expected.to redirect_to(root_path) } - end - end - - context 'user is not connected' do - before do - sign_out dossier.user - end - - it 'redirects to users/sign_in' do - get :show, dossier_id: dossier.id - expect(response).to redirect_to('/users/sign_in') - end - end - - it 'returns http success if carto is activated' do - get :show, dossier_id: dossier.id - expect(response).to have_http_status(:success) - end - - context 'when procedure not have activate api carto' do - it 'redirection on user dossier list' do - get :show, dossier_id: dossier_with_no_carto.id - expect(response).to redirect_to(root_path) - end - end - - context 'when dossier id not exist' do - it 'redirection on user dossier list' do - get :show, dossier_id: bad_dossier_id - expect(response).to redirect_to(root_path) - end - end - - it_behaves_like "not owner of dossier", :show + it_should_behave_like "carte_controller_spec" end - describe 'POST #save' do - context 'Aucune localisation n\'a jamais été enregistrée' do - it do - post :save, dossier_id: dossier.id, json_latlngs: '' - expect(response).to redirect_to("/users/dossiers/#{dossier.id}/description") - end - end + context 'when sign in user is an invite by owner' do + let(:user) { invite_by_user } - context 'En train de modifier la localisation' do - let(:dossier) { create(:dossier, state: 'initiated') } - before do - post :save, dossier_id: dossier.id, json_latlngs: '' - end - - it 'Redirection vers la page récapitulatif' do - expect(response).to redirect_to("/users/dossiers/#{dossier.id}/recapitulatif") - end - end - - describe 'Save quartier prioritaire' do - let(:module_api_carto) { create(:module_api_carto, :with_quartiers_prioritaires) } - - before do - allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter). - to receive(:to_params). - and_return({"QPCODE1234" => {:code => "QPCODE1234", :nom => "QP de test", :commune => "Paris", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) - - post :save, dossier_id: dossier.id, json_latlngs: json_latlngs - end - - context 'when json_latlngs params is empty' do - context 'when dossier have quartier prioritaire in database' do - let!(:dossier) { create(:dossier, :with_two_quartier_prioritaires) } - - before do - dossier.reload - end - - context 'when value is empty' do - let(:json_latlngs) { '' } - it { expect(dossier.quartier_prioritaires.size).to eq(0) } - end - - context 'when value is empty array' do - let(:json_latlngs) { '[]' } - it { expect(dossier.quartier_prioritaires.size).to eq(0) } - end - end - end - - context 'when json_latlngs params is informed' do - let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } - - it { expect(dossier.quartier_prioritaires.size).to eq(1) } - - describe 'Quartier Prioritaire' do - subject { QuartierPrioritaire.last } - - it { expect(subject.code).to eq('QPCODE1234') } - it { expect(subject.commune).to eq('Paris') } - it { expect(subject.nom).to eq('QP de test') } - it { expect(subject.dossier_id).to eq(dossier.id) } - end - end - end - - describe 'Save cadastre' do - let(:module_api_carto) { create(:module_api_carto, :with_cadastre) } - - before do - allow_any_instance_of(CARTO::SGMAP::Cadastre::Adapter). - to receive(:to_params). - and_return([{:surface_intersection => "0.0006", :surface_parcelle => 11252.692583090324, :numero => "0013", :feuille => 1, :section => "CD", :code_dep => "30", :nom_com => "Le Grau-du-Roi", :code_com => "133", :code_arr => "000", :geometry => {:type => "MultiPolygon", :coordinates => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}}]) - - post :save, dossier_id: dossier.id, json_latlngs: json_latlngs - end - - context 'when json_latlngs params is empty' do - context 'when dossier have cadastres in database' do - let!(:dossier) { create(:dossier, :with_two_cadastres) } - - before do - dossier.reload - end - - context 'when value is empty' do - let(:json_latlngs) { '' } - it { expect(dossier.cadastres.size).to eq(0) } - end - - context 'when value is empty array' do - let(:json_latlngs) { '[]' } - it { expect(dossier.cadastres.size).to eq(0) } - end - end - end - - context 'when json_latlngs params is informed' do - let(:json_latlngs) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } - - it { expect(dossier.cadastres.size).to eq(1) } - - describe 'Cadastre' do - subject { Cadastre.last } - - it { expect(subject.surface_intersection).to eq('0.0006') } - it { expect(subject.surface_parcelle).to eq(11252.6925830903) } - it { expect(subject.numero).to eq('0013') } - it { expect(subject.feuille).to eq(1) } - it { expect(subject.section).to eq('CD') } - it { expect(subject.code_dep).to eq('30') } - it { expect(subject.nom_com).to eq('Le Grau-du-Roi') } - it { expect(subject.code_com).to eq('133') } - it { expect(subject.code_arr).to eq('000') } - it { expect(subject.geometry).to eq({"type" => "MultiPolygon", "coordinates" => [[[[4.134084, 43.5209193], [4.1346615, 43.5212035], [4.1346984, 43.521189], [4.135096, 43.5213848], [4.1350839, 43.5214122], [4.1352697, 43.521505], [4.1356278, 43.5211065], [4.1357402, 43.5207188], [4.1350935, 43.5203936], [4.135002, 43.5204366], [4.1346051, 43.5202412], [4.134584, 43.5202472], [4.1345572, 43.5202551], [4.134356, 43.5203137], [4.1342488, 43.5203448], [4.134084, 43.5209193]]]]}) } - end - end - end - end - - describe '#get_position' do - context 'Geocodeur renvoie les positions par defaut' do - let(:etablissement) { create(:etablissement, adresse: bad_adresse, numero_voie: 'dzj', type_voie: 'fzjfk', nom_voie: 'hdidjkz', complement_adresse: 'fjef', code_postal: 'fjeiefk', localite: 'zjfkfz') } - let(:dossier) { create(:dossier, etablissement: etablissement) } - - before do - stub_request(:get, /http:\/\/api-adresse[.]data[.]gouv[.]fr\/search[?]limit=1&q=/) - .to_return(status: 200, body: '{"query": "babouba", "version": "draft", "licence": "ODbL 1.0", "features": [], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) - get :get_position, dossier_id: dossier.id - end - - subject { JSON.parse(response.body) } - - it 'on enregistre des coordonnées lat et lon avec les valeurs par defaut' do - expect(subject['lat']).to eq('46.538192') - expect(subject['lon']).to eq('2.428462') - end - end - - context 'retour d\'un fichier JSON avec 3 attributs' do - before do - stub_request(:get, "http://api-adresse.data.gouv.fr/search?limit=1&q=#{adresse}") - .to_return(status: 200, body: '{"query": "50 avenue des champs u00e9lysu00e9es Paris 75008", "version": "draft", "licence": "ODbL 1.0", "features": [{"geometry": {"coordinates": [2.306888, 48.870374], "type": "Point"}, "type": "Feature", "properties": {"city": "Paris", "label": "50 Avenue des Champs u00c9lysu00e9es 75008 Paris", "housenumber": "50", "id": "ADRNIVX_0000000270748251", "postcode": "75008", "name": "50 Avenue des Champs u00c9lysu00e9es", "citycode": "75108", "context": "75, u00cele-de-France", "score": 0.9054545454545454, "type": "housenumber"}}], "type": "FeatureCollection", "attribution": "BAN"}', headers: {}) - - get :get_position, dossier_id: dossier.id - end - subject { JSON.parse(response.body) } - - it 'format JSON valide' do - expect(response.content_type).to eq('application/json') - end - - it 'latitude' do - expect(subject['lat']).to eq('48.870374') - end - - it 'longitude' do - expect(subject['lon']).to eq('2.306888') - end - - it 'dossier_id' do - expect(subject['dossier_id']).to eq(dossier.id.to_s) - end - end - end - - describe 'POST #get_qp' do - before do - allow_any_instance_of(CARTO::SGMAP::QuartiersPrioritaires::Adapter). - to receive(:to_params). - and_return({"QPCODE1234" => {:code => "QPCODE1234", :geometry => {:type => "MultiPolygon", :coordinates => [[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]}}}) - - post :get_qp, dossier_id: dossier.id, coordinates: coordinates - end - - context 'when coordinates are empty' do - let(:coordinates) { '[]' } - - subject { JSON.parse(response.body) } - - it 'Quartier Prioritaire Adapter does not call' do - expect(subject['quartier_prioritaires']).to eq({}) - end - end - - context 'when coordinates are informed' do - let(:coordinates) { '[[{"lat":48.87442541960633,"lng":2.3859214782714844},{"lat":48.87273183590832,"lng":2.3850631713867183},{"lat":48.87081237174292,"lng":2.3809432983398438},{"lat":48.8712640169951,"lng":2.377510070800781},{"lat":48.87510283703279,"lng":2.3778533935546875},{"lat":48.87544154230615,"lng":2.382831573486328},{"lat":48.87442541960633,"lng":2.3859214782714844}]]' } - - subject { JSON.parse(response.body)['quartier_prioritaires'] } - it { expect(subject).not_to be_nil } - it { expect(subject['QPCODE1234']['code']).to eq('QPCODE1234') } - it { expect(subject['QPCODE1234']['geometry']['type']).to eq('MultiPolygon') } - it { expect(subject['QPCODE1234']['geometry']['coordinates']).to eq([[[[2.38715792094576, 48.8723062632126], [2.38724851642619, 48.8721392348061]]]]) } - end + it_should_behave_like "carte_controller_spec" end end diff --git a/spec/controllers/users/description_controller_shared_example.rb b/spec/controllers/users/description_controller_shared_example.rb new file mode 100644 index 000000000..b11cb12bb --- /dev/null +++ b/spec/controllers/users/description_controller_shared_example.rb @@ -0,0 +1,345 @@ +shared_examples 'description_controller_spec' do + describe 'GET #show' do + context 'user is not connected' do + before do + sign_out dossier.user + end + + it 'redirects to users/sign_in' do + get :show, dossier_id: dossier_id + expect(response).to redirect_to('/users/sign_in') + end + end + + it 'returns http success' do + get :show, dossier_id: dossier_id + expect(response).to have_http_status(:success) + end + + it 'redirection vers start si mauvais dossier ID' do + get :show, dossier_id: bad_dossier_id + expect(response).to redirect_to(root_path) + end + + it_behaves_like "not owner of dossier", :show + + describe 'before_action authorized_routes?' do + context 'when dossier does not have a valid state' do + before do + dossier.state = 'validated' + dossier.save + + get :show, dossier_id: dossier.id + end + + it { is_expected.to redirect_to root_path } + end + end + end + + describe 'POST #create' do + let(:timestamp) { Time.now } + let(:description) { 'Description de test Coucou, je suis un saut à la ligne Je suis un double saut la ligne.' } + + context 'Tous les attributs sont bons' do + describe 'Premier enregistrement des données' do + before do + dossier.draft! + post :create, dossier_id: dossier_id + dossier.reload + end + + it "redirection vers la page recapitulative" do + expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") + end + + it 'etat du dossier est soumis' do + expect(dossier.state).to eq('initiated') + end + end + + context 'En train de manipuler un dossier non brouillon' do + before do + dossier.initiated! + post :create, dossier_id: dossier_id + dossier.reload + end + + it 'Redirection vers la page récapitulatif' do + expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") + end + + it 'etat du dossier n\'est pas soumis' do + expect(dossier.state).not_to eq('draft') + end + end + end + + context 'Quand la procédure accepte les CERFA' do + context 'Sauvegarde du CERFA PDF', vcr: {cassette_name: 'controllers_users_description_controller_save_cerfa'} do + before do + post :create, dossier_id: dossier_id, + cerfa_pdf: cerfa_pdf + dossier.reload + end + + context 'when a CERFA PDF is sent', vcr: {cassette_name: 'controllers_users_description_controller_cerfa_is_sent'} do + subject { dossier.cerfa.first } + + it 'content' do + if Features.remote_storage + expect(subject['content']).to eq('cerfa-3dbb3535-5388-4a37-bc2d-778327b9f999.pdf') + else + expect(subject['content']).to eq('cerfa.pdf') + end + end + + it 'dossier_id' do + expect(subject.dossier_id).to eq(dossier_id) + end + + it { expect(subject.user).to eq user } + end + + context 'les anciens CERFA PDF ne sont pas écrasées' do + let(:cerfas) { Cerfa.where(dossier_id: dossier_id) } + + before do + post :create, dossier_id: dossier_id, cerfa_pdf: cerfa_pdf + end + + it "il y a deux CERFA PDF pour ce dossier" do + expect(cerfas.size).to eq 2 + 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, + 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 + + describe 'Sauvegarde des champs' do + let(:champs_dossier) { dossier.champs } + let(:dossier_champs_first) { 'test value' } + let(:dossier_date_value) { '23/06/2016' } + let(:dossier_hour_value) { '17' } + let(:dossier_minute_value) { '00' } + + before do + post :create, {dossier_id: dossier_id, + champs: { + "'#{dossier.champs.first.id}'" => dossier_champs_first, + "'#{dossier.champs.second.id}'" => dossier_date_value + }, + time_hour: { + "'#{dossier.champs.second.id}'" => dossier_hour_value, + }, + time_minute: { + "'#{dossier.champs.second.id}'" => dossier_minute_value, + } + } + dossier.reload + end + + it { expect(dossier.champs.first.value).to eq(dossier_champs_first) } + it { expect(response).to redirect_to users_dossier_recapitulatif_path } + + context 'when champs is type_de_champ datetime' do + it { expect(dossier.champs.second.value).to eq(dossier_date_value+' '+dossier_hour_value+':'+dossier_minute_value) } + end + + context 'when champs value is empty' do + let(:dossier_champs_first) { '' } + + it { expect(dossier.champs.first.value).to eq(dossier_champs_first) } + it { expect(response).to redirect_to users_dossier_recapitulatif_path } + + context 'when champs is mandatory' do + let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ_mandatory, :with_datetime, cerfa_flag: true) } + + it { expect(response).not_to redirect_to users_dossier_recapitulatif_path } + it { expect(flash[:alert]).to be_present } + end + end + end + + context 'Sauvegarde des pièces justificatives', vcr: {cassette_name: 'controllers_users_description_controller_sauvegarde_pj'} do + let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } + before do + post :create, {dossier_id: dossier_id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} + dossier.reload + end + + describe 'clamav anti-virus presence', vcr: {cassette_name: 'controllers_users_description_controller_clamav_presence'} do + it 'ClamavService safe_file? is call' do + expect(ClamavService).to receive(:safe_file?).twice + + post :create, {dossier_id: dossier_id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} + end + end + + context 'for piece 0' do + subject { dossier.retrieve_last_piece_justificative_by_type all_pj_type[0].to_s } + it { expect(subject.content).not_to be_nil } + it { expect(subject.user).to eq user } + end + context 'for piece 1' do + subject { dossier.retrieve_last_piece_justificative_by_type all_pj_type[1].to_s } + it { expect(subject.content).not_to be_nil } + it { expect(subject.user).to eq user } + end + end + end + + describe 'POST #pieces_justificatives', vcr: {cassette_name: 'controllers_users_description_controller_pieces_justificatives'} do + let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } + + subject { patch :pieces_justificatives, {dossier_id: dossier.id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } + + context 'when user is a guest' do + let(:guest) { create :user } + + before do + create :invite, dossier: dossier, email: guest.email, user: guest + + sign_in guest + end + + context 'when PJ have no documents' do + it { expect(dossier.pieces_justificatives.size).to eq 0 } + + context 'when upload two PJ' do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 2 } + it { expect(flash[:notice]).to be_present } + it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } + end + end + + context 'when PJ have already a document' do + before do + create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative_id: all_pj_type[0] + create :piece_justificative, :contrat, dossier: dossier, type_de_piece_justificative_id: all_pj_type[1] + end + + it { expect(dossier.pieces_justificatives.size).to eq 2 } + + context 'when upload two PJ', vcr: {cassette_name: 'controllers_users_description_controller_upload_2pj'} do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 4 } + it { expect(flash[:notice]).to be_present } + it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } + end + end + + context 'when one of PJs is not valid' do + let(:piece_justificative_0) { Rack::Test::UploadedFile.new("./spec/support/files/entreprise.json", 'application/json') } + + it { expect(dossier.pieces_justificatives.size).to eq 0 } + + context 'when upload two PJ' do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 1 } + it { expect(flash[:alert]).to be_present } + it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } + end + end + end + end +end + +shared_examples 'description_controller_spec_POST_piece_justificatives_for_owner' do + let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } + + subject { patch :pieces_justificatives, {dossier_id: dossier.id, + 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, + 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } + + context 'when user is the owner' do + before do + sign_in user + end + + context 'when PJ have no documents' do + it { expect(dossier.pieces_justificatives.size).to eq 0 } + + context 'when upload two PJ' do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 2 } + it { expect(flash[:notice]).to be_present } + it { is_expected.to redirect_to recapitulatif_path } + end + end + + context 'when PJ have already a document', vcr: {cassette_name: 'controllers_users_description_controller_pj_already_exist'} do + before do + create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative_id: all_pj_type[0] + create :piece_justificative, :contrat, dossier: dossier, type_de_piece_justificative_id: all_pj_type[1] + end + + it { expect(dossier.pieces_justificatives.size).to eq 2 } + + context 'when upload two PJ', vcr: {cassette_name: 'controllers_users_description_controller_pj_already_exist_upload_2pj'} do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 4 } + it { expect(flash[:notice]).to be_present } + it { is_expected.to redirect_to recapitulatif_path } + end + end + + context 'when one of PJs is not valid' do + let(:piece_justificative_0) { Rack::Test::UploadedFile.new("./spec/support/files/entreprise.json", 'application/json') } + + it { expect(dossier.pieces_justificatives.size).to eq 0 } + + context 'when upload two PJ' do + before do + subject + dossier.reload + end + + it { expect(dossier.pieces_justificatives.size).to eq 1 } + it { expect(flash[:alert]).to be_present } + it { is_expected.to redirect_to recapitulatif_path } + end + end + end +end diff --git a/spec/controllers/users/description_controller_spec.rb b/spec/controllers/users/description_controller_spec.rb index 58d0f9f2a..b459d6341 100644 --- a/spec/controllers/users/description_controller_spec.rb +++ b/spec/controllers/users/description_controller_spec.rb @@ -1,10 +1,13 @@ require 'spec_helper' +require 'controllers/users/description_controller_shared_example' + describe Users::DescriptionController, type: :controller, vcr: {cassette_name: 'controllers_users_description_controller'} do - let(:user) { create(:user) } + let(:owner_user) { create(:user) } + let(:invite_by_user) { create :user, email: 'invite@plop.com' } let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ, :with_datetime, cerfa_flag: true) } - let(:dossier) { create(:dossier, procedure: procedure, user: user) } + let(:dossier) { create(:dossier, procedure: procedure, user: owner_user) } let(:dossier_id) { dossier.id } let(:bad_dossier_id) { Dossier.count + 10000 } @@ -20,342 +23,23 @@ describe Users::DescriptionController, type: :controller, vcr: {cassette_name: ' before do allow(ClamavService).to receive(:safe_file?).and_return(true) - sign_in dossier.user + create :invite, dossier: dossier, user: invite_by_user, email: invite_by_user.email, type: 'InviteUser' + + sign_in user end - describe 'GET #show' do - context 'user is not connected' do - before do - sign_out dossier.user - end + context 'when sign in user is the owner' do + let(:user) { owner_user } + let(:recapitulatif_path) { users_dossier_recapitulatif_path } - it 'redirects to users/sign_in' do - get :show, dossier_id: dossier_id - expect(response).to redirect_to('/users/sign_in') - end - end - - it 'returns http success' do - get :show, dossier_id: dossier_id - expect(response).to have_http_status(:success) - end - - it 'redirection vers start si mauvais dossier ID' do - get :show, dossier_id: bad_dossier_id - expect(response).to redirect_to(root_path) - end - - it_behaves_like "not owner of dossier", :show - - describe 'before_action authorized_routes?' do - context 'when dossier does not have a valid state' do - before do - dossier.state = 'validated' - dossier.save - - get :show, dossier_id: dossier.id - end - - it { is_expected.to redirect_to root_path } - end - end + it_should_behave_like "description_controller_spec" + it_should_behave_like "description_controller_spec_POST_piece_justificatives_for_owner" end - describe 'POST #create' do - let(:timestamp) { Time.now } - let(:description) { 'Description de test Coucou, je suis un saut à la ligne Je suis un double saut la ligne.' } + context 'when sign in user is an invite by owner' do + let(:user) { invite_by_user } + let(:recapitulatif_path) { users_dossiers_invite_path(id: dossier_id) } - context 'Tous les attributs sont bons' do - describe 'Premier enregistrement des données' do - before do - dossier.draft! - post :create, dossier_id: dossier_id - dossier.reload - end - - it "redirection vers la page recapitulative" do - expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") - end - - it 'etat du dossier est soumis' do - expect(dossier.state).to eq('initiated') - end - end - - context 'En train de manipuler un dossier non brouillon' do - before do - dossier.initiated! - post :create, dossier_id: dossier_id - dossier.reload - end - - it 'Redirection vers la page récapitulatif' do - expect(response).to redirect_to("/users/dossiers/#{dossier_id}/recapitulatif") - end - - it 'etat du dossier n\'est pas soumis' do - expect(dossier.state).not_to eq('draft') - end - end - end - - context 'Quand la procédure accepte les CERFA' do - context 'Sauvegarde du CERFA PDF', vcr: {cassette_name: 'controllers_users_description_controller_save_cerfa'} do - before do - post :create, dossier_id: dossier_id, - cerfa_pdf: cerfa_pdf - dossier.reload - end - - context 'when a CERFA PDF is sent', vcr: {cassette_name: 'controllers_users_description_controller_cerfa_is_sent'} do - subject { dossier.cerfa.first } - - it 'content' do - if Features.remote_storage - expect(subject['content']).to eq('cerfa-3dbb3535-5388-4a37-bc2d-778327b9f999.pdf') - else - expect(subject['content']).to eq('cerfa.pdf') - end - end - - it 'dossier_id' do - expect(subject.dossier_id).to eq(dossier_id) - end - - it { expect(subject.user).to eq user } - end - - context 'les anciens CERFA PDF ne sont pas écrasées' do - let(:cerfas) { Cerfa.where(dossier_id: dossier_id) } - - before do - post :create, dossier_id: dossier_id, cerfa_pdf: cerfa_pdf - end - - it "il y a deux CERFA PDF pour ce dossier" do - expect(cerfas.size).to eq 2 - 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, - 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 - - describe 'Sauvegarde des champs' do - let(:champs_dossier) { dossier.champs } - let(:dossier_champs_first) { 'test value' } - let(:dossier_date_value) { '23/06/2016' } - let(:dossier_hour_value) { '17' } - let(:dossier_minute_value) { '00' } - - before do - post :create, {dossier_id: dossier_id, - champs: { - "'#{dossier.champs.first.id}'" => dossier_champs_first, - "'#{dossier.champs.second.id}'" => dossier_date_value - }, - time_hour: { - "'#{dossier.champs.second.id}'" => dossier_hour_value, - }, - time_minute: { - "'#{dossier.champs.second.id}'" => dossier_minute_value, - } - } - dossier.reload - end - - it { expect(dossier.champs.first.value).to eq(dossier_champs_first) } - it { expect(response).to redirect_to users_dossier_recapitulatif_path } - - context 'when champs is type_de_champ datetime' do - it { expect(dossier.champs.second.value).to eq(dossier_date_value+' '+dossier_hour_value+':'+dossier_minute_value) } - end - - context 'when champs value is empty' do - let(:dossier_champs_first) { '' } - - it { expect(dossier.champs.first.value).to eq(dossier_champs_first) } - it { expect(response).to redirect_to users_dossier_recapitulatif_path } - - context 'when champs is mandatory' do - let(:procedure) { create(:procedure, :with_two_type_de_piece_justificative, :with_type_de_champ_mandatory, :with_datetime, cerfa_flag: true) } - - it { expect(response).not_to redirect_to users_dossier_recapitulatif_path } - it { expect(flash[:alert]).to be_present } - end - end - end - - context 'Sauvegarde des pièces justificatives', vcr: {cassette_name: 'controllers_users_description_controller_sauvegarde_pj'} do - let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } - before do - post :create, {dossier_id: dossier_id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} - dossier.reload - end - - describe 'clamav anti-virus presence', vcr: {cassette_name: 'controllers_users_description_controller_clamav_presence'} do - it 'ClamavService safe_file? is call' do - expect(ClamavService).to receive(:safe_file?).twice - - post :create, {dossier_id: dossier_id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} - end - end - - context 'for piece 0' do - subject { dossier.retrieve_last_piece_justificative_by_type all_pj_type[0].to_s } - it { expect(subject.content).not_to be_nil } - it { expect(subject.user).to eq user } - end - context 'for piece 1' do - subject { dossier.retrieve_last_piece_justificative_by_type all_pj_type[1].to_s } - it { expect(subject.content).not_to be_nil } - it { expect(subject.user).to eq user } - end - end - end - - describe 'POST #pieces_justificatives', vcr: {cassette_name: 'controllers_users_description_controller_pieces_justificatives'} do - let(:all_pj_type) { dossier.procedure.type_de_piece_justificative_ids } - - subject { patch :pieces_justificatives, {dossier_id: dossier.id, - 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, - 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } - - context 'when user is the owner' do - before do - sign_in user - end - - context 'when PJ have no documents' do - it { expect(dossier.pieces_justificatives.size).to eq 0 } - - context 'when upload two PJ' do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 2 } - it { expect(flash[:notice]).to be_present } - it { is_expected.to redirect_to users_dossier_recapitulatif_path } - end - end - - context 'when PJ have already a document', vcr: {cassette_name: 'controllers_users_description_controller_pj_already_exist'} do - before do - create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative_id: all_pj_type[0] - create :piece_justificative, :contrat, dossier: dossier, type_de_piece_justificative_id: all_pj_type[1] - end - - it { expect(dossier.pieces_justificatives.size).to eq 2 } - - context 'when upload two PJ', vcr: {cassette_name: 'controllers_users_description_controller_pj_already_exist_upload_2pj'} do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 4 } - it { expect(flash[:notice]).to be_present } - it { is_expected.to redirect_to users_dossier_recapitulatif_path } - end - end - - context 'when one of PJs is not valid' do - let(:piece_justificative_0) { Rack::Test::UploadedFile.new("./spec/support/files/entreprise.json", 'application/json') } - - it { expect(dossier.pieces_justificatives.size).to eq 0 } - - context 'when upload two PJ' do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 1 } - it { expect(flash[:alert]).to be_present } - it { is_expected.to redirect_to users_dossier_recapitulatif_path } - end - end - end - - context 'when user is a guest' do - let(:guest) { create :user } - - before do - create :invite, dossier: dossier, email: guest.email, user: guest - - sign_in guest - end - - context 'when PJ have no documents' do - it { expect(dossier.pieces_justificatives.size).to eq 0 } - - context 'when upload two PJ' do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 2 } - it { expect(flash[:notice]).to be_present } - it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } - end - end - - context 'when PJ have already a document' do - before do - create :piece_justificative, :rib, dossier: dossier, type_de_piece_justificative_id: all_pj_type[0] - create :piece_justificative, :contrat, dossier: dossier, type_de_piece_justificative_id: all_pj_type[1] - end - - it { expect(dossier.pieces_justificatives.size).to eq 2 } - - context 'when upload two PJ', vcr: {cassette_name: 'controllers_users_description_controller_upload_2pj'} do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 4 } - it { expect(flash[:notice]).to be_present } - it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } - end - end - - context 'when one of PJs is not valid' do - let(:piece_justificative_0) { Rack::Test::UploadedFile.new("./spec/support/files/entreprise.json", 'application/json') } - - it { expect(dossier.pieces_justificatives.size).to eq 0 } - - context 'when upload two PJ' do - before do - subject - dossier.reload - end - - it { expect(dossier.pieces_justificatives.size).to eq 1 } - it { expect(flash[:alert]).to be_present } - it { is_expected.to redirect_to users_dossiers_invite_path(id: guest.invites.find_by_dossier_id(dossier.id).id) } - end - end - end + it_should_behave_like "description_controller_spec" end end diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 9d483a0a4..eee59c898 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -1,55 +1,31 @@ require 'spec_helper' +require 'controllers/user_controller_shared_example' + describe UsersController, type: :controller do - describe '#current_user_dossier' do - let(:user) { create(:user) } - let(:dossier) { create(:dossier, user: user)} + let(:owner_user) { create(:user) } + let(:invite_user) { create :user, email: 'invite@plop.com' } + let(:not_invite_user) { create :user, email: 'not_invite@plop.com' } - before do - sign_in user + let(:dossier) { create(:dossier, user: owner_user) } + + context 'when user is the owner' do + before do + sign_in owner_user + end + + it_should_behave_like "current_user_dossier_spec" end - context 'when no dossier_id is filled' do - it { expect{ subject.current_user_dossier }.to raise_error } - end - - context 'when dossier_id is given as a param' do - context 'when dossier id is valid' do - it 'returns current user dossier' do - expect(subject.current_user_dossier dossier.id).to eq(dossier) - end + context 'when user is invite by the owner' do + before do + create :invite, email: invite_user.email, dossier: dossier, user: invite_user, type: 'InviteUser' + sign_in invite_user end - context 'when dossier id is incorrect' do - it { expect{ subject.current_user_dossier 1 }.to raise_error } - end - end - - context 'when no params[] is given' do - context 'when dossier id is valid' do - before do - subject.params[:dossier_id] = dossier.id - end - - it 'returns current user dossier' do - expect(subject.current_user_dossier).to eq(dossier) - end - end - - context 'when dossier id is incorrect' do - it { expect{ subject.current_user_dossier }.to raise_error } - end - - context 'when dossier_id is given as a param' do - before do - subject.params[:dossier_id] = 1 - end - - it 'returns dossier with the id on params past' do - expect(subject.current_user_dossier dossier.id).to eq(dossier) - end - end + it_should_behave_like "current_user_dossier_spec" end end -end \ No newline at end of file +end + diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 21ac74bd0..24fa351e6 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -829,4 +829,31 @@ describe Dossier do it { expect(subject).to eq 2 } end end + + describe '#invite_by_user?' do + let(:dossier) { create :dossier } + let(:invite_user) { create :user, email: user_invite_email } + let(:invite_gestionnaire) { create :user, email: gestionnaire_invite_email } + let(:user_invite_email) { 'plup@plop.com' } + let(:gestionnaire_invite_email) { 'plap@plip.com' } + + before do + create :invite, dossier: dossier, user: invite_user, email: invite_user.email, type: 'InviteUser' + create :invite, dossier: dossier, user: invite_gestionnaire, email: invite_gestionnaire.email, type: 'InviteGestionnaire' + end + + subject { dossier.invite_by_user? email } + + context 'when email is present on invite list' do + let(:email) { user_invite_email } + + it { is_expected.to be_truthy } + end + + context 'when email is present on invite list' do + let(:email) { gestionnaire_invite_email } + + it { is_expected.to be_falsey } + end + end end diff --git a/spec/views/users/recapitulatif/show.html.haml_spec.rb b/spec/views/users/recapitulatif/show.html.haml_spec.rb index a687bb94e..f5a7bd92a 100644 --- a/spec/views/users/recapitulatif/show.html.haml_spec.rb +++ b/spec/views/users/recapitulatif/show.html.haml_spec.rb @@ -40,6 +40,12 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end end + context 'lien carte' do + it 'le lien vers carte est présent' do + expect(rendered).to have_css('#maj_pj') + end + end + context 'lien carte' do it 'le lien vers carte est présent' do expect(rendered).to have_css('#maj_carte') @@ -169,43 +175,88 @@ describe 'users/recapitulatif/show.html.haml', type: :view do end context 'when invite is logged' do - let!(:invite_user) { create(:user, email: 'invite@octo.com') } - before do - create(:invite) { create(:invite, email: invite_user.email, user: invite_user, dossier: dossier) } - sign_out dossier.user - - sign_in invite_user - - render - end - - describe 'les liens de modifications' do - it 'describe link is not present' do - expect(rendered).not_to have_css('#maj_infos') - end - - it 'map link is not present' do - expect(rendered).not_to have_css('#maj_carte') - end - - it 'archive link is not present' do - expect(rendered).not_to have_content('Archiver') - end - end - - context 'when dossier is validated' do - let(:state) { 'validated' } + context 'when invite is by Gestionnaire' do + let!(:invite_user) { create(:user, email: 'invite@octo.com') } before do + create(:invite) { create(:invite, email: invite_user.email, user: invite_user, dossier: dossier) } + sign_out dossier.user + sign_in invite_user render end - it 'submitted link is not present' do - expect(rendered).not_to have_content('Déposer mon dossier') + describe 'les liens de modifications' do + it 'describe link is not present' do + expect(rendered).not_to have_css('#maj_infos') + end + + it 'map link is not present' do + expect(rendered).not_to have_css('#maj_carte') + end + + it 'PJ link is not present' do + expect(rendered).not_to have_css('#maj_pj') + end + + it 'archive link is not present' do + expect(rendered).not_to have_content('Archiver') + end + end + + context 'when dossier is validated' do + let(:state) { 'validated' } + + before do + render + end + + it 'submitted link is not present' do + expect(rendered).not_to have_content('Déposer mon dossier') + end end end + context 'invite is by User' do + let!(:invite_user) { create(:user, email: 'invite@octo.com') } + + before do + create(:invite) { create(:invite, email: invite_user.email, user: invite_user, dossier: dossier, type: 'InviteUser') } + sign_out dossier.user + sign_in invite_user + render + end + + describe 'les liens de modifications' do + it 'describe link is not present' do + expect(rendered).to have_css('#maj_infos') + end + + it 'map link is present' do + expect(rendered).to have_css('#maj_carte') + end + + it 'PJ link is present' do + expect(rendered).to have_css('#maj_pj') + end + + it 'archive link is present' do + expect(rendered).not_to have_content('Archiver') + end + end + + context 'when dossier is validated' do + let(:state) { 'validated' } + + before do + render + end + + it 'submitted link is not present' do + expect(rendered).not_to have_content('Déposer mon dossier') + end + end + end end end end From 3014c4c5394ca6d8ce81c0f47bfd76cffda82816 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 14 Sep 2016 16:57:51 +0200 Subject: [PATCH 48/53] Change word "Instruction" to "Examen" --- app/views/backoffice/dossiers/_onglets.html.haml | 2 +- .../backoffice/dossiers/_state_description.html.haml | 4 ++-- app/views/cgu/index.html.haml | 8 ++++---- app/views/users/dossiers/_onglets.html.haml | 6 +++--- app/views/users/dossiers/_state_description.html.haml | 6 +++--- spec/features/users/onglets_link_spec.rb | 4 ++-- spec/views/users/dossiers/index_html.haml_spec.rb | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/views/backoffice/dossiers/_onglets.html.haml b/app/views/backoffice/dossiers/_onglets.html.haml index cb69ef779..d19724455 100644 --- a/app/views/backoffice/dossiers/_onglets.html.haml +++ b/app/views/backoffice/dossiers/_onglets.html.haml @@ -32,7 +32,7 @@ =@dossiers_list_facade.en_attente_total %li{ class: (@dossiers_list_facade.deposes_class) } - %a{:href => "#{url_for @dossiers_list_facade.deposes_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant instruction.'} + %a{:href => "#{url_for @dossiers_list_facade.deposes_url}", 'data-toggle' => :tooltip, title: 'Les dossiers qui ont été validés et déposés par les usager qui attendent une réponse de bonne réception avant examen.'} %h5.text-purple ="À réceptionner" .badge.progress-bar-purple diff --git a/app/views/backoffice/dossiers/_state_description.html.haml b/app/views/backoffice/dossiers/_state_description.html.haml index e1cf22e9c..13d1cf58f 100644 --- a/app/views/backoffice/dossiers/_state_description.html.haml +++ b/app/views/backoffice/dossiers/_state_description.html.haml @@ -20,8 +20,8 @@ -elsif dossiers_list_facade.liste == 'deposes' Tous les dossiers présents dans cette liste ont été %b - officiellement déposé par l'usager pour instruction. - Il faut donc que vous confirmiez par "accusé de réception" la bonne réception de toutes les informations et documents demandés avant instruction finale. + officiellement déposé par l'usager pour examen. + Il faut donc que vous confirmiez par "accusé de réception" la bonne réception de toutes les informations et documents demandés avant examen final. -elsif dossiers_list_facade.liste == 'a_instruire' Tous les dossiers présents dans cette liste sont à instruire. Ceux sont tous les dossiers %b diff --git a/app/views/cgu/index.html.haml b/app/views/cgu/index.html.haml index 7e8525f5c..0983ef0d5 100644 --- a/app/views/cgu/index.html.haml +++ b/app/views/cgu/index.html.haml @@ -43,7 +43,7 @@ %a{:href => "https://tps.apientreprise.fr/"} %strong tps.apientreprise.fr %p - Le site internet tps.apientreprise.fr a pour objet de faciliter la création de démarches administratives en ligne par les acteurs publics, et l’instruction par plusieurs services des demandes formulées par les usagers auprès d’un ou organismes publics. + Le site internet tps.apientreprise.fr a pour objet de faciliter la création de démarches administratives en ligne par les acteurs publics, et l’examen par plusieurs services des demandes formulées par les usagers auprès d’un ou organismes publics. %br %h3 Acteurs de @@ -68,8 +68,8 @@ %h3 Données collectées et responsabilité des organismes publics à l’initiative de démarches en ligne avec TPS. %p Les données collectées par le service sont définis par les services publics utilisateurs du service qui arrêtent, sous leur responsabilité, la liste des informations qui seront demandées à l’usager. -%p Les organismes publics s’engagent à créer des démarches pour collecter les informations strictement nécessaires à l’instruction des demandes formulées auprès des acteurs publics, dans le cadre juridique prévu par chacune des démarches. -%p Ces données sont collectées et traitées par les seuls services concernés par l’instruction des demandes, et précisées dans la notice d’utilisation de chaque démarche publiée par l’organisme public. +%p Les organismes publics s’engagent à créer des démarches pour collecter les informations strictement nécessaires à l’examen des demandes formulées auprès des acteurs publics, dans le cadre juridique prévu par chacune des démarches. +%p Ces données sont collectées et traitées par les seuls services concernés par l’examen des demandes, et précisées dans la notice d’utilisation de chaque démarche publiée par l’organisme public. %br %h3 Traitement des données à caractère personnel @@ -108,7 +108,7 @@ %br/ 94300 VINCENNES %p - Les informations transmises aux autorités publiques en charges de l’instruction de dossiers de candidature sont définis par le service en ligne suivant proposé aux internautes : + Les informations transmises aux autorités publiques en charges de l’examen de dossiers de candidature sont définis par le service en ligne suivant proposé aux internautes : %a{:href => "https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html"} https://www.infogreffe.fr/societes/documents-officiels/demande-kbis.html %p %a{:href => "https://www.infogreffe.fr/societes/cgu-cgv.html"} Conditions générales d’utilisation des données d’infogreffe diff --git a/app/views/users/dossiers/_onglets.html.haml b/app/views/users/dossiers/_onglets.html.haml index 196d9571f..86e2c86a2 100644 --- a/app/views/users/dossiers/_onglets.html.haml +++ b/app/views/users/dossiers/_onglets.html.haml @@ -25,16 +25,16 @@ = @dossiers_list_facade.en_attente_total %li{ class: @dossiers_list_facade.valides_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'valides')}", 'data-toggle' => :tooltip, title: 'Les dossiers relus par votre accompagnateur pouvant être déposés pour instruction.'} + %a{:href => "#{url_for users_dossiers_path(liste: 'valides')}", 'data-toggle' => :tooltip, title: 'Les dossiers relus par votre accompagnateur pouvant être déposés pour examen.'} %h5.text-purple ="À déposer" .badge.progress-bar-purple = @dossiers_list_facade.valides_total %li{ class: @dossiers_list_facade.en_instruction_class } - %a{:href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'instruction par l\'administration compétante.'} + %a{:href => "#{url_for users_dossiers_path(liste: 'en_instruction')}", 'data-toggle' => :tooltip, title: 'Les dossiers en cours d\'examen par l\'administration compétante.'} %h5.text-default - ="En instruction" + ="En examen" .badge.progress-bar-default = @dossiers_list_facade.en_instruction_total diff --git a/app/views/users/dossiers/_state_description.html.haml b/app/views/users/dossiers/_state_description.html.haml index d76a583b9..be8f477e4 100644 --- a/app/views/users/dossiers/_state_description.html.haml +++ b/app/views/users/dossiers/_state_description.html.haml @@ -19,19 +19,19 @@ Les dossiers présents dans cette liste sont %b en cours de relecture par votre accompagnateur. - Il reviendra vers vous si des informations ou documents sont manquants pour la future instruction de votre dossier. + Il reviendra vers vous si des informations ou documents sont manquants pour le futur examen de votre dossier. -elsif dossiers_list_facade.liste == 'valides' Les dossiers présents dans cette liste ont été %b relus et considérés comme complet - pour instruction par votre accompagnateur. Ceux-ci ne peuvent maintenant plus être modifié. Il faut que vous procédiez à leurs dépôts afin qu'une décision finale soit rendue. + pour examen par votre accompagnateur. Ceux-ci ne peuvent maintenant plus être modifié. Il faut que vous procédiez à leurs dépôts afin qu'une décision finale soit rendue. -elsif dossiers_list_facade.liste == 'en_instruction' Les dossiers présents dans cette liste sont %b en cours de réception ou %b - en cours d'instruction + en cours d'examen par l'administration compétente. Une notification vous sera envoyée une fois qu'une décision aura été rendue. -elsif dossiers_list_facade.liste == 'termine' Les dossiers présents dans cette liste sont ceux qui ont été instruits par l'admnistration et diff --git a/spec/features/users/onglets_link_spec.rb b/spec/features/users/onglets_link_spec.rb index 4e2220a40..f2cb8c7b3 100644 --- a/spec/features/users/onglets_link_spec.rb +++ b/spec/features/users/onglets_link_spec.rb @@ -66,10 +66,10 @@ feature 'on click on tabs button' do end end - context 'when he click on tabs en instruction' do + context 'when he click on tabs en examen' do before do visit users_dossiers_url(liste: :en_instruction) - page.click_on 'En instruction 2' + page.click_on 'En examen 2' end scenario 'it redirect to users dossier termine' do diff --git a/spec/views/users/dossiers/index_html.haml_spec.rb b/spec/views/users/dossiers/index_html.haml_spec.rb index 617cb3276..bb3eed747 100644 --- a/spec/views/users/dossiers/index_html.haml_spec.rb +++ b/spec/views/users/dossiers/index_html.haml_spec.rb @@ -90,7 +90,7 @@ describe 'users/dossiers/index.html.haml', type: :view do end end - describe 'on tab etude en instruction' do + describe 'on tab etude en examen' do let(:total_dossiers) { 2 } let(:active_class) { '.active .text-default' } let(:dossiers_to_display) { user.dossiers.en_instruction } From cd4848a91608f305055a67c560518741f7fd2ced Mon Sep 17 00:00:00 2001 From: Xavier J Date: Wed, 14 Sep 2016 18:34:19 +0200 Subject: [PATCH 49/53] Update Gems Devise and Uglifier for security alert --- Gemfile | 2 +- Gemfile.lock | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Gemfile b/Gemfile index 74ec148d8..7ae9eeaf0 100644 --- a/Gemfile +++ b/Gemfile @@ -50,7 +50,7 @@ gem 'will_paginate-bootstrap' gem 'draper' #Gestion des comptes utilisateurs -gem 'devise' +gem 'devise', '~> 3.0' gem 'openid_connect' gem 'rest-client' diff --git a/Gemfile.lock b/Gemfile.lock index a9ac8e9f2..a5430abe3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -62,7 +62,7 @@ GEM autoprefixer-rails (5.2.1) execjs json - bcrypt (3.1.10) + bcrypt (3.1.11) bindata (2.1.0) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) @@ -119,7 +119,7 @@ GEM debug_inspector (0.0.2) deep_cloneable (2.2.1) activerecord (>= 3.1.0, < 5.2.0) - devise (3.4.1) + devise (3.5.10) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 3.2.6, < 5) @@ -141,7 +141,7 @@ GEM erubis (2.7.0) eventmachine (1.0.8) excon (0.49.0) - execjs (2.5.2) + execjs (2.7.0) factory_girl (4.5.0) activesupport (>= 3.0.0) faraday (0.9.1) @@ -461,8 +461,8 @@ GEM json (~> 1.4) ref (2.0.0) request_store (1.1.0) - responders (2.1.0) - railties (>= 4.2.0, < 5) + responders (2.3.0) + railties (>= 4.2.0, < 5.1) rest-client (1.8.0) http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 3.0) @@ -574,9 +574,8 @@ GEM coffee-rails tzinfo (1.2.2) thread_safe (~> 0.1) - uglifier (2.7.1) - execjs (>= 0.3.0) - json (>= 1.8.0) + uglifier (3.0.2) + execjs (>= 0.3.0, < 3) unf (0.1.4) unf_ext unf_ext (0.0.7.1) @@ -592,7 +591,7 @@ GEM activemodel (>= 3.0.0) addressable vcr (3.0.1) - warden (1.2.3) + warden (1.2.6) rack (>= 1.0) web-console (2.2.1) activemodel (>= 4.0) @@ -636,7 +635,7 @@ DEPENDENCIES coffee-rails (~> 4.1.0) database_cleaner deep_cloneable (~> 2.2.1) - devise + devise (~> 3.0) draper factory_girl fog From ccd9c0898d7bb941c723109ce2bd59258248d05f Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Sep 2016 15:40:30 +0200 Subject: [PATCH 50/53] Fix test with cloud storage enabled --- config/initializers/features.yml | 2 +- spec/controllers/users/description_controller_shared_example.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/initializers/features.yml b/config/initializers/features.yml index e91fb5346..22e2c5e0d 100644 --- a/config/initializers/features.yml +++ b/config/initializers/features.yml @@ -1 +1 @@ -remote_storage: false +remote_storage: true diff --git a/spec/controllers/users/description_controller_shared_example.rb b/spec/controllers/users/description_controller_shared_example.rb index b11cb12bb..ea3d42e9b 100644 --- a/spec/controllers/users/description_controller_shared_example.rb +++ b/spec/controllers/users/description_controller_shared_example.rb @@ -285,7 +285,7 @@ shared_examples 'description_controller_spec_POST_piece_justificatives_for_owner 'piece_justificative_'+all_pj_type[0].to_s => piece_justificative_0, 'piece_justificative_'+all_pj_type[1].to_s => piece_justificative_1} } - context 'when user is the owner' do + context 'when user is the owner', vcr: {cassette_name: 'controllers_users_description_controller_pieces_justificatives'} do before do sign_in user end From 9332c0f6ed00f16e4cfe901e024c8fec38b8789a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Sep 2016 16:29:34 +0200 Subject: [PATCH 51/53] Fix brakeman test --- app/views/dossiers/etapes/_etape1.html.haml | 3 ++- app/views/notification_mailer/dossier_received.html.erb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/dossiers/etapes/_etape1.html.haml b/app/views/dossiers/etapes/_etape1.html.haml index 70c1e11fb..f9de0d764 100644 --- a/app/views/dossiers/etapes/_etape1.html.haml +++ b/app/views/dossiers/etapes/_etape1.html.haml @@ -21,4 +21,5 @@ - unless @facade.procedure.lien_site_web.blank? .center - =link_to 'En savoir plus ...', @facade.procedure.lien_site_web, {target: '_blank'} \ No newline at end of file + %a{href: "#{@facade.procedure.lien_site_web.html_safe}", target: '_blank'} + En savoir plus ... \ No newline at end of file diff --git a/app/views/notification_mailer/dossier_received.html.erb b/app/views/notification_mailer/dossier_received.html.erb index 9064120b6..4bcdc394f 100644 --- a/app/views/notification_mailer/dossier_received.html.erb +++ b/app/views/notification_mailer/dossier_received.html.erb @@ -1 +1 @@ -<%= (MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier).html_safe %> \ No newline at end of file +<%= escape_once (MailTemplate.replace_tags @dossier.procedure.mail_received.body, @dossier).html_safe %> \ No newline at end of file From bd89688346c9a07f7ea3989c2639546694d1f7d8 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Sep 2016 17:08:50 +0200 Subject: [PATCH 52/53] Fix test INSEE v2 get etablissement view --- app/assets/javascripts/dossiers.js | 7 ++++++- app/services/dossier_service.rb | 6 +++++- lib/siade/etablissement_adapter.rb | 2 ++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/dossiers.js b/app/assets/javascripts/dossiers.js index 0307b5a63..e65a0da9e 100644 --- a/app/assets/javascripts/dossiers.js +++ b/app/assets/javascripts/dossiers.js @@ -23,7 +23,12 @@ function the_terms() { } function error_form_siret(invalid_siret){ - $("input[type='submit']").removeClass('btn-success').addClass('btn-danger').val('Erreur SIRET'); + setTimeout(function(){ + $("input[type='submit']").val('Erreur SIRET'); + }, 10); + + $("input[type='submit']").removeClass('btn-success').addClass('btn-danger'); + $("#dossier_siret").addClass('input-error').val(invalid_siret).on('input', reset_form_siret); } diff --git a/app/services/dossier_service.rb b/app/services/dossier_service.rb index e086c3657..01c1fc6a0 100644 --- a/app/services/dossier_service.rb +++ b/app/services/dossier_service.rb @@ -13,9 +13,13 @@ class DossierService raise RestClient::ResourceNotFound end - @dossier.create_entreprise(@entreprise_adapter.to_params) @etablissement_adapter = SIADE::EtablissementAdapter.new(@siret) + if @etablissement_adapter.to_params.nil? + raise RestClient::ResourceNotFound + end + + @dossier.create_entreprise(@entreprise_adapter.to_params) @dossier.create_etablissement(@etablissement_adapter.to_params) @rna_adapter = SIADE::RNAAdapter.new(@siret) diff --git a/lib/siade/etablissement_adapter.rb b/lib/siade/etablissement_adapter.rb index b03c3d821..72c0052e0 100644 --- a/lib/siade/etablissement_adapter.rb +++ b/lib/siade/etablissement_adapter.rb @@ -18,6 +18,8 @@ class SIADE::EtablissementAdapter params[k] = v if address_attribut_to_fetch.include?(k) end params + rescue + nil end def attr_to_fetch From 5fb678e53bc3d54b5dd6f15a44d9a10bb8e83d6a Mon Sep 17 00:00:00 2001 From: Xavier J Date: Fri, 16 Sep 2016 17:18:29 +0200 Subject: [PATCH 53/53] Fix test --- spec/lib/siade/etablissement_adapter_spec.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/spec/lib/siade/etablissement_adapter_spec.rb b/spec/lib/siade/etablissement_adapter_spec.rb index 82d0191ad..6d6257773 100644 --- a/spec/lib/siade/etablissement_adapter_spec.rb +++ b/spec/lib/siade/etablissement_adapter_spec.rb @@ -7,7 +7,7 @@ describe SIADE::EtablissementAdapter do before do stub_request(:get, "https://api-dev.apientreprise.fr/v2/etablissements/#{siret}?token=#{SIADETOKEN}") - .to_return(body: File.read('spec/support/files/etablissement.json', status: 200)) + .to_return(body: File.read('spec/support/files/etablissement.json', status: 200)) end it '#to_params class est une Hash ?' do @@ -74,11 +74,9 @@ describe SIADE::EtablissementAdapter do before do stub_request(:get, "https://api-dev.apientreprise.fr/v2/etablissements/#{bad_siret}?token=#{SIADETOKEN}") - .to_return(body: 'Fake body', status: 404) + .to_return(body: 'Fake body', status: 404) end - it 'raises exception RestClient::ResourceNotFound' do - expect { subject }.to raise_error(RestClient::ResourceNotFound) - end + it { expect(subject).to be_nil } end end