user_ticket_counter.rb 1.1 KB

12345678910111213141516171819202122232425262728
  1. class Ticket::Observer::UserTicketCounter < ActiveRecord::Observer
  2. observe 'ticket'
  3. def after_create(record)
  4. user_ticket_counter_update(record)
  5. end
  6. def after_update(record)
  7. user_ticket_counter_update(record)
  8. end
  9. def after_update(record)
  10. user_ticket_counter_update(record)
  11. end
  12. def user_ticket_counter_update(record)
  13. return if !record.customer_id
  14. ticket_state_list_open = Ticket::State.where( :ticket_state_type_id => Ticket::StateType.where(:name => ['new','open', 'pending reminder', 'pending action']) )
  15. ticket_state_list_closed = Ticket::State.where( :ticket_state_type_id => Ticket::StateType.where(:name => ['closed'] ) )
  16. tickets_open = Ticket.where( :customer_id => record.customer_id, :ticket_state_id => ticket_state_list_open ).count()
  17. tickets_closed = Ticket.where( :customer_id => record.customer_id, :ticket_state_id => ticket_state_list_closed ).count()
  18. customer = User.find( record.customer_id )
  19. customer[:preferences][:tickets_open] = tickets_open
  20. customer[:preferences][:tickets_closed] = tickets_closed
  21. customer.save
  22. end
  23. end