12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
- require 'signature_detection'
- class Transaction::SignatureDetection
- =begin
- {
- object: 'Ticket',
- type: 'update',
- object_id: 123,
- interface_handle: 'application_server', # application_server|websocket|scheduler
- changes: {
- 'attribute1' => [before, now],
- 'attribute2' => [before, now],
- },
- created_at: Time.zone.now,
- user_id: 123,
- },
- =end
- def initialize(item, params = {})
- @item = item
- @params = params
- end
- def perform
- # return if we run import mode
- return if Setting.get('import_mode')
- return if @item[:type] != 'create'
- return if @item[:object] != 'Ticket'
- ticket = Ticket.lookup(id: @item[:object_id])
- return if !ticket
- article = ticket.articles.first
- return if !article
- # if sender is not customer, do not change anything
- sender = Ticket::Article::Sender.lookup(id: article.sender_id)
- return if !sender
- return if sender['name'] != 'Customer'
- # set email attributes
- type = Ticket::Article::Type.lookup(id: article.type_id)
- return if type['name'] != 'email'
- # update current signature of user id
- SignatureDetection.rebuild_user(article.created_by_id)
- # user
- user = User.lookup(id: article.created_by_id)
- return if !user
- return if !user.preferences
- return if !user.preferences[:signature_detection]
- line = SignatureDetection.find_signature_line_by_article(
- user,
- article
- )
- article.preferences[:signature_detection] = line
- article.save
- end
- end
|