HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/comfama.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'];
            }
        }
    }
}