Last active
August 29, 2015 13:55
-
-
Save braidn/8745584 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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