aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/discussion.rb26
-rw-r--r--app/models/discussion_view.rb7
-rw-r--r--app/models/message.rb10
3 files changed, 24 insertions, 19 deletions
diff --git a/app/models/discussion.rb b/app/models/discussion.rb
index 474ad00..7898140 100644
--- a/app/models/discussion.rb
+++ b/app/models/discussion.rb
@@ -66,15 +66,13 @@ class Discussion < ActiveRecord::Base
# проверяет, есть ли уже беседа между пользователями
# TODO вынести в отдельный метод а в этом возращать true/false, а то неправославно как-то
def self.find_between_users(user, user2)
- res = nil
+ dialog = nil
discussions = self.joins(:speakers).includes(:users).where("speakers.user_id = ?", user.id)
Rails.logger.info "Searching for ids: #{user.id}, #{user2.id}"
discussions.each do |discussion|
-
- res = discussion if discussion.private? && ((discussion.users.first == user && discussion.users.last == user2) || (discussion.users.first == user2 && discussion.users.last == user))
- Rails.logger.info "Searching for ids: #{discussion.users.inspect}" if discussion.private?
+ dialog = discussion if discussion.private? && ((discussion.users.first == user && discussion.users.last == user2) || (discussion.users.first == user2 && discussion.users.last == user))
end
- res
+ dialog
end
# приватная/групповая
@@ -88,14 +86,14 @@ class Discussion < ActiveRecord::Base
end
# проверка, является ли дискуссия непрочитанной для пользователя
- # def unread_for?(user)
- # flag = self.views.find_by_user_id(user.id)
- # if flag
- # self.updated_at >= flag.updated_at
- # else
- # true
- # end
- # end
+ def unread_for?(user)
+ flag = self.views.find_by_user_id(user.id)
+ if flag
+ self.updated_at >= flag.updated_at
+ else
+ true
+ end
+ end
# пометить как прочитанная
def mark_as_read_for(user)
@@ -112,7 +110,7 @@ class Discussion < ActiveRecord::Base
def check_that_has_at_least_two_users
Rails.logger.info self.recipient_ids
- errors.add :recipient_tokens, "Укажите хотя бы одного получателя" #if !self.recipient_ids || self.recipient_ids.size < 2
+ errors.add :recipient_tokens, "Укажите хотя бы одного получателя" if !self.recipient_ids || self.recipient_ids.size < 2
end
end \ No newline at end of file
diff --git a/app/models/discussion_view.rb b/app/models/discussion_view.rb
new file mode 100644
index 0000000..5714bb5
--- /dev/null
+++ b/app/models/discussion_view.rb
@@ -0,0 +1,7 @@
+class DiscussionView < ActiveRecord::Base
+ belongs_to :user
+ belongs_to :discussion
+
+ validates :user, :discussion, :presence => true
+ validates_uniqueness_of :user_id, :scope => :discussion_id
+end
diff --git a/app/models/message.rb b/app/models/message.rb
index a38dfb0..b7f9b12 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -7,16 +7,16 @@ class Message < ActiveRecord::Base
validates :user, :discussion, :body, :presence => true
- # after_save :touch_discussion_and_mark_as_read
+ after_save :touch_discussion_and_mark_as_read
- # def visible_for? user
- # self.created_at.to_i >= self.discussion.user_invited_at(user).to_i
- # end
+ def visible_for? user
+ self.created_at.to_i >= self.discussion.user_invited_at(user).to_i
+ end
private
def touch_discussion_and_mark_as_read
self.discussion.touch
- # self.discussion.mark_as_read_for(self.user)
+ self.discussion.mark_as_read_for(self.user)
end
end