2018-08-29 11:43:00 +02:00
|
|
|
class Helpscout::FormAdapter
|
|
|
|
attr_reader :params
|
|
|
|
|
2020-08-25 15:01:54 +02:00
|
|
|
def self.options
|
|
|
|
[
|
2020-09-16 20:58:31 +02:00
|
|
|
[I18n.t(TYPE_INFO, scope: [:support, :question]), TYPE_INFO, FAQ_CONTACTER_SERVICE_EN_CHARGE_URL],
|
|
|
|
[I18n.t(TYPE_PERDU, scope: [:support, :question]), TYPE_PERDU, LISTE_DES_DEMARCHES_URL],
|
|
|
|
[I18n.t(TYPE_INSTRUCTION, scope: [:support, :question]), TYPE_INSTRUCTION, FAQ_OU_EN_EST_MON_DOSSIER_URL],
|
|
|
|
[I18n.t(TYPE_AMELIORATION, scope: [:support, :question]), TYPE_AMELIORATION, FEATURE_UPVOTE_URL],
|
2020-08-25 15:01:54 +02:00
|
|
|
[I18n.t(TYPE_AUTRE, scope: [:support, :question]), TYPE_AUTRE]
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.admin_options
|
|
|
|
[
|
|
|
|
[I18n.t(ADMIN_TYPE_QUESTION, scope: [:supportadmin]), ADMIN_TYPE_QUESTION],
|
|
|
|
[I18n.t(ADMIN_TYPE_RDV, scope: [:supportadmin]), ADMIN_TYPE_RDV],
|
|
|
|
[I18n.t(ADMIN_TYPE_SOUCIS, scope: [:supportadmin]), ADMIN_TYPE_SOUCIS],
|
|
|
|
[I18n.t(ADMIN_TYPE_PRODUIT, scope: [:supportadmin]), ADMIN_TYPE_PRODUIT],
|
|
|
|
[I18n.t(ADMIN_TYPE_DEMANDE_COMPTE, scope: [:supportadmin]), ADMIN_TYPE_DEMANDE_COMPTE],
|
|
|
|
[I18n.t(ADMIN_TYPE_AUTRE, scope: [:supportadmin]), ADMIN_TYPE_AUTRE]
|
|
|
|
]
|
|
|
|
end
|
|
|
|
|
2018-08-29 11:43:00 +02:00
|
|
|
def initialize(params = {}, api = nil)
|
|
|
|
@params = params
|
|
|
|
@api = api || Helpscout::API.new
|
|
|
|
end
|
|
|
|
|
2020-08-25 15:01:54 +02:00
|
|
|
TYPE_INFO = 'procedure_info'
|
|
|
|
TYPE_PERDU = 'lost_user'
|
|
|
|
TYPE_INSTRUCTION = 'instruction_info'
|
|
|
|
TYPE_AMELIORATION = 'product'
|
|
|
|
TYPE_AUTRE = 'other'
|
2018-08-29 11:43:00 +02:00
|
|
|
|
2018-11-28 15:19:12 +01:00
|
|
|
ADMIN_TYPE_RDV = 'admin demande rdv'
|
|
|
|
ADMIN_TYPE_QUESTION = 'admin question'
|
|
|
|
ADMIN_TYPE_SOUCIS = 'admin soucis'
|
2018-12-20 14:18:42 +01:00
|
|
|
ADMIN_TYPE_PRODUIT = 'admin suggestion produit'
|
|
|
|
ADMIN_TYPE_DEMANDE_COMPTE = 'admin demande compte'
|
2018-11-28 15:19:12 +01:00
|
|
|
ADMIN_TYPE_AUTRE = 'admin autre'
|
|
|
|
|
2018-08-29 11:43:00 +02:00
|
|
|
def send_form
|
|
|
|
conversation_id = create_conversation
|
|
|
|
|
|
|
|
if conversation_id.present?
|
|
|
|
add_tags(conversation_id)
|
|
|
|
true
|
|
|
|
else
|
|
|
|
false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def add_tags(conversation_id)
|
|
|
|
@api.add_tags(conversation_id, params[:tags])
|
|
|
|
end
|
|
|
|
|
|
|
|
def create_conversation
|
|
|
|
response = @api.create_conversation(
|
|
|
|
params[:email],
|
|
|
|
params[:subject],
|
|
|
|
params[:text],
|
|
|
|
params[:file]
|
|
|
|
)
|
|
|
|
|
2018-11-28 15:19:12 +01:00
|
|
|
if response.success?
|
|
|
|
if params[:phone].present?
|
|
|
|
@api.add_phone_number(params[:email], params[:phone])
|
|
|
|
end
|
|
|
|
response.headers['Resource-ID']
|
|
|
|
end
|
2018-08-29 11:43:00 +02:00
|
|
|
end
|
|
|
|
end
|