class Admin::Legacy::Student::TypesController < Admin::Legacy::Student::Controller
  def index
    render_success :ok, json: types.map { |t| props(t) }
  end

  def show
    render_success :ok, json: props(type)
  end

  def create
    type = types.build(type_params)
    if type.save
      render_success :ok, object: 'Type', json: props(type)
    else
      render_error :unprocessable_entity, errors: type
    end
  end

  def update
    if type.update(type_params)
      render_success :ok, object: 'Type', json: props(type)
    else
      render_error :unprocessable_entity, errors: type
    end
  end

  def destroy
    if type.destroy
      render_success :ok
    else
      render_error :unprocessable_entity
    end
  end

  private
    def types
      current_school.student_types
    end

    def type
      @type ||= types.find_by(id: params[:id])
    end

    def type_params
      params.permit(:name, :description)
    end

    def props(type)
      {}.tap do |prop|
        prop[:id] = type.id
        prop[:name] = type.name
        prop[:description] = type.description
      end
    end
end
