Merge pull request #9930 from demarches-simplifiees/add-external-link-to-procedure

ETQ admin lorsque je clos une démarche je peux alerter les usagers et je crée une page de fermeture si la démarche n'est pas redirigée dans DS
This commit is contained in:
Colin Darie 2024-03-12 15:03:30 +00:00 committed by GitHub
commit ee92668611
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
40 changed files with 721 additions and 47 deletions

View file

@ -194,21 +194,56 @@ module Administrateurs
def archive
procedure = current_administrateur.procedures.find(params[:procedure_id])
if params[:new_procedure].present?
new_procedure = current_administrateur.procedures.find(params[:new_procedure])
procedure.update!(replaced_by_procedure_id: new_procedure.id)
if procedure.update(closing_params)
procedure.close!
if (procedure.dossiers.not_archived.state_brouillon.present? || procedure.dossiers.not_archived.state_en_construction_ou_instruction.present?)
redirect_to admin_procedure_closing_notification_path
else
flash.notice = "Démarche close"
redirect_to admin_procedure_path(id: procedure.id)
end
else
flash.alert = procedure.errors.full_messages
redirect_to admin_procedure_close_path
end
procedure.close!
flash.notice = "Démarche close"
redirect_to admin_procedures_path
rescue ActiveRecord::RecordNotFound
flash.alert = 'Démarche inexistante'
redirect_to admin_procedures_path
end
def closing_notification
@procedure = current_administrateur.procedures.find(params[:procedure_id])
@users_brouillon_count = @procedure.dossiers.not_archived.state_brouillon.count('distinct user_id')
@users_en_cours_count = @procedure.dossiers.not_archived.state_en_construction_ou_instruction.count('distinct user_id')
end
def notify_after_closing
@procedure = current_administrateur.procedures.find(params[:procedure_id])
@procedure.update!(notification_closing_params)
if (@procedure.closing_notification_brouillon? && params[:email_content_brouillon].blank?) || (@procedure.closing_notification_en_cours? && params[:email_content_en_cours].blank?)
flash.alert = "Veuillez renseigner le contenu de lemail afin dinformer les usagers"
redirect_to admin_procedure_closing_notification_path and return
end
if @procedure.closing_notification_brouillon?
user_ids = @procedure.dossiers.not_archived.state_brouillon.pluck(:user_id).uniq
content = params[:email_content_brouillon]
SendClosingNotificationJob.perform_later(user_ids, content, @procedure)
flash.notice = "Les emails sont en cours d'envoi"
end
if @procedure.closing_notification_en_cours?
user_ids = @procedure.dossiers.not_archived.state_en_construction_ou_instruction.pluck(:user_id).uniq
content = params[:email_content_en_cours]
SendClosingNotificationJob.perform_later(user_ids, content, @procedure)
flash.notice = "Les emails sont en cours denvoi"
end
redirect_to admin_procedures_path
end
def destroy
procedure = current_administrateur.procedures.find(params[:id])
@ -301,6 +336,10 @@ module Administrateurs
.update!(replaced_by_procedure: @procedure)
end
# TO DO after data backfill add this condition before reset :
# if @procedure.closing_reason.present?
@procedure.reset_closing_params
redirect_to admin_procedure_confirmation_path(@procedure)
rescue ActiveRecord::RecordInvalid
flash.alert = @procedure.errors.full_messages
@ -327,6 +366,7 @@ module Administrateurs
def close
@published_procedures = current_administrateur.procedures.publiees.to_h { |p| ["#{p.libelle} (#{p.id})", p.id] }
@closing_reason_options = Procedure.closing_reasons.values.map { |reason| [I18n.t("activerecord.attributes.procedure.closing_reasons.#{reason}"), reason] }
end
def confirmation
@ -494,6 +534,22 @@ module Administrateurs
params.permit(:path, :lien_site_web)
end
def closing_params
closing_params = params.require(:procedure).permit(:closing_details, :closing_reason, :replaced_by_procedure_id)
replaced_by_procedure_id = closing_params[:replaced_by_procedure_id]
if replaced_by_procedure_id.present?
if current_administrateur.procedures.find_by(id: replaced_by_procedure_id).blank?
closing_params.delete(:replaced_by_procedure_id)
end
end
closing_params
end
def notification_closing_params
params.require(:procedure).permit(:closing_notification_brouillon, :closing_notification_en_cours)
end
def allow_decision_access_params
params.require(:experts_procedure).permit(:allow_decision_access)
end

View file

@ -78,6 +78,11 @@ module Users
current_user ? :user : :guest
end
def closing_details
@procedure = Procedure.find_by(path: params[:path])
render 'closing_details', layout: 'closing_details'
end
private
def extra_query_params
@ -136,9 +141,8 @@ module Users
redirect_to commencer_path(procedure.replaced_by_procedure.path, **extra_query_params)
return
elsif procedure&.close?
flash.alert = procedure.service.presence ?
t('errors.messages.procedure_archived.with_service_and_phone_email', service_name: procedure.service.nom, service_phone_number: procedure.service.telephone, service_email: procedure.service.email) :
t('errors.messages.procedure_archived.with_organisation_only', organisation_name: procedure.organisation)
redirect_to closing_details_path(procedure.path)
return
else
flash.alert = t('errors.messages.procedure_not_found')
end