pupilfirst/pupilfirst

View on GitHub
app/controllers/schools/target_groups_controller.rb

Summary

Maintainability
A
55 mins
Test Coverage
B
88%
module Schools
  class TargetGroupsController < SchoolsController
    # POST /school/levels/:level_id/target_groups(.:format)
    def create
      level = current_school.levels.find(params[:level_id])
      target_group =
        authorize(
          TargetGroup.new(level: level),
          policy_class: Schools::TargetGroupPolicy
        )
      form = ::Schools::TargetGroups::CreateForm.new(target_group)
      if form.validate(params)
        target_group = form.save
        render json: {
                 id: target_group.id.to_s,
                 sortIndex: target_group.sort_index,
                 error: nil
               }
      else
        render json: { error: form.errors.full_messages.join(", ") }
      end
    end

    # PATCH /school/target_groups/:id
    def update
      target_group =
        authorize(
          TargetGroup.find(params[:id]),
          policy_class: Schools::TargetGroupPolicy
        )
      form = ::Schools::TargetGroups::UpdateForm.new(target_group)
      if form.validate(params)
        target_group = form.save
        render json: {
                 id: target_group.id.to_s,
                 sortIndex: target_group.sort_index,
                 error: nil
               }
      else
        render json: { error: form.errors.full_messages.join(", ") }
      end
    end
  end
end