class SakaiInfo::QuizAttempt

Constants

ATTEMPT_STATUS

status definitions from samigo-api/src/java/org/sakaiproject/tool/assessment/data/ifc/grading/AssessmentGradingIfc.java

Attributes

comments[R]
dbrow[R]
quiz_id[R]
status[R]
time_elapsed[R]
total_auto_score[R]
user_id[R]

Public Class Methods

all_serializations() click to toggle source
# File lib/sakai-info/quiz.rb, line 924
def self.all_serializations
  [:default, :items]
end
clear_cache() click to toggle source
# File lib/sakai-info/quiz.rb, line 774
def self.clear_cache
  @@cache = {}
end
count_by_quiz_id(quiz_id) click to toggle source
# File lib/sakai-info/quiz.rb, line 812
def self.count_by_quiz_id(quiz_id)
  QuizAttempt.query_by_quiz_id(quiz_id).count
end
find(id) click to toggle source
# File lib/sakai-info/quiz.rb, line 795
def self.find(id)
  id = id.to_s
  if @@cache[id].nil?
    row = DB.connect[:sam_assessmentgrading_t].where(:assessmentgradingid => id).first
    if row.nil?
      raise ObjectNotFoundException.new(QuizAttempt, id)
    end

    @@cache[id] = QuizAttempt.new(row)
  end
  @@cache[id]
end
find_by_quiz_id(quiz_id) click to toggle source
# File lib/sakai-info/quiz.rb, line 816
def self.find_by_quiz_id(quiz_id)
  QuizAttempt.query_by_quiz_id(quiz_id).
    all.collect { |row| QuizAttempt.new(row) }
end
find_by_user_id_and_quiz_id(user_id, quiz_id) click to toggle source
# File lib/sakai-info/quiz.rb, line 825
def self.find_by_user_id_and_quiz_id(user_id, quiz_id)
  QuizAttempt.query_by_user_id_and_quiz_id(user_id, quiz_id).
    all.collect { |row| QuizAttempt.new(row) }
end
new(dbrow) click to toggle source
# File lib/sakai-info/quiz.rb, line 779
def initialize(dbrow)
  @dbrow = dbrow

  @id = dbrow[:assessmentgradingid]
  @submitted_at = dbrow[:submitteddate]
  @user_id = dbrow[:agentid]
  @quiz_id = dbrow[:publishedassessmentid]
  @total_auto_score = dbrow[:totalautoscore]
  @status = dbrow[:status]
  @attempted_at = dbrow[:attemptdate]
  @time_elapsed = dbrow[:timeelapsed]
  @is_auto_submitted = dbrow[:isautosubmitted]
  @is_late = dbrow[:islate]
  @comments = dbrow[:comments]
end
query_by_quiz_id(quiz_id) click to toggle source
# File lib/sakai-info/quiz.rb, line 808
def self.query_by_quiz_id(quiz_id)
  DB.connect[:sam_assessmentgrading_t].where(:publishedassessmentid => quiz_id)
end
query_by_user_id_and_quiz_id(user_id, quiz_id) click to toggle source
# File lib/sakai-info/quiz.rb, line 821
def self.query_by_user_id_and_quiz_id(user_id, quiz_id)
  DB.connect[:sam_assessmentgrading_t].where(:publishedassessmentid => quiz_id, :agentid => user_id)
end

Public Instance Methods

attempted_at() click to toggle source
# File lib/sakai-info/quiz.rb, line 854
def attempted_at
  if @attempted_at.nil?
    nil
  else
    @attempted_at.strftime("%Y-%m-%d %H:%M:%S")
  end
end
auto_submitted?() click to toggle source
# File lib/sakai-info/quiz.rb, line 846
def auto_submitted?
  @is_auto_submitted == 1
end
default_serialization() click to toggle source
# File lib/sakai-info/quiz.rb, line 885
def default_serialization
  {
    "id" => self.id,
    "user" => self.user.serialize(:summary),
    "quiz" => self.quiz.serialize(:summary),
    "item_count" => self.item_count,
    "attempted_at" => self.attempted_at,
    "submitted_at" => self.submitted_at,
    "time_elapsed" => self.time_elapsed,
    "is_auto_submitted" => self.auto_submitted?,
    "is_late" => self.late?,
    "status" => self.status,
    "total_auto_score" => self.total_auto_score
  }
end
item_count() click to toggle source
# File lib/sakai-info/quiz.rb, line 834
def item_count
  @item_count ||= QuizAttemptItem.count_by_attempt_id(self.id)
end
items() click to toggle source
# File lib/sakai-info/quiz.rb, line 830
def items
  @items ||= QuizAttemptItem.find_by_attempt_id(self.id)
end
items_serialization() click to toggle source
# File lib/sakai-info/quiz.rb, line 918
def items_serialization
  {
    "items" => self.items.collect { |i| i.serialize(:attempt_summary) }
  }
end
late?() click to toggle source
# File lib/sakai-info/quiz.rb, line 850
def late?
  @is_late == 1
end
quiz() click to toggle source
# File lib/sakai-info/quiz.rb, line 842
def quiz
  @quiz ||= PublishedQuiz.find(@quiz_id)
end
quiz_summary_serialization() click to toggle source
# File lib/sakai-info/quiz.rb, line 910
def quiz_summary_serialization
  {
    "id" => self.id,
    "eid" => User.get_eid(self.user_id),
    "status" => self.status
  }
end
submitted_at() click to toggle source
# File lib/sakai-info/quiz.rb, line 862
def submitted_at
  if @submitted_at.nil?
    nil
  else
    @submitted_at.strftime("%Y-%m-%d %H:%M:%S")
  end
end
summary_serialization() click to toggle source
# File lib/sakai-info/quiz.rb, line 901
def summary_serialization
  {
    "id" => self.id,
    "eid" => User.get_eid(self.user_id),
    "quiz_id" => self.quiz_id,
    "status" => self.status
  }
end
user() click to toggle source
# File lib/sakai-info/quiz.rb, line 838
def user
  @user ||= User.find(@user_id)
end