Sha256: bd77f0bad02333f0fbb4407cf810a6f4cf0cb6a44cbb69c3d41cb18b0da62f9b
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 KB
Contents
class Message < ApplicationRecord belongs_to :discussion, optional: true belongs_to :assignment, foreign_key: :submission_id, primary_key: :submission_id, optional: true has_one :exercise, through: :assignment validates_presence_of :content, :sender validates_presence_of :submission_id, :unless => :discussion_id? markdown_on :content def notify! Mumukit::Nuntius.notify! 'student-messages', as_platform_json end def from_initiator? sender_user == discussion&.initiator end def from_user?(user) sender_user == user end def sender_user User.find_by(uid: sender) end def authorized?(user) from_user?(user) || user&.moderator? end def authorize!(user) raise Mumukit::Auth::UnauthorizedAccessError unless authorized?(user) end def as_platform_json as_json(except: [:id, :type, :discussion_id], include: {exercise: {only: [:bibliotheca_id]}}) .merge(organization: Organization.current.name) end def read! update! read: true end def self.parse_json(json) message = json.delete 'message' json .except('uid', 'exercise_id') .merge(message) end def self.read_all! update_all read: true end def self.import_from_json!(json) message_data = parse_json json Organization.find_by!(name: message_data.delete('organization')).switch! if message_data['submission_id'].present? Assignment.find_by(submission_id: message_data.delete('submission_id'))&.receive_answer! message_data end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mumuki-laboratory-5.7.0 | app/models/message.rb |
mumuki-laboratory-5.6.3 | app/models/message.rb |