Sha256: 21618deec853f814ef9d1170c1082fb1625a2289dfbe38baac547c87cc1b7a3c

Contents?: true

Size: 1.33 KB

Versions: 16

Compression:

Stored size: 1.33 KB

Contents

module Gaku
  class ClassGroups::SemesterAttendancesController < EnrollmentsController

    respond_to :js

    before_action :set_class_group

    def index
      @students = @class_group.students
      @semesters = @class_group.semesters

      check_or_init_semester_attendance

      @semester_attendances = Gaku::SemesterAttendance.where(student_id: @students.pluck(:id), semester_id: @semesters.pluck(:id))
      @semester_attendance_results = @semester_attendances.grouped_for_table

      respond_with @semester_attendances
    end


    def update
      @semester_attendance = Gaku::SemesterAttendance.find(params[:id])
      @semester_attendance.update(semester_attendance_params)
      render nothing: true
    end

    private

    def semester_attendance_params
      params.require(:semester_attendance).permit(semester_attendance_attr)
    end

    def semester_attendance_attr
      %i( days_present days_absent )
    end


    def set_class_group
      @class_group = Gaku::ClassGroup.find(params[:class_group_id])
    end

    def check_or_init_semester_attendance
      ActiveRecord::Base.transaction do
        @students.each do |student|
          @semesters.each do |semester|
            Gaku::SemesterAttendance.where(student_id: student, semester_id: semester).first_or_create
          end
        end
      end
    end

  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
gaku_frontend-0.3.0 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.3.0.pre.4 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.3.0.pre.3 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.3.0.pre.2 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.3.0.pre.1 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.3.0.pre.0 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku-0.2.4 frontend/app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.2.4 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku-0.2.3 frontend/app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.2.3 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku-0.2.2 frontend/app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.2.2 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku-0.2.1 frontend/app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.2.1 app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku-0.2.0 frontend/app/controllers/gaku/class_groups/semester_attendances_controller.rb
gaku_frontend-0.2.0 app/controllers/gaku/class_groups/semester_attendances_controller.rb