44 lines
1.1 KiB
Ruby
44 lines
1.1 KiB
Ruby
class Champs::PieceJustificativeChamp < Champ
|
||
FILE_MAX_SIZE = 200.megabytes
|
||
|
||
# TODO: if: -> { validate_champ_value? || validation_context == :prefill }
|
||
validates :piece_justificative_file,
|
||
size: { less_than: FILE_MAX_SIZE },
|
||
if: -> { !type_de_champ.skip_pj_validation }
|
||
|
||
validates :piece_justificative_file,
|
||
content_type: AUTHORIZED_CONTENT_TYPES,
|
||
if: -> { !type_de_champ.skip_content_type_pj_validation }
|
||
|
||
def main_value_name
|
||
:piece_justificative_file
|
||
end
|
||
|
||
def search_terms
|
||
# We don’t know how to search inside documents yet
|
||
end
|
||
|
||
def mandatory_blank?
|
||
mandatory? && !piece_justificative_file.attached?
|
||
end
|
||
|
||
def blank?
|
||
piece_justificative_file.blank?
|
||
end
|
||
|
||
def for_export
|
||
piece_justificative_file.map { _1.filename.to_s }.join(', ')
|
||
end
|
||
|
||
def for_api
|
||
return nil unless piece_justificative_file.attached?
|
||
|
||
# API v1 don't support multiple PJ
|
||
attachment = piece_justificative_file.first
|
||
return nil if attachment.nil?
|
||
|
||
if attachment.virus_scanner.safe? || attachment.virus_scanner.pending?
|
||
attachment.url
|
||
end
|
||
end
|
||
end
|