Sha256: 20d86c3dc845e6d88f802ebc7abde94bbb92de809f953018ae7872baee065a39
Contents?: true
Size: 1.51 KB
Versions: 3
Compression:
Stored size: 1.51 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! raise Mumukit::Auth::UnauthorizedAccessError unless authorized?(current_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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mumuki-laboratory-5.6.2 | app/models/message.rb |
mumuki-laboratory-5.6.1 | app/models/message.rb |
mumuki-laboratory-5.6.0 | app/models/message.rb |