From 7d1a25c2477b9607475f6b4c56f94d392c46950a Mon Sep 17 00:00:00 2001 From: jessib Date: Mon, 30 Dec 2013 11:41:51 -0800 Subject: Not actually how we want to do this, but at least finish outlined part, that will later be replaced. --- users/app/models/user.rb | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'users/app/models') diff --git a/users/app/models/user.rb b/users/app/models/user.rb index 28adc54..bf48185 100644 --- a/users/app/models/user.rb +++ b/users/app/models/user.rb @@ -123,22 +123,30 @@ class User < CouchRest::Model::Base end def one_month_warning_to_pay - # get all users who are not customers with active subscription and have existed for exactly a month (take account of months having difft amount of days. Maybe jsut those who signed up 30 days ago?) + # get all users who are not customers with active subscription and have existed for exactly a month (take account of months having difft amount of days. Maybe just those who signed up 30 days ago?) #users_to_warn = User.find_by_created_at(Time.now-1.month).all #NO, this will require time to be right #users_1_month_old = User.by_created_at.startkey(Time.now-1.month-1.day).endkey(Time.now-1.month).al users_30_days_old = User.by_created_at.startkey(Time.now-31.days).endkey(Time.now-30.days).all - # TODO, now, limit users to those who do not have a braintree customer, or have a braintree customer without an active subscription. This might have to happen when we are looping through anyway. - #users_to_warn = - - # TODO: only create message if any messages are going to be created. - # create a message for today's date - message = Message.new(:text => t(:payment_one_month_warning, :date_in_one_month => (Time.now+1.month).strftime("%Y-%d-%m"))) - message.save - - # for each such user, create a user message for that user and the message - users_to_warn.each do |user_to_warn| - user_message = UserMessage.new(:message_id => message.id, :user_id => user_to_warn.id) - user_message.save + # TODO, above really is quite problematic, in that if the cron job fails to run on 1 day, say, the warning will not get created. + + users_30_days_old.each do |user| + + # create a user message for each user that does not has a braintree customer, or + # has a braintree customer w/out an active subscription. + unless ((customer = Customer.find_by_user(user.id)) && customer.subscriptions) + + if !@message + # create a message for today's date + # only want to create once, and only if it will be used. + @message = Message.new(:text => t(:payment_one_month_warning, :date_in_one_month => (Time.now+1.month).strftime("%Y-%d-%m"))) + @message.save + end + + user_message = UserMessage.new(:message_id => @message.id, :user_id => user.id) + # is following preferred?? + # user_message = UserMessage.new(:message => @message, :user => user) + user_message.save + end end end -- cgit v1.2.3