Sha256: b127e7c4eaa5907330d592b2d143dd46dbc7d2bc5ad54c104e00e12fc2228763

Contents?: true

Size: 1.58 KB

Versions: 6

Compression:

Stored size: 1.58 KB

Contents

module Gaku
  class CoursesController < GakuController

    load_and_authorize_resource class: Gaku::Course

    include StudentChooserController

    helper_method :sort_column, :sort_direction

    inherit_resources
    respond_to :js, :html

    before_filter :before_show,  only: :show
    before_filter :count,        only: [:create, :destroy, :index]
    before_filter :load_data

    def index
      @courses = SemesterCourse.group_by_semester
      @courses_without_semester = Course.without_semester
    end

    def show
      super do |format|
        format.json { render json: @course.as_json(include: :students) }
      end
    end

    protected

    def collection
      @courses = Course.includes(:syllabus).all
    end

    def resource
      @course = Course.includes(syllabus: {exams: :exam_portion_scores})
                      .find(params[:id])
    end

    def resource_params
      return [] if request.get?
      [params.require(:course).permit(course_attr)]
    end

    private

    def course_attr
      %i(syllabus_id code)
    end

    def load_data
      @syllabuses = Syllabus.all.map { |s| [s.name, s.id] }
    end

    def count
      @count = Course.count
    end

    def before_show
      @notable = Course.find(params[:id])
      @notable_resource = get_resource_name(@notable)
      @class_groups = ClassGroup.all.map { |s| [s.name, s.id] }
    end

    def sort_column
      Student.column_names.include?(params[:sort]) ? params[:sort] : 'surname'
    end

    def sort_direction
      %w[asc desc].include?(params[:direction]) ? params[:direction] : 'asc'
    end

  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
gaku_core-0.0.3 app/controllers/gaku/courses_controller.rb
gaku-0.0.3 core/app/controllers/gaku/courses_controller.rb
gaku-0.0.2 core/app/controllers/gaku/courses_controller.rb
gaku_core-0.0.2 app/controllers/gaku/courses_controller.rb
gaku-0.0.1 core/app/controllers/gaku/courses_controller.rb
gaku_core-0.0.1 app/controllers/gaku/courses_controller.rb