module Workarea::MailChimp::Tasks::Ecommerce

Public Instance Methods

create_store() click to toggle source

Creates an ecommerce store in Mail Chimp

# File lib/workarea/mail_chimp/tasks/ecommerce.rb, line 8
def create_store
  raise RuntimeError.new("No list id defined in store configuration!") unless Workarea::MailChimp.config.default_store[:list_id].present?

  if Workarea::MailChimp::Store.where(mail_chimp_id: Workarea::MailChimp.config.default_store[:id]).exists?
    raise RuntimeError, "Mailchimp store with id #{Workarea::MailChimp.config.default_store[:id]} already exists"
  end

  request = Workarea::MailChimp.request
  begin
    response = request.ecommerce.stores.create(body: Workarea::MailChimp.config.default_store)
  rescue Gibbon::MailChimpError => error
    raise RuntimeError, error.detail
  end

  Workarea::MailChimp::Store.create!(
    mail_chimp_id: response.body["id"],
    list_id: response.body["list_id"],
    name: response.body["name"],
    currency_code: response.body["currency_code"],
    connected_site: response.body.dig("connected_site"),
  )

  connected_site_id = response.body.dig("connected_site", "site_foreign_id")

  Workarea::MailChimp
    .request
    .connected_sites
    .add_path_part(connected_site_id)
    .actions
    .send('verify-script-installation')
    .create
end