Merge pull request #10430 from demarches-simplifiees/routing-when-autosave-dossier
ETQ usager je vois les infos de contact de mon groupe instructeur avant dépôt du dossier, une fois le(s) champ(s) de routage rempli(s)
This commit is contained in:
commit
e79a3b6aa2
6 changed files with 51 additions and 30 deletions
|
@ -558,6 +558,10 @@ module Users
|
||||||
@dossier.update_champs_attributes(champs_public_attributes_params, :public, updated_by: current_user.email)
|
@dossier.update_champs_attributes(champs_public_attributes_params, :public, updated_by: current_user.email)
|
||||||
if @dossier.champs.any?(&:changed_for_autosave?)
|
if @dossier.champs.any?(&:changed_for_autosave?)
|
||||||
@dossier.last_champ_updated_at = Time.zone.now
|
@dossier.last_champ_updated_at = Time.zone.now
|
||||||
|
|
||||||
|
if @dossier.champs_public.any? { _1.changed_for_autosave? && _1.used_by_routing_rules? }
|
||||||
|
RoutingEngine.compute(@dossier)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# We save the dossier without validating fields, and if it is successful and the client
|
# We save the dossier without validating fields, and if it is successful and the client
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
#contact_information
|
||||||
|
- service = dossier&.service || procedure.service
|
||||||
|
- if service.present?
|
||||||
|
%h3.fr-footer__top-cat= I18n.t('users.procedure_footer.managed_by.header')
|
||||||
|
.fr-footer__top-link.fr-pb-2w
|
||||||
|
%span{ lang: :fr }= service.pretty_nom
|
||||||
|
%div{ lang: :fr }
|
||||||
|
= render SimpleFormatComponent.new(service.adresse, class_names_map: {paragraph: 'fr-footer__content-desc'})
|
||||||
|
%h3.fr-footer__top-cat= I18n.t('users.procedure_footer.contact.header')
|
||||||
|
%ul.fr-footer__top-list
|
||||||
|
- if dossier.present? && dossier.messagerie_available?
|
||||||
|
%li
|
||||||
|
= link_to I18n.t('users.procedure_footer.contact.in_app_mail.link'), messagerie_dossier_path(dossier), class: 'fr-footer__top-link'
|
||||||
|
- elsif service.present?
|
||||||
|
%li
|
||||||
|
%span.fr-footer__top-link
|
||||||
|
= I18n.t('users.procedure_footer.contact.email.link')
|
||||||
|
= link_to service.email, "mailto:#{service.email}", class: "fr-footer__top-link"
|
||||||
|
|
||||||
|
- if service.present?
|
||||||
|
- if service.telephone.present? || service.horaires.present?
|
||||||
|
%li
|
||||||
|
- horaires = "#{I18n.t('users.procedure_footer.contact.schedule.prefix')}#{formatted_horaires(service.horaires)}"
|
||||||
|
- if service.telephone.present?
|
||||||
|
= link_to service.telephone_url, class: 'fr-footer__top-link' do
|
||||||
|
%p
|
||||||
|
= I18n.t('users.procedure_footer.contact.phone.link', service_telephone: service.telephone)
|
||||||
|
- if service.horaires.present?
|
||||||
|
%p
|
||||||
|
= horaires
|
|
@ -1,37 +1,9 @@
|
||||||
%footer.fr-footer.footer-procedure#footer{ role: "contentinfo" }
|
%footer.fr-footer.footer-procedure#footer{ role: "contentinfo" }
|
||||||
- service = dossier&.service || procedure.service
|
|
||||||
.fr-footer__top.fr-mb-0
|
.fr-footer__top.fr-mb-0
|
||||||
.fr-container
|
.fr-container
|
||||||
.fr-grid-row.fr-grid-row--start.fr-grid-row--gutters
|
.fr-grid-row.fr-grid-row--start.fr-grid-row--gutters
|
||||||
.fr-col-12.fr-col-sm-4.fr-col-md-4
|
.fr-col-12.fr-col-sm-4.fr-col-md-4
|
||||||
- if service.present?
|
= render partial: 'shared/dossiers/update_contact_information', locals: { dossier: dossier, procedure: procedure }
|
||||||
%h3.fr-footer__top-cat= I18n.t('users.procedure_footer.managed_by.header')
|
|
||||||
.fr-footer__top-link.fr-pb-2w
|
|
||||||
%span{ lang: :fr }= service.pretty_nom
|
|
||||||
%div{ lang: :fr }
|
|
||||||
= render SimpleFormatComponent.new(service.adresse, class_names_map: {paragraph: 'fr-footer__content-desc'})
|
|
||||||
%h3.fr-footer__top-cat= I18n.t('users.procedure_footer.contact.header')
|
|
||||||
%ul.fr-footer__top-list
|
|
||||||
- if dossier.present? && dossier.messagerie_available?
|
|
||||||
%li
|
|
||||||
= link_to I18n.t('users.procedure_footer.contact.in_app_mail.link'), messagerie_dossier_path(dossier), class: 'fr-footer__top-link'
|
|
||||||
- elsif service.present?
|
|
||||||
%li
|
|
||||||
%span.fr-footer__top-link
|
|
||||||
= I18n.t('users.procedure_footer.contact.email.link')
|
|
||||||
= link_to service.email, "mailto:#{service.email}", class: "fr-footer__top-link"
|
|
||||||
|
|
||||||
- if service.present?
|
|
||||||
- if service.telephone.present? || service.horaires.present?
|
|
||||||
%li
|
|
||||||
- horaires = "#{I18n.t('users.procedure_footer.contact.schedule.prefix')}#{formatted_horaires(service.horaires)}"
|
|
||||||
- if service.telephone.present?
|
|
||||||
= link_to service.telephone_url, class: 'fr-footer__top-link' do
|
|
||||||
%p
|
|
||||||
= I18n.t('users.procedure_footer.contact.phone.link', service_telephone: service.telephone)
|
|
||||||
- if service.horaires.present?
|
|
||||||
%p
|
|
||||||
= horaires
|
|
||||||
|
|
||||||
- politiques = politiques_conservation_de_donnees(procedure)
|
- politiques = politiques_conservation_de_donnees(procedure)
|
||||||
- if politiques.present?
|
- if politiques.present?
|
||||||
|
|
|
@ -5,3 +5,5 @@
|
||||||
= turbo_stream.append('contenu', render(Dossiers::InvalidIneligibiliteRulesComponent.new(dossier: @dossier)))
|
= turbo_stream.append('contenu', render(Dossiers::InvalidIneligibiliteRulesComponent.new(dossier: @dossier)))
|
||||||
- else @ineligibilite_rules_is_computable
|
- else @ineligibilite_rules_is_computable
|
||||||
= turbo_stream.remove(dom_id(@dossier, :ineligibilite_rules_broken))
|
= turbo_stream.remove(dom_id(@dossier, :ineligibilite_rules_broken))
|
||||||
|
- if @dossier.champs.any? { _1.used_by_routing_rules? && params[:dossier][:champs_public_attributes].key?(_1.stable_id.to_s) }
|
||||||
|
= turbo_stream.update "contact_information", partial: 'shared/dossiers/update_contact_information', locals: { dossier: @dossier, procedure: @procedure }
|
||||||
|
|
|
@ -125,6 +125,9 @@ describe 'The routing with rules', js: true do
|
||||||
expect(page).to have_text('Le groupe d’instructeurs « artistique » a été créé. ')
|
expect(page).to have_text('Le groupe d’instructeurs « artistique » a été créé. ')
|
||||||
expect(procedure.groupe_instructeurs.count).to eq(4)
|
expect(procedure.groupe_instructeurs.count).to eq(4)
|
||||||
|
|
||||||
|
# add contact_information to all groupes instructeur
|
||||||
|
procedure.groupe_instructeurs.each { |gi| gi.update!(contact_information: create(:contact_information)) }
|
||||||
|
|
||||||
# publish
|
# publish
|
||||||
publish_procedure(procedure)
|
publish_procedure(procedure)
|
||||||
log_out
|
log_out
|
||||||
|
@ -267,9 +270,18 @@ describe 'The routing with rules', js: true do
|
||||||
# the old system should not be present
|
# the old system should not be present
|
||||||
expect(page).not_to have_selector("#dossier_groupe_instructeur_id")
|
expect(page).not_to have_selector("#dossier_groupe_instructeur_id")
|
||||||
|
|
||||||
|
dossier = user.dossiers.first
|
||||||
|
|
||||||
|
expect(dossier.groupe_instructeur_id).to be_nil
|
||||||
|
expect(page).to have_text(procedure.service.nom)
|
||||||
|
|
||||||
choose(groupe)
|
choose(groupe)
|
||||||
wait_for_autosave
|
wait_for_autosave
|
||||||
|
|
||||||
|
expect(dossier.reload.groupe_instructeur_id).not_to be_nil
|
||||||
|
expect(page).to have_text(dossier.service.nom)
|
||||||
|
expect(page).not_to have_text(procedure.service.nom)
|
||||||
|
|
||||||
click_on 'Déposer le dossier'
|
click_on 'Déposer le dossier'
|
||||||
expect(page).to have_text('Merci')
|
expect(page).to have_text('Merci')
|
||||||
|
|
||||||
|
|
|
@ -674,7 +674,8 @@ describe 'The user' do
|
||||||
|
|
||||||
def champ_for(libelle)
|
def champ_for(libelle)
|
||||||
champs = user_dossier.reload.champs_public
|
champs = user_dossier.reload.champs_public
|
||||||
champs.find { |c| c.libelle == libelle }
|
champ = champs.find { |c| c.libelle == libelle }
|
||||||
|
champ.reload
|
||||||
end
|
end
|
||||||
|
|
||||||
def fill_individual
|
def fill_individual
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue