class Admin::Admissions::Applications::EssaysController < Admin::Admissions::Controller
  include Admin::Admissions::ApplicationScoped

  def index
    data = essays.includes(:essay).order(:position).map { |e| essay_props(e) }
    render_success :ok, json: data
  end

  def create
    admissions_essay = admissions_essays.find(params[:essay_id])
    essay = essays.build(essay: admissions_essay)
    if essay.save
      render_success :ok, json: essay_props(essay)
    else
      render_error :unprocessable_entity, message: 'Something went wrong'
    end
  end

  def update
    if essay.update(essay_params)
      render_success :ok, json: essay_props(essay)
    else
      render_error :unprocessable_entity, errors: essay
    end
  end

  def destroy
    if essay.destroy
      render_success :ok, event: :removed
    else
      render_error :unprocessable_entity, errors: essay
    end
  end

  private
    def essays
      application.application_essays
    end

    def essay
      @essay ||= essays.find(params[:id])
    end

    def admissions_essays
      current_school.admission_essays
    end

    def essay_params
      params.permit(:position, :required)
    end

    def essay_props(essay)
      {
        id: essay.id,
        name: essay.essay.name,
        required: essay.required,
        position: essay.position,
        essay_id: essay.essay_id
      }
    end
end
