12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- class Observer::Ticket::Notification::BackgroundJob
- def initialize(params)
- @ticket_id = params[:ticket_id]
- @article_id = params[:article_id]
- @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|
- 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
|