organization.rb 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
  2. class Organization < ApplicationModel
  3. include HasActivityStreamLog
  4. include ChecksClientNotification
  5. include ChecksLatestChangeObserved
  6. include HasHistory
  7. include HasSearchIndexBackend
  8. include CanCsvImport
  9. include ChecksHtmlSanitized
  10. include HasObjectManagerAttributesValidation
  11. include HasTaskbars
  12. include Organization::Assets
  13. include Organization::Search
  14. include Organization::SearchIndex
  15. has_many :members, class_name: 'User'
  16. has_many :tickets, class_name: 'Ticket'
  17. before_create :domain_cleanup
  18. before_update :domain_cleanup
  19. before_destroy :delete_associations
  20. validates :name, presence: true
  21. validates :domain, presence: { message: 'required when Domain Based Assignment is enabled' }, if: :domain_assignment
  22. association_attributes_ignored :tickets
  23. activity_stream_permission 'admin.role'
  24. sanitized_html :note
  25. private
  26. def domain_cleanup
  27. return true if domain.blank?
  28. domain.gsub!(/@/, '')
  29. domain.gsub!(/\s*/, '')
  30. domain.strip!
  31. domain.downcase!
  32. true
  33. end
  34. def delete_associations
  35. User.where(organization_id: id).find_each(&:destroy)
  36. Ticket.where(organization_id: id).find_each(&:destroy)
  37. end
  38. end