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

  def show
    render_success :ok, json: additional_fields.map { |f| field_props(f) }
  end

  def update
    additional_fields.map { |f| f.assign_attributes(field_params(f)) }
    if transactional_save(additional_fields)
      render_success :ok
    else
      render_error :unprocessible_entity, message: 'Something went wrong.'
    end
  end

  private
    def additional_fields
      @additional_fields ||= application.additional_fields.build_all(application)
    end

    def field_params(field)
      params.require(field.student_additional_field_id.to_s).permit(:display, :required)
    end

    def field_props(field)
      {
        student_additional_field_id: field.student_additional_field_id,
        name: field.student_additional_field.name,
        display: field.display,
        required: field.required
      }
    end
end
