1234567891011121314151617181920212223242526272829 |
- # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
- class PostmasterFilter < ApplicationModel
- store :perform
- store :match
- validates :name, presence: true
- before_create :validate_condition
- before_update :validate_condition
- def validate_condition
- raise Exceptions::UnprocessableEntity, 'Min. one match rule needed!' if match.blank?
- match.each { |_key, meta|
- raise Exceptions::UnprocessableEntity, 'operator invalid, ony "contains" and "contains not" is supported' if meta['operator'].blank? || meta['operator'] !~ /^(contains|contains not)$/
- raise Exceptions::UnprocessableEntity, 'value invalid/empty' if meta['value'].blank?
- begin
- if meta['operator'] == 'contains not'
- Channel::Filter::Database.match('test content', meta['value'], false, true)
- else
- Channel::Filter::Database.match('test content', meta['value'], true, true)
- end
- rescue => e
- raise Exceptions::UnprocessableEntity, e.message
- end
- }
- true
- end
- end
|