class Admin::Covid::Form::DisplaysController < Admin::Covid::Controller
  def index
    data = current_school.covid_form_displays

    render_success :ok, json: data.map { |s| display_props(s) }
  end

  def show
    render_success :ok, json: display_props(display)
  end

  def create
    display = displays.build(display_params)

    if display.save
      render_success :ok, json: display_props(display)
    else
      render_error :unprocessable_entity, errors: display
    end
  end

  def update
    if display.update(display_params)
      render_success :ok, json: display_props(display)
    else
      render_error :unprocessable_entity, errors: display
    end
  end

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

  private
    def displays
      section.displays
    end

    def display
      @display ||= displays.find_by(id: params[:id])
    end

    def section
      @section ||= current_school.covid_form_sections.find_by(id: params[:section_id])
    end

    def display_params
      params.permit(:description, :field, :sequence).merge(title: params[:description].truncate(64))
    end

    def display_props(display)
      {
        id: display.id,
        section_id: display.section_id,
        type: display.type,
        title: display.title,
        description: display.description,
        field: display.field,
        sequence: display.sequence
      }
    end
end
