adds_metadata_origin_by_id.rb 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. # Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
  2. # Adds origin_by_id field (if missing) when creating articles.
  3. module Ticket::Article::AddsMetadataOriginById
  4. extend ActiveSupport::Concern
  5. included do
  6. before_create :ticket_article_add_metadata_origin_by_id
  7. end
  8. private
  9. def ticket_article_add_metadata_origin_by_id
  10. # return if we run import mode
  11. return true if Setting.get('import_mode')
  12. # only do fill origin_by_id if article got created via application_server (e. g. not
  13. # if article and sender type is set via *.postmaster)
  14. return true if ApplicationHandleInfo.postmaster?
  15. # check if origin_by_id exists
  16. return true if origin_by_id.present?
  17. return true if ticket.blank?
  18. return true if ticket.customer_id.blank?
  19. return true if sender_id.blank?
  20. return true if sender.name != 'Customer'
  21. type_name = type.name
  22. return true if type_name != 'phone' && type_name != 'note' && type_name != 'web'
  23. organization = created_by.organization
  24. return true if organization&.shared? && organization.members.include?(ticket.customer)
  25. self.origin_by_id = ticket.customer_id
  26. end
  27. end