12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- # Copyright (C) 2012-2023 Zammad Foundation, https://zammad-foundation.org/
- class TicketTimeAccountingCheck < ActiveRecord::Migration[6.1]
- def change
- # return if it's a new setup
- return if !Setting.exists?(name: 'system_init_done')
- add_workflow
- update_time_accounting_selector
- end
- def add_workflow
- CoreWorkflow.create_if_not_exists(
- name: 'base - ticket time accouting check',
- object: 'Ticket',
- condition_saved: {
- 'custom.module': {
- operator: 'match all modules',
- value: [
- 'CoreWorkflow::Custom::TicketTimeAccountingCheck',
- ],
- },
- },
- perform: {
- 'custom.module': {
- execute: ['CoreWorkflow::Custom::TicketTimeAccountingCheck']
- },
- },
- changeable: false,
- priority: 99_999,
- created_by_id: 1,
- updated_by_id: 1,
- )
- end
- def update_time_accounting_selector # rubocop:disable Metrics/AbcSize
- selector = Setting.get('time_accounting_selector')
- return if selector.blank?
- return if selector[:condition].blank?
- selector[:condition].each do |_key, value|
- if value[:pre_condition] == 'not_set'
- value[:operator] = 'not set'
- value.delete(:pre_condition)
- value.delete(:value)
- value.delete(:value_completion)
- end
- if value[:operator] == 'contains'
- value[:operator] = 'regex match'
- end
- if value[:operator] == 'contains not'
- value[:operator] = 'regex mismatch'
- end
- end
- Setting.set('time_accounting_selector', selector)
- end
- end
|