class Admin::Legacy::Nursing::Students::ScreeningsController < Admin::Legacy::Nursing::Controller
  def index
    render_success :ok, json: screenings.map { |s| screening_props(s) }
  end

  def show
    render_success :ok, json: screening_props(screening)
  end

  def create
    screening = screenings.build(screening_params)

    if screening.save
      render_success :ok, json: screening_props(screening)
    else
      render_error :unprocessable_entity, errors: screening
    end
  end

  def update
    if screening.update(screening_params)
      render_success :ok, json: screening_props(screening)
    else
      render_error :unprocessable_entity, errors: screening
    end
  end

  def destroy
    if screening.destroy
      render_success :ok
    else
      render_error :unprocessable_entity, errors: screening
    end
  end

  private
    def student
      @student ||= current_school.students.find_by(id: params[:student_id])
    end

    def screenings
      student.nursing_screenings
    end

    def screening
      @screening ||= screenings.find_by(id: params[:id])
    end

    def screening_params
      params.permit(:height, :weight, :hearing, :sight, :date)
    end

    def screening_props(screening)
      {
        id: screening.id,
        age: screening.decorate.age,
        date: screening.date,
        height: screening.height,
        weight: screening.weight,
        bmi: screening.decorate.bmi,
        hearing: screening.hearing,
        sight: screening.sight,
        full_name: student.full_name
      }
    end
end
