last_contact.rb 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. class Observer::Ticket::LastContact < ActiveRecord::Observer
  2. observe 'ticket::_article'
  3. def after_create(record)
  4. # puts 'check last contact'
  5. # if article in internal
  6. return true if record.internal
  7. # if article is a message to customer
  8. return true if !Ticket::Article::Type.lookup( :id => record.ticket_article_type_id ).communication
  9. # if sender is not customer
  10. sender = Ticket::Article::Sender.lookup( :id => record.ticket_article_sender_id )
  11. if sender.name == 'Customer'
  12. # check if last communication is done by agent, else do not set last_contact_customer
  13. if record.ticket.last_contact_customer == nil ||
  14. record.ticket.last_contact_agent == nil ||
  15. record.ticket.last_contact_agent.to_i > record.ticket.last_contact_customer.to_i
  16. record.ticket.last_contact_customer = record.created_at
  17. # set last_contact
  18. record.ticket.last_contact = record.created_at
  19. # save ticket
  20. record.ticket.save
  21. end
  22. end
  23. # if sender is not agent
  24. if sender.name == 'Agent'
  25. # set last_contact_agent
  26. record.ticket.last_contact_agent = record.created_at
  27. # set last_contact
  28. record.ticket.last_contact = record.created_at
  29. # save ticket
  30. record.ticket.save
  31. end
  32. end
  33. end