summaryrefslogtreecommitdiff
path: root/users/app
diff options
context:
space:
mode:
Diffstat (limited to 'users/app')
-rw-r--r--users/app/controllers/v1/messages_controller.rb29
-rw-r--r--users/app/designs/message/by_user_ids_to_show.js7
-rw-r--r--users/app/designs/message/by_user_ids_to_show_and_created_at.js8
-rw-r--r--users/app/models/message.rb4
-rw-r--r--users/app/models/user.rb14
5 files changed, 38 insertions, 24 deletions
diff --git a/users/app/controllers/v1/messages_controller.rb b/users/app/controllers/v1/messages_controller.rb
index b58dfe9..371b83e 100644
--- a/users/app/controllers/v1/messages_controller.rb
+++ b/users/app/controllers/v1/messages_controller.rb
@@ -1,30 +1,27 @@
module V1
class MessagesController < ApplicationController
- before_filter :authorize_admin # not sure this is best way
+ skip_before_filter :verify_authenticity_token
+ before_filter :authorize
+
respond_to :json
- # for now, will not pass unseen, so unseen will always be true
- def user_messages(unseen = true)
- user = User.find(params[:user_id])
- render json: (user ? user.messages : [] )
+ def index
+ render json: (current_user ? current_user.messages : [] )
end
- # routes ensure this is only for PUT
- def mark_read
-
- # make sure user and message exist
- if (user = User.find(params[:user_id])) && Message.find(params[:message_id])
-
- user.message_ids_seen << params[:message_id] if !user.message_ids_seen.include?(params[:message_id]) #TODO: is it quicker to instead call uniq! after adding?
- user.message_ids_to_see.delete(params[:message_id])
- user.save
+ def update
+ message = Message.find(params[:id])
+ if (message and current_user)
+ message.user_ids_to_show.delete(current_user.id)
+ # is it necessary to keep track of what users have already seen it?:
+ message.user_ids_have_shown << current_user.id if !message.user_ids_have_shown.include?(current_user.id) #TODO: is it quicker to instead call uniq! after adding?
+ message.save
render json: true
- return
else
render json: false
end
-
end
+
end
end
diff --git a/users/app/designs/message/by_user_ids_to_show.js b/users/app/designs/message/by_user_ids_to_show.js
new file mode 100644
index 0000000..95ccd0d
--- /dev/null
+++ b/users/app/designs/message/by_user_ids_to_show.js
@@ -0,0 +1,7 @@
+function (doc) {
+ if (doc.type === 'Message' && doc.user_ids_to_show && Array.isArray(doc.user_ids_to_show)) {
+ doc.user_ids_to_show.forEach(function (userIdsToShow) {
+ emit(userIdsToShow, 1);
+ });
+ }
+} \ No newline at end of file
diff --git a/users/app/designs/message/by_user_ids_to_show_and_created_at.js b/users/app/designs/message/by_user_ids_to_show_and_created_at.js
new file mode 100644
index 0000000..7bd7c2c
--- /dev/null
+++ b/users/app/designs/message/by_user_ids_to_show_and_created_at.js
@@ -0,0 +1,8 @@
+// not using at moment
+function (doc) {
+ if (doc.type === 'Message' && doc.user_ids_to_show && Array.isArray(doc.user_ids_to_show)) {
+ doc.user_ids_to_show.forEach(function (userIdsToShow) {
+ emit([userIdsToShow, doc.created_at], 1);
+ });
+ }
+} \ No newline at end of file
diff --git a/users/app/models/message.rb b/users/app/models/message.rb
index 38fa71e..16a19f4 100644
--- a/users/app/models/message.rb
+++ b/users/app/models/message.rb
@@ -3,8 +3,12 @@ class Message < CouchRest::Model::Base
use_database :messages
property :text, String
+ property :user_ids_to_show, [String]
+ property :user_ids_have_shown, [String] # is this necessary to store?
design do
+ own_path = Pathname.new(File.dirname(__FILE__))
+ load_views(own_path.join('..', 'designs', 'message'))
end
end
diff --git a/users/app/models/user.rb b/users/app/models/user.rb
index 6e445be..71e57f3 100644
--- a/users/app/models/user.rb
+++ b/users/app/models/user.rb
@@ -13,8 +13,6 @@ 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
@@ -77,12 +75,11 @@ class User < CouchRest::Model::Base
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?
-
+ #TODO for now this only shows unseen messages. Will we ever want seen ones? Is it necessary to store?
+ #Message.by_user_ids_to_show.key(self.id).all # we don't want to emit all the userids associated with a message, so looping through to only emit text and id.
messages = []
- message_ids.each do |message_id|
- messages << Message.find(message_id)
+ Message.by_user_ids_to_show.key(self.id).each do |message|
+ messages << [message.id, message.text]
end
messages
@@ -140,7 +137,8 @@ class User < CouchRest::Model::Base
@message.save
end
- user.message_ids_to_see << @message.id
+ @message.user_ids_to_show << user.id
+ @message.save
user.one_month_warning_sent = true
user.save
end