checks_condition_validation.rb 996 B

12345678910111213141516171819202122232425262728293031323334
  1. # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
  2. module ChecksConditionValidation
  3. extend ActiveSupport::Concern
  4. included do
  5. before_create :validate_condition
  6. before_update :validate_condition
  7. end
  8. def validate_condition
  9. # use Marshal to do a deep copy of the condition hash
  10. validate_condition = Marshal.load(Marshal.dump(condition))
  11. # check if a valid condition got inserted.
  12. validate_condition.delete('ticket.action')
  13. validate_condition.each do |key, value|
  14. next if !value
  15. next if !value['operator']
  16. next if !value['operator']['has changed']
  17. validate_condition.delete(key)
  18. end
  19. validate_condition['ticket.id'] = {
  20. operator: 'is',
  21. value: 1,
  22. }
  23. ticket_count, _tickets = Ticket.selectors(validate_condition, limit: 1, current_user: User.find(1))
  24. return true if ticket_count.present?
  25. raise Exceptions::UnprocessableEntity, 'Invalid ticket selector conditions'
  26. end
  27. end