123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- class Observer::Ticket::Notification::BackgroundJob
- def initialize(params)
- @ticket_id = params[:ticket_id]
- @article_id = params[:article_id]
- @type = params[:type]
- @data = params[:data]
- end
- def perform
- ticket = Ticket.find(@ticket_id)
- article = Ticket::Article.find(@article_id)
- data = @data
- # find recipients
- recipients = []
- # group of agents to work on
- if data[:recipient] == 'group'
- recipients = ticket.agent_of_group()
- # owner
- elsif data[:recipient] == 'owner'
- if ticket.owner_id != 1
- recipients.push ticket.owner
- end
- # customer
- elsif data[:recipient] == 'customer'
- if ticket.customer_id != 1
- # temporarily disabled
- # recipients.push ticket.customer
- end
- # owner or group of agents to work on
- elsif data[:recipient] == 'to_work_on'
- if ticket.owner_id != 1
- recipients.push ticket.owner
- else
- recipients = ticket.agent_of_group()
- end
- end
- # send notifications
- recipient_list = ''
- notification_subject = ''
- recipients.each do |user|
- OnlineNotification.add(
- :type => @type,
- :object => 'Ticket',
- :o_id => ticket.id,
- :seen => false,
- :created_by_id => article.created_by_id || 1,
- :user_id => user.id,
- )
- next if !user.email || user.email == ''
- # add recipient_list
- if recipient_list != ''
- recipient_list += ','
- end
- recipient_list += user.email.to_s
- # prepare subject & body
- notification = {}
- [:subject, :body].each { |key|
- notification[key.to_sym] = NotificationFactory.build(
- :locale => user.locale,
- :string => data[key.to_sym],
- :objects => {
- :ticket => ticket,
- :article => article,
- :recipient => user,
- }
- )
- }
- notification_subject = notification[:subject]
- # rebuild subject
- notification[:subject] = ticket.subject_build( notification[:subject] )
- # send notification
- NotificationFactory.send(
- :recipient => user,
- :subject => notification[:subject],
- :body => notification[:body]
- )
- end
- # add history record
- if recipient_list != ''
- History.add(
- :o_id => ticket.id,
- :history_type => 'notification',
- :history_object => 'Ticket',
- :value_from => notification_subject,
- :value_to => recipient_list,
- :created_by_id => article.created_by_id || 1
- )
- end
- end
- end
|