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:
commit
ee92668611
40 changed files with 721 additions and 47 deletions
|
@ -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 l’email afin d’informer 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 d’envoi"
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue