module Ts2cb::Order::Checker

Constants

VERSION

Public Class Methods

completed_orders(start_time = Time.now.utc - 4200, end_time = Time.now.utc) click to toggle source
# File lib/ts2cb/order/checker.rb, line 11
def self.completed_orders(start_time = Time.now.utc - 4200, end_time = Time.now.utc)
  host = ENV["TS_DB_HOST"] || "localhost"
  db = ENV["TS_DB_NAME"] || "ee_ts"
  user = ENV["TS_DB_USER"] || "root"
  password = ENV["TS_DB_PWD"] || ""

  client = Mysql2::Client.new(host: host, username: user, database: db, password: password)
  results = client.query("SELECT number, state, payment_state, card_type, pp_payment_id, completed_at, title, first_name, surname, email, total FROM exp_spree_orders WHERE completed_at > '#{start_time.strftime("%Y-%m-%d %H-%M-%S")}' and completed_at < '#{end_time.strftime("%Y-%m-%d %H-%M-%S")}'")
end
exists_on_caseblocks(order_no) click to toggle source
# File lib/ts2cb/order/checker.rb, line 21
def self.exists_on_caseblocks(order_no)
  response = RestClient.get "#{ENV['CB_API_ENDPOINT']}/case_blocks/search.json?auth_token=#{ENV['CB_API_TOKEN']}&case_type_id=#{ENV['CB_TS_TYPE_ID']}&query=order_number:#{order_no}"
  response.code==200 && JSON.parse(response.body).count > 0
rescue => e
  puts e.message
  puts e.backtrace.join('\n')
  false
end
notify_by_email(order_row, template, recipients) click to toggle source
# File lib/ts2cb/order/checker.rb, line 30
def self.notify_by_email(order_row, template, recipients)
  subject = "Order not in CaseBlocks #{order_row['number']}"
  payload = {
    template_name: template,
    message: {subject: subject, to: recipients.map{|r| {name: r, email: r} } },
    template_content: order_row.map{|k,v| {name: k, content: (k=="total" ? ("%0.2f" % v) : v)} }        
  }

  sqs = AWS::SQS.new(region: 'us-east-1', access_key_id: ENV['AWS_ACCESS_KEY'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'])
  puts sqs.queues[ENV['MANDRILL_QUEUE']].send_message payload.to_json
end
run(start_time = nil) click to toggle source
# File lib/ts2cb/order/checker.rb, line 42
def self.run(start_time = nil)
  start_time = if start_time.nil?
    ENV'TS_HISTORICAL_INTERVAL'].nil? ? Time.now.utc - 4200 : ENV['TS_HISTORICAL_INTERVAL']       
  else
    start_time 
  end
  puts completed_orders(start_time).select {|o| !exists_on_caseblocks(o['number']) }.map {|o| notify_by_email(o, "ordernotincaseblocks", ENV['TS_NOTIFY_RECIPIENTS'].split(',')) }
end