postmaster_filter.rb 1.0 KB

1234567891011121314151617181920212223242526272829
  1. # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
  2. class PostmasterFilter < ApplicationModel
  3. store :perform
  4. store :match
  5. validates :name, presence: true
  6. before_create :validate_condition
  7. before_update :validate_condition
  8. def validate_condition
  9. raise Exceptions::UnprocessableEntity, 'Min. one match rule needed!' if match.blank?
  10. match.each { |_key, meta|
  11. raise Exceptions::UnprocessableEntity, 'operator invalid, ony "contains" and "contains not" is supported' if meta['operator'].blank? || meta['operator'] !~ /^(contains|contains not)$/
  12. raise Exceptions::UnprocessableEntity, 'value invalid/empty' if meta['value'].blank?
  13. begin
  14. if meta['operator'] == 'contains not'
  15. Channel::Filter::Database.match('test content', meta['value'], false, true)
  16. else
  17. Channel::Filter::Database.match('test content', meta['value'], true, true)
  18. end
  19. rescue => e
  20. raise Exceptions::UnprocessableEntity, e.message
  21. end
  22. }
  23. true
  24. end
  25. end