class Sparkpost::WebhookJob
  include Sidekiq::Worker

  def perform(payload)
    payload = JSON.parse(payload)
    payload.each do |event|
      event =
        event['msys']['track_event'] || event['msys']['message_event'] || event['msys']['gen_event']
      campaign_id = event['campaign_id']
      next unless campaign_id&.include?('schjob3:')

      recipient = Communication::BatchEmailRecipient.find_by(id: event['rcpt_meta']['recipient_id'])
      recipient.events.create!(
        event: event['type'],
        timestamp: Time.at(event['timestamp'].to_i).utc.to_datetime
      )
    end
  end
end
