summaryrefslogtreecommitdiff
path: root/users/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'users/app/models')
-rw-r--r--users/app/models/message.rb10
-rw-r--r--users/app/models/user.rb37
2 files changed, 47 insertions, 0 deletions
diff --git a/users/app/models/message.rb b/users/app/models/message.rb
new file mode 100644
index 0000000..38fa71e
--- /dev/null
+++ b/users/app/models/message.rb
@@ -0,0 +1,10 @@
+class Message < CouchRest::Model::Base
+
+ use_database :messages
+
+ property :text, String
+
+ design do
+ end
+
+end
diff --git a/users/app/models/user.rb b/users/app/models/user.rb
index 720f5a9..6e445be 100644
--- a/users/app/models/user.rb
+++ b/users/app/models/user.rb
@@ -13,6 +13,10 @@ class User < CouchRest::Model::Base
property :desired_service_level_code, Integer, :accessible => true
property :effective_service_level_code, Integer, :accessible => true
+ property :message_ids_to_see, [String]
+ property :message_ids_seen, [String]
+ property :one_month_warning_sent, TrueClass
+
before_save :update_effective_service_level
validates :login, :password_salt, :password_verifier,
@@ -72,6 +76,18 @@ class User < CouchRest::Model::Base
Ticket.for_user(self).limit(count).all #defaults to having most recent updated first
end
+ def messages(unseen = true)
+
+ message_ids = unseen ? self.message_ids_to_see : self.message_ids_to_see + self.message_ids_seen # TODO check unique?
+
+ messages = []
+ message_ids.each do |message_id|
+ messages << Message.find(message_id)
+ end
+ messages
+
+ end
+
# DEPRECATED
#
# Please set the key on the identity directly
@@ -110,6 +126,27 @@ class User < CouchRest::Model::Base
ServiceLevel.new({id: code})
end
+
+ def self.send_one_month_warnings
+
+ # To determine warnings to send, need to get all users where one_month_warning_sent is not set, and where it was created greater than or equal to 1 month ago.
+ # TODO: might want to further limit to enabled accounts, and, based on provider's service level configuration, for particular service levels.
+ users_to_warn = User.by_created_at_and_one_month_warning_not_sent.endkey(Time.now-1.month)
+ users_to_warn.each do |user|
+ 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 => I18n.t(:payment_one_month_warning, :date_in_one_month => (Time.now+1.month).strftime("%Y-%d-%m")))
+ @message.save
+ end
+
+ user.message_ids_to_see << @message.id
+ user.one_month_warning_sent = true
+ user.save
+ end
+
+ end
+
protected
##