diff options
Diffstat (limited to 'users/app/models')
-rw-r--r-- | users/app/models/message.rb | 10 | ||||
-rw-r--r-- | users/app/models/user.rb | 37 |
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 ## |