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