diff --git a/app/components/attachment/edit_component.rb b/app/components/attachment/edit_component.rb index c4404a6dc..f58aed7fa 100644 --- a/app/components/attachment/edit_component.rb +++ b/app/components/attachment/edit_component.rb @@ -58,7 +58,7 @@ class Attachment::EditComponent < ApplicationComponent def destroy_attachment_path if champ.present? - attachment_path(dossier_id: champ&.dossier_id, stable_id: champ&.stable_id, row_id: champ&.row_id) + attachment_path else attachment_path(auto_attach_url: @auto_attach_url, view_as: @view_as, direct_upload: @direct_upload) end diff --git a/app/components/editable_champ/editable_champ_component.rb b/app/components/editable_champ/editable_champ_component.rb index ad2251f26..5ecbe2495 100644 --- a/app/components/editable_champ/editable_champ_component.rb +++ b/app/components/editable_champ/editable_champ_component.rb @@ -58,9 +58,9 @@ class EditableChamp::EditableChampComponent < ApplicationComponent def turbo_poll_url_value if @champ.private? - annotation_instructeur_dossier_path(@champ.dossier.procedure, @champ.dossier, @champ.stable_id, row_id: @champ.row_id, with_public_id: true) + annotation_instructeur_dossier_path(@champ.dossier.procedure, @champ.dossier, @champ.stable_id, row_id: @champ.row_id) else - champ_dossier_path(@champ.dossier, @champ.stable_id, row_id: @champ.row_id, with_public_id: true) + champ_dossier_path(@champ.dossier, @champ.stable_id, row_id: @champ.row_id) end end diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index c61ba79db..cfba84e7e 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -20,15 +20,16 @@ class AttachmentsController < ApplicationController def destroy @attachment = @blob.attachments.find(params[:id]) - @attachment.purge_later - flash.notice = 'La pièce jointe a bien été supprimée.' - if params[:dossier_id] - @champ = find_champ + if champ? + @attachment = champ.piece_justificative_file.find { _1.blob.id == @blob.id } else @attachment_options = attachment_options end + @attachment.purge_later + flash.notice = 'La pièce jointe a bien été supprimée.' + respond_to do |format| format.turbo_stream format.html { redirect_back(fallback_location: root_url) } @@ -37,14 +38,23 @@ class AttachmentsController < ApplicationController private - def find_champ - dossier = policy_scope(Dossier).includes(:champs).find(params[:dossier_id]) - dossier.champs.find_by(stable_id: params[:stable_id], row_id: params[:row_id] || Champ::NULL_ROW_ID) + def record + @attachment.record + end + + def champ? + record.is_a?(Champ) + end + + def champ + @champ ||= if champ? + record.dossier.champ_for_update(record.type_de_champ, row_id: record.row_id, updated_by: current_user.email) + end end def attachment_options { - attached_file: @attachment.record.public_send(@attachment.name), + attached_file: record.public_send(@attachment.name), view_as: params[:view_as]&.to_sym, direct_upload: params[:direct_upload] == "true", auto_attach_url: params[:direct_upload] == "true" ? params[:auto_attach_url] : nil