demarches-normaliennes/app/components/attachment/gallery_item_component.rb

132 lines
3.1 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# frozen_string_literal: true
class Attachment::GalleryItemComponent < ApplicationComponent
include GalleryHelper
attr_reader :attachment, :seen_at
def initialize(attachment:, gallery_demande: false, seen_at: nil)
@attachment = attachment
@gallery_demande = gallery_demande
@seen_at = seen_at
end
def blob
attachment.blob
end
def gallery_demande? = @gallery_demande
def libelle
if from_champ?
attachment.record.libelle
elsif from_messagerie?
'Pièce jointe au message'
elsif from_avis_externe?
'Pièce jointe à lavis'
elsif from_justificatif_motivation?
'Pièce jointe à la décision'
end
end
def origin
case
when from_public_champ?
'Dossier usager'
when from_private_champ?
'Annotation privée'
when from_messagerie_expert?
'Messagerie (expert)'
when from_messagerie_instructeur?
'Messagerie (instructeur)'
when from_messagerie_usager?
'Messagerie (usager)'
when from_avis_externe_instructeur?
'Avis externe (instructeur)'
when from_avis_externe_expert?
'Avis externe (expert)'
when from_justificatif_motivation?
'Justificatif de décision'
end
end
def title
"#{libelle} -- #{sanitize(blob.filename.to_s)}"
end
def gallery_link(blob, &block)
if displayable_image?(blob)
link_to image_url(blob_url(attachment)), title: title, data: { src: blob.url }, class: 'gallery-link' do
yield
end
elsif displayable_pdf?(blob)
link_to blob.url, id: blob.id, data: { iframe: true, src: blob.url }, class: 'gallery-link', type: blob.content_type, title: title do
yield
end
end
end
def created_at
attachment.record.created_at
end
def updated?
from_public_champ? && updated_at > attachment.record.dossier.depose_at
end
def updated_at
blob.created_at
end
def badge_updated_class
class_names(
"fr-badge fr-badge--sm" => true,
"highlighted" => seen_at.present? && updated_at&.>(seen_at)
)
end
private
def from_champ?
attachment.record.class.in?([Champs::PieceJustificativeChamp, Champs::TitreIdentiteChamp])
end
def from_public_champ?
from_champ? && !attachment.record.private?
end
def from_private_champ?
from_champ? && attachment.record.private?
end
def from_messagerie?
attachment.record.is_a?(Commentaire)
end
def from_messagerie_instructeur?
from_messagerie? && attachment.record.instructeur.present?
end
def from_messagerie_expert?
from_messagerie? && attachment.record.expert.present?
end
def from_messagerie_usager?
from_messagerie? && attachment.record.instructeur.nil? && attachment.record.expert.nil?
end
def from_avis_externe?
attachment.record.is_a?(Avis)
end
def from_avis_externe_instructeur?
from_avis_externe? && attachment.name == 'introduction_file'
end
def from_avis_externe_expert?
from_avis_externe? && attachment.name == 'piece_justificative_file'
end
def from_justificatif_motivation?
attachment.name == 'justificatif_motivation'
end
end