Sha256: e3a2c579319c640effda0cdfebab84710f19ec6490a1b5e9ef2cbec936bc6e11

Contents?: true

Size: 1.81 KB

Versions: 6

Compression:

Stored size: 1.81 KB

Contents

module Gaku
  class Exams::ExamSessionsController < GakuController

    respond_to :js, except: :index

    before_filter :set_exam_session, only: %i( edit update destroy grading )
    before_filter :load_data, only: %i( new edit )
    before_filter :set_count, only: :create

    def new
      @exam_session = ExamSession.new
      respond_with @exam_session
    end

    def create
      @exam_session = ExamSession.create(exam_session_params)
      set_count
      respond_with @exam_session
    end

    def edit
      respond_with @exam_session
    end

    def update
      @exam_session.update(exam_session_params)
      respond_with @exam_session, location: [:edit, @exam_session]
    end

    def destroy
      @exam_session.destroy!
      respond_with @exam_session, location: [:exams]
    end

    def grading
        @gradable_scope = @exam_session
        @exam = @exam_session.exam
        @students = @gradable_scope.students
        @grading_methods = @gradable_scope.grading_methods
        init_portion_scores

        @grading_calculations = Grading::Collection::Calculations.new(@grading_methods, @students, @exam, @gradable_scope).calculate
        render 'gaku/shared/grading/grading'
    end

    private

    def exam_session_params
      params.require(:exam_session).permit(attributes)
    end

    def attributes
      %i( name session_time exam_id session_start )
    end

    def set_exam_session
      @exam_session = ExamSession.find(params[:id])
    end

    def load_data
      @exams = Exam.all
    end

    def set_count
      @count = ExamSession.count
    end

    def init_portion_scores
      @students.each do |student|
        @exam.exam_portions.each do |portion|
          portion.exam_portion_scores.where(student: student, gradable: @gradable_scope).first_or_create
        end
      end
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
gaku_frontend-0.3.0 app/controllers/gaku/exams/exam_sessions_controller.rb
gaku_frontend-0.3.0.pre.4 app/controllers/gaku/exams/exam_sessions_controller.rb
gaku_frontend-0.3.0.pre.3 app/controllers/gaku/exams/exam_sessions_controller.rb
gaku_frontend-0.3.0.pre.2 app/controllers/gaku/exams/exam_sessions_controller.rb
gaku_frontend-0.3.0.pre.1 app/controllers/gaku/exams/exam_sessions_controller.rb
gaku_frontend-0.3.0.pre.0 app/controllers/gaku/exams/exam_sessions_controller.rb