jam-cloud/ruby/lib/jam_ruby/models/text_message.rb

63 lines
1.9 KiB
Ruby
Raw Normal View History

2015-01-12 06:20:19 +00:00
include Devise::Models
module JamRuby
class TextMessage < ActiveRecord::Base
self.primary_key = 'id'
default_scope { order('created_at DESC') }
2015-01-12 06:20:19 +00:00
attr_accessible :target_user_id, :source_user_id, :message
belongs_to :target_user, :class_name => "JamRuby::User", :foreign_key => "target_user_id"
belongs_to :source_user, :class_name => "JamRuby::User", :foreign_key => "source_user_id"
2020-10-14 02:05:08 +00:00
validate :same_school_protection
def same_school_protection
if source_user && target_user
if !source_user.is_platform_instructor && !target_user.is_platform_instructor
if source_user.school_id != target_user.school_id
errors.add(:target_user, ValidationMessages::CAN_ONLY_CHAT_SAME_SCHOOL)
end
end
end
end
2015-01-12 06:20:19 +00:00
validates :message, length: {minimum: 1, maximum: 400}, no_profanity: true
def self.index(target_user_id, source_user_id, options = {})
offset = options[:offset]
limit = options[:limit]
# if not specified, default offset to 0
offset ||= 0
offset = offset.to_i
# if not specified, default limit to 10
limit ||= 10
limit = limit.to_i
TextMessage
.offset(offset)
.limit(limit)
.where('(source_user_id = (?) AND target_user_id = (?)) OR (source_user_id = (?) AND target_user_id = (?))', source_user_id, target_user_id, target_user_id, source_user_id)
end
2015-01-12 06:26:27 +00:00
def self.create(message, target_user_id, source_user_id)
sanitized_text = Sanitize.fragment(message, elements: HtmlSanitize::SAFE)
# create new message
tm = TextMessage.new
tm.message = sanitized_text
tm.target_user_id = target_user_id
tm.source_user_id = source_user_id
tm.save
2015-01-12 06:26:27 +00:00
# send notification
@notification = Notification.send_text_message(sanitized_text, User.find(source_user_id), User.find(target_user_id), tm.id)
2015-01-12 06:26:27 +00:00
tm
end
2015-01-12 06:20:19 +00:00
end
end