close_time.rb 730 B

1234567891011121314151617181920212223242526272829303132
  1. # Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
  2. class Observer::Ticket::CloseTime < ActiveRecord::Observer
  3. observe 'ticket'
  4. def before_create(record)
  5. _check(record)
  6. end
  7. def before_update(record)
  8. _check(record)
  9. end
  10. private
  11. def _check(record)
  12. # return if we run import mode
  13. return if Setting.get('import_mode')
  14. # check if close_time is already set
  15. return true if record.close_time
  16. # check if ticket is closed now
  17. state = Ticket::State.lookup( id: record.state_id )
  18. state_type = Ticket::StateType.lookup( id: state.state_type_id )
  19. return true if state_type.name != 'closed'
  20. # set close_time
  21. record.close_time = Time.zone.now
  22. end
  23. end