36 lines
876 B
Ruby
36 lines
876 B
Ruby
# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
|
|
|
|
module Taskbar::HasAttachments
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
scope :with_form_id, -> { where("state LIKE '%form_id%'") }
|
|
|
|
after_destroy :clear_attachments
|
|
end
|
|
|
|
# form_id is saved directly in a new ticket, but inside of the article when updating an existing ticket
|
|
def persisted_form_id
|
|
state&.dig(:form_id) || state&.dig(:article, :form_id)
|
|
end
|
|
|
|
private
|
|
|
|
def attachments
|
|
return [] if persisted_form_id.blank?
|
|
|
|
UploadCache.new(persisted_form_id).attachments
|
|
end
|
|
|
|
def add_attachments_to_attributes(attributes)
|
|
attributes.tap do |result|
|
|
result['attachments'] = attachments.map(&:attributes_for_display)
|
|
end
|
|
end
|
|
|
|
def clear_attachments
|
|
return if persisted_form_id.blank?
|
|
|
|
UploadCache.new(persisted_form_id).destroy
|
|
end
|
|
end
|