reset_new_state.rb 975 B

123456789101112131415161718192021222324252627282930313233
  1. class Observer::Ticket::ResetNewState < ActiveRecord::Observer
  2. observe 'ticket::_article'
  3. def after_create(record)
  4. # puts 'check reset new state'
  5. # return if we run import mode
  6. return if Setting.get('import_mode')
  7. # if article in internal
  8. return true if record.internal
  9. # if sender is agent
  10. return true if Ticket::Article::Sender.lookup( :id => record.ticket_article_sender_id ).name != 'Agent'
  11. # if article is a message to customer
  12. return true if !Ticket::Article::Type.lookup( :id => record.ticket_article_type_id ).communication
  13. # if current ticket state is still new
  14. ticket = Ticket.lookup( :id => record.ticket_id )
  15. return true if ticket.ticket_state.state_type.name != 'new'
  16. # TODO: add config option to state managment in UI
  17. state = Ticket::State.lookup( :name => 'open' )
  18. return if !state
  19. # set ticket to open
  20. ticket.ticket_state_id = state.id
  21. # save ticket
  22. ticket.save
  23. end
  24. end