# 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
