close_time.rb 780 B

123456789101112131415161718192021222324252627282930313233
  1. class Observer::Ticket::CloseTime < ActiveRecord::Observer
  2. observe 'ticket'
  3. def after_create(record)
  4. _check(record)
  5. end
  6. def after_update(record)
  7. _check(record)
  8. end
  9. private
  10. def _check(record)
  11. # puts 'check close time'
  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. ticket_state = Ticket::State.lookup( :id => record.ticket_state_id )
  18. ticket_state_type = Ticket::StateType.lookup( :id => ticket_state.state_type_id )
  19. return true if ticket_state_type.name != 'closed'
  20. # set close_time
  21. record.close_time = Time.now
  22. # save ticket
  23. record.save
  24. end
  25. end