Class: SakaiInfo::QuizAttempt

Inherits:
SakaiObject show all
Defined in:
lib/sakai-info/quiz.rb

Overview

class PublishedQuizItemAttachment < QuizItemAttachment end

Constant Summary collapse

ATTEMPT_STATUS =

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

{
  "0" => "unsubmitted",
  "1" => "submitted-ungraded",
  "2" => "submitted-auto-graded",
  "3" => "submitted-needs-human-attention",
  "4" => "needs-resubmit",
  "5" => "unsubmitted-but-graded",
  "6" => "updated-in-progress",
}

Instance Attribute Summary collapse

Attributes inherited from SakaiObject

#id

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from SakaiObject

#dbrow_only_serialization, #dbrow_serialization, descendants, #object_type_serialization, #serialize, #shell_serialization, #to_csv, #to_json, #to_yaml

Constructor Details

#initialize(dbrow) ⇒ QuizAttempt

Returns a new instance of QuizAttempt.



749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
# File 'lib/sakai-info/quiz.rb', line 749

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[:attempted_at]
  @time_elapsed = dbrow[:timeelapsed]
  @is_auto_submitted = dbrow[:is_auto_submitted]
  @is_late = dbrow[:islate]
  @comments = dbrow[:comments]
end

Instance Attribute Details

#attempted_atObject (readonly)

Returns the value of attribute attempted_at.



741
742
743
# File 'lib/sakai-info/quiz.rb', line 741

def attempted_at
  @attempted_at
end

#commentsObject (readonly)

Returns the value of attribute comments.



742
743
744
# File 'lib/sakai-info/quiz.rb', line 742

def comments
  @comments
end

#dbrowObject (readonly)

Returns the value of attribute dbrow.



741
742
743
# File 'lib/sakai-info/quiz.rb', line 741

def dbrow
  @dbrow
end

#quiz_idObject (readonly)

Returns the value of attribute quiz_id.



742
743
744
# File 'lib/sakai-info/quiz.rb', line 742

def quiz_id
  @quiz_id
end

#statusObject (readonly)

Returns the value of attribute status.



741
742
743
# File 'lib/sakai-info/quiz.rb', line 741

def status
  @status
end

#submitted_atObject (readonly)

Returns the value of attribute submitted_at.



741
742
743
# File 'lib/sakai-info/quiz.rb', line 741

def 
  @submitted_at
end

#time_elapsedObject (readonly)

Returns the value of attribute time_elapsed.



742
743
744
# File 'lib/sakai-info/quiz.rb', line 742

def time_elapsed
  @time_elapsed
end

#total_auto_scoreObject (readonly)

Returns the value of attribute total_auto_score.



741
742
743
# File 'lib/sakai-info/quiz.rb', line 741

def total_auto_score
  @total_auto_score
end

#user_idObject (readonly)

Returns the value of attribute user_id.



742
743
744
# File 'lib/sakai-info/quiz.rb', line 742

def user_id
  @user_id
end

Class Method Details

.all_serializationsObject



876
877
878
# File 'lib/sakai-info/quiz.rb', line 876

def self.all_serializations
  [:default, :items]
end

.clear_cacheObject



744
745
746
# File 'lib/sakai-info/quiz.rb', line 744

def self.clear_cache
  @@cache = {}
end

.count_by_quiz_id(quiz_id) ⇒ Object



782
783
784
# File 'lib/sakai-info/quiz.rb', line 782

def self.count_by_quiz_id(quiz_id)
  QuizAttempt.query_by_quiz_id(quiz_id).count
end

.find(id) ⇒ Object



765
766
767
768
769
770
771
772
773
774
775
776
# File 'lib/sakai-info/quiz.rb', line 765

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) ⇒ Object



786
787
788
789
# File 'lib/sakai-info/quiz.rb', line 786

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) ⇒ Object



795
796
797
798
# File 'lib/sakai-info/quiz.rb', line 795

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

.query_by_quiz_id(quiz_id) ⇒ Object



778
779
780
# File 'lib/sakai-info/quiz.rb', line 778

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) ⇒ Object



791
792
793
# File 'lib/sakai-info/quiz.rb', line 791

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

Instance Method Details

#auto_submitted?Boolean

Returns:

  • (Boolean)


816
817
818
# File 'lib/sakai-info/quiz.rb', line 816

def 
  @is_auto_submitted == 1
end

#default_serializationObject



839
840
841
842
843
844
845
846
847
848
849
850
851
# File 'lib/sakai-info/quiz.rb', line 839

def default_serialization
  {
    "id" => self.id,
    "user" => self.user.serialize(:summary),
    "quiz" => self.quiz.serialize(:summary),
    "item_count" => self.item_count,
    "submitted_at" => self.,
    "is_auto_submitted" => self.,
    "is_late" => self.late?,
    "status" => self.status,
    "total_auto_score" => self.total_auto_score
  }
end

#item_countObject



804
805
806
# File 'lib/sakai-info/quiz.rb', line 804

def item_count
  @item_count ||= QuizAttemptItem.count_by_attempt_id(self.id)
end

#itemsObject



800
801
802
# File 'lib/sakai-info/quiz.rb', line 800

def items
  @items ||= QuizAttemptItem.find_by_attempt_id(self.id)
end

#items_serializationObject



870
871
872
873
874
# File 'lib/sakai-info/quiz.rb', line 870

def items_serialization
  {
    "items" => self.items.collect { |i| i.serialize(:attempt_summary) }
  }
end

#late?Boolean

Returns:

  • (Boolean)


820
821
822
# File 'lib/sakai-info/quiz.rb', line 820

def late?
  @is_late == 1
end

#quizObject



812
813
814
# File 'lib/sakai-info/quiz.rb', line 812

def quiz
  @quiz ||= PublishedQuiz.find(@quiz_id)
end

#quiz_summary_serializationObject



862
863
864
865
866
867
868
# File 'lib/sakai-info/quiz.rb', line 862

def quiz_summary_serialization
  {
    "id" => self.id,
    "eid" => User.get_eid(self.user_id),
    "status" => self.status
  }
end

#summary_serializationObject



853
854
855
856
857
858
859
860
# File 'lib/sakai-info/quiz.rb', line 853

def summary_serialization
  {
    "id" => self.id,
    "eid" => User.get_eid(self.user_id),
    "quiz_id" => self.quiz_id,
    "status" => self.status
  }
end

#userObject



808
809
810
# File 'lib/sakai-info/quiz.rb', line 808

def user
  @user ||= User.find(@user_id)
end