summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjessib <jessib@riseup.net>2013-12-26 12:37:26 -0800
committerjessib <jessib@riseup.net>2013-12-26 12:37:26 -0800
commitfac34e1fb21d9310227c4cfc28c3ef03806ba465 (patch)
tree1effc1b6dfd25330f39eddd07a61d58698b0142c
parent7f12c795207ac818bffac42aa581bf1165f9e424 (diff)
Very very rough start to having messages for payment automatically created.
-rw-r--r--Gemfile.lock5
-rw-r--r--users/app/models/user.rb20
-rw-r--r--users/config/locales/en.yml1
-rw-r--r--users/config/schedule.rb24
-rw-r--r--users/leap_web_users.gemspec1
-rw-r--r--users/lib/leap_web_users/engine.rb1
6 files changed, 52 insertions, 0 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index cc549ee..7d5f798 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -42,6 +42,7 @@ PATH
leap_web_core (= 0.5.0.rc)
rails_warden
ruby-srp (~> 0.2.1)
+ whenever
GEM
remote: https://rubygems.org/
@@ -88,6 +89,7 @@ GEM
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
+ chronic (0.9.1)
client_side_validations (3.2.6)
client_side_validations-simple_form (2.1.0)
client_side_validations (~> 3.2.5)
@@ -253,6 +255,9 @@ GEM
warden (1.2.3)
rack (>= 1.0)
websocket-driver (0.3.1)
+ whenever (0.8.2)
+ activesupport (>= 2.3.4)
+ chronic (>= 0.6.3)
xpath (2.0.0)
nokogiri (~> 1.3)
diff --git a/users/app/models/user.rb b/users/app/models/user.rb
index fe3a127..28adc54 100644
--- a/users/app/models/user.rb
+++ b/users/app/models/user.rb
@@ -122,6 +122,26 @@ class User < CouchRest::Model::Base
ServiceLevel.new({id: code})
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?)
+ #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
+ end
+ end
+
protected
##
diff --git a/users/config/locales/en.yml b/users/config/locales/en.yml
index 934fcee..0db63eb 100644
--- a/users/config/locales/en.yml
+++ b/users/config/locales/en.yml
@@ -38,6 +38,7 @@ en:
deactivate_account: "Deactivate the account %{username}"
deactivate_description: "This will temporarily deactivate some account functionality." #todo detail exact functionality. can receive email but not send or renew client certificate?
+ payment_one_month_warning: "We hope you have been enjoying this service this past month. Please sign up to pay within the next month, by %{date_in_one_month}. Directions for payment are available at INSERT_URL"
#
# overview
diff --git a/users/config/schedule.rb b/users/config/schedule.rb
new file mode 100644
index 0000000..1b2b171
--- /dev/null
+++ b/users/config/schedule.rb
@@ -0,0 +1,24 @@
+# Use this file to easily define all of your cron jobs.
+#
+# It's helpful, but not entirely necessary to understand cron before proceeding.
+# http://en.wikipedia.org/wiki/Cron
+
+# Example:
+#
+# set :output, "/path/to/my/cron_log.log"
+#
+# every 2.hours do
+# command "/usr/bin/some_great_command"
+# runner "MyModel.some_method"
+# rake "some:great:rake:task"
+# end
+#
+# every 4.days do
+# runner "AnotherModel.prune_old_records"
+# end
+
+# Learn more: http://github.com/javan/whenever
+
+every 1.day, :at => '1am' do
+ runner "User.one_month_warning_to_pay"
+end
diff --git a/users/leap_web_users.gemspec b/users/leap_web_users.gemspec
index 7d1f220..06965a7 100644
--- a/users/leap_web_users.gemspec
+++ b/users/leap_web_users.gemspec
@@ -19,4 +19,5 @@ Gem::Specification.new do |s|
s.add_dependency "ruby-srp", "~> 0.2.1"
s.add_dependency "rails_warden"
+ s.add_dependency "whenever"
end
diff --git a/users/lib/leap_web_users/engine.rb b/users/lib/leap_web_users/engine.rb
index f8ed71c..61131ef 100644
--- a/users/lib/leap_web_users/engine.rb
+++ b/users/lib/leap_web_users/engine.rb
@@ -8,6 +8,7 @@ require "warden/session_serializer"
require "warden/strategies/secure_remote_password"
require "webfinger"
+require "whenever"
module LeapWebUsers
class Engine < ::Rails::Engine