Skip to content

Instantly share code, notes, and snippets.

@braidn
Last active August 29, 2015 13:55
Show Gist options
  • Save braidn/8745584 to your computer and use it in GitHub Desktop.
Save braidn/8745584 to your computer and use it in GitHub Desktop.
require 'csv'
namespace :quarterly do
desc 'CSV Up A Date Range of Cancelations'
task :cancelation_csv do |t, args|
s_date, e_date = DateTime.parse('jan 1, 2014'), DateTime.parse('jan 31, 2014')
binding.pry
build_csv(s_date, e_date)
d_date, m_date = DateTime.parse('jan 14, 2014'), DateTime.parse('jan 20, 2014')
build_csv(d_date, m_date)
end
def build_csv(start, finish)
CSV.open("tmp/cancelations_#{start}_to_#{finish}.csv", "wb", col_sep: "\t") do |csv|
Quarterly::SubscriptionPlan.where('ended_on is null').each do |plan|
csv << [plan.name,
plan.find_each_subs(start),
plan.find_new_subs(start, finish),
plan.find_canceled(start, finish),
find_net(plan, start, finish)]
end
end
end
def find_new_subs(start, finish)
subscriptions.where("type = ? and activated_at between ? and ?", "Quarterly::RecurringSubscription", start, finish).count
end
def find_each_subs(start)
subscription.active.where('activated_at < ?', start).count
end
def find_canceled(start, finish)
subscription.where('type = ? and canceled_at between ? and ?', 'Quarterly::RecurringSubscription', start, finish).count
end
def find_net(plan, start, finish)
(plan.find_each_subs(start) + plan.find_new_subs(start, finish)) - plan.canceled_at(start, finish)
end
end
quarterly|master⚡ ⇒ zsr 'quarterly:cancelation_csv' --trace
** Invoke quarterly:cancelation_csv (first_time)
** Execute quarterly:cancelation_csv
rake aborted!
wrong number of arguments (2 for 1)
/Users/cannonball/src/quarterly/lib/tasks/transition.rake:56:in `build_csv'
/Users/cannonball/src/quarterly/lib/tasks/cancelations_csv.rake:6:in `block (2 levels) in <top (required)>'
/opt/boxen/rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/opt/boxen/rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/opt/boxen/rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/opt/boxen/rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/opt/boxen/rbenv/versions/1.9.3-p484/lib/ruby/1.9.1/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment