class Admin::Forms::FieldsController < Admin::Forms::Controller
  def index
    render_success :ok, json: fields.map { |f| props(f) }
  end

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

  def create
    field = fields.build(field_params)

    if field.save
      render_success :ok, json: props(field)
    else
      render_error :unprocessible_entity, errors: field.errors
    end
  end

  def update
    if field.update(field_params)
      render_success :ok, json: props(field)
    else
      render_error :unprocessible_entity, errors: field.errors
    end
  end

  def destroy
    if field.destroy
      render_success :ok
    else
      render_error :unprocessible_entity, errors: field.errors
    end
  end

  private
    def fields
      form.fields
    end

    def field
      @field ||= fields.find_by(id: params[:id])
    end

    def field_params
      params.permit(
        :label,
        :help_text,
        :type,
        :length,
        :position,
        :align,
        :rows,
        :cols,
        :content,
        :bold,
        :italic
      )
    end

    def props(field)
      {
        id: field.id,
        label: field.label,
        help_text: field.help_text,
        type: field.type,
        length: field.length,
        position: field.position,
        align: field.align,
        rows: field.rows,
        cols: field.cols,
        content: field.content,
        bold: field.bold,
        italic: field.italic
      }
    end
end
