backend.rb 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
  2. class CoreWorkflow::Condition::Backend
  3. def initialize(condition_object:, result_object:, key:, condition:, value:)
  4. @key = key
  5. @condition_object = condition_object
  6. @result_object = result_object
  7. @condition = condition
  8. @value = value
  9. end
  10. attr_reader :value
  11. def field
  12. @key.sub(%r{.*\.}, '')
  13. end
  14. def object?(object)
  15. @condition_object.attributes.instance_of?(object)
  16. end
  17. def condition_value
  18. Array(@condition['value']).map(&:to_s)
  19. end
  20. def time_modifier
  21. if ['before (relative)', 'within last (relative)', 'from (relative)'].include?(@condition['operator'])
  22. -1
  23. else
  24. 1
  25. end
  26. end
  27. def condition_times
  28. return condition_value.map { |v| TimeRangeHelper.relative(range: @condition['range'], value: time_modifier * v.to_i) } if @condition['range']
  29. condition_value.map { |v| Time.zone.parse(v) }
  30. end
  31. def value_times
  32. value.map { |v| Time.zone.parse(v) }
  33. end
  34. def match
  35. false
  36. end
  37. end