// Get prices from Recurly in GroupPlansData format, ie to update:
// app/templates/plans/groups.json
//
// Usage example:
// node scripts/recurly/get_recurly_group_prices.mjs

import recurly from 'recurly'

import Settings from '@overleaf/settings'

const recurlySettings = Settings.apis.recurly
const recurlyApiKey = recurlySettings ? recurlySettings.apiKey : undefined

const client = new recurly.Client(recurlyApiKey)

async function getRecurlyGroupPrices() {
  const prices = {}
  const plans = client.listPlans({ params: { limit: 200 } })
  for await (const plan of plans.each()) {
    if (plan.code.substr(0, 6) === 'group_') {
      const [, type, size, usage] = plan.code.split('_')
      plan.currencies.forEach(planPricing => {
        const { currency, unitAmount } = planPricing
        prices[usage] = prices[usage] || {}
        prices[usage][type] = prices[usage][type] || {}
        prices[usage][type][currency] = prices[usage][type][currency] || {}
        prices[usage][type][currency][size] = {
          price_in_cents: unitAmount * 100,
        }
      })
    }
  }
  return prices
}

async function main() {
  const prices = await getRecurlyGroupPrices()
  console.log(JSON.stringify(prices, undefined, 2))
}

try {
  await main()
  process.exit(0)
} catch (error) {
  console.error({ error })
  process.exit(1)
}
