Class: GoogleOfflineConversionRetryWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Worker
Defined in:
app/workers/google_offline_conversion_retry_worker.rb

Instance Method Summary collapse

Instance Method Details

#performObject

Retry reporting for failed conversions in the last 7 days



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/workers/google_offline_conversion_retry_worker.rb', line 7

def perform
  cutoff = 7.days.ago
  Order.where(state: 'invoiced')
       .where("(google_conversion_meta->>'attempted_at') IS NOT NULL")
       .where(<<~SQL.squish)
         (google_conversion_meta->>'result') IS NULL
         OR (
           (google_conversion_meta->>'result') <> 'reported'
           AND (google_conversion_meta #>> '{result,status}') IS DISTINCT FROM 'reported'
         )
       SQL
       .where(Order[:updated_at].gteq(cutoff))
       .find_in_batches(batch_size: 200) do |batch|
    batch.each do |order|
      Invoicing::GoogleConversionReporter.new.send_new_order_conversion(order)
    end
  end
end