File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Services/SiesaCrmService.php
<?php
namespace App\Services;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;
class SiesaCrmService
{
public function getToken()
{
try {
$client = new Client();
$response = $client->request('POST', env('SIESA_CRM_URL') . env('SIESA_CRM_AUTH_TOKEN_PATH'), [
'form_params' => [
'username' => config('siesa_crm.username'),
'password' => config('siesa_crm.password'),
'client_id' => config('siesa_crm.cliente_id'),
'client_secret' => config('siesa_crm.client_secret'),
"grant_type" => 'password'
],
]);
$content = $response->getBody()->getContents();
return json_decode($content, true);
} catch (RequestException $e) {
if ($e->hasResponse()) {
$errorContent = $e->getResponse()->getBody()->getContents();
return ['error' => $errorContent];
} else {
return ['error' => 'Error de conexión'];
}
}
}
public function getPRQS($request)
{
try {
$client = new Client();
$token = $this->getToken();
$accessToken = $token['access_token'];
$caseConsecutivo = (int)$request->input('case_consecutivo');
$cstmNumeroDeDocumento = '"' . $request->input('cstm_numero_de_documento') . '"';
$response = $client->request('POST', config('siesa_crm.url') . config('siesa_crm.case_index'), [
'headers' => [
'Authorization' => 'Bearer ' . $accessToken . '',
],
'form_params' => [
'filters' => "{\"case_consecutivo\": $caseConsecutivo, \"cstm_numero_de_documento_nit\": $cstmNumeroDeDocumento}"
],
]);
$content = $response->getBody()->getContents();
return json_decode($content, true);
} catch (RequestException $e) {
if ($e->hasResponse()) {
$errorContent = $e->getResponse()->getBody()->getContents();
return ['error' => $errorContent];
} else {
return ['error' => 'Error de conexión'];
}
}
}
public function createPQRS($request)
{
try {
$client = new Client();
$token = $this->getToken();
$access_token = $token['access_token'];
$keys = $request->keys();
$result = [];
foreach ($keys as $key) {
$value = $request->input($key);
$result[$key] = $value;
}
$result['cstm_numero_de_documento_nit'] = $result['cstm_numero_de_documento'];
$result['description'] = $result['cstm_describa_su_fpqrs'];
unset($result["cstm_numero_de_documento"]);
unset($result["cstm_describa_su_fpqrs"]);
$response = $client->request('POST', config('siesa_crm.url') . config('siesa_crm.case_create'), [
'headers' => [
'Authorization' => 'Bearer ' . $access_token . '',
'Company' => 1
],
'form_params' => $result,
]);
$content = $response->getBody()->getContents();
return json_decode($content, true);
} catch (RequestException $e) {
if ($e->hasResponse()) {
$errorContent = $e->getResponse()->getBody()->getContents();
return ['error' => $errorContent];
} else {
return ['error' => 'Error de conexión'];
}
}
}
}