File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/AdobeSignController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AdobeSignController extends Controller
{
public function webhooksListener(Request $request)
{
$utilController = new UtilController;
$utilController->logFile($request, 'adobesign');
$content = json_decode($request->getContent(), true);
if ($content && $content['agreement'] && $content['agreement']['id']) {
$agreementId = $content['agreement']['id'];
$agreement = $this->formData($agreementId);
if ($agreement && $agreement['formDataList']) {
$identification = $agreement['formDataList']['identification'] ?? $agreement['formDataList']['document'];
}
$documentId = $content['agreement']['documentsInfo']['documents'][0]['id'];
$document = $this->document($agreementId, $documentId);
if ($document) {
$externalFormId = $content['agreement']['name'];
$agreementDocument = $content['agreement']['documentsInfo']['documents'][0];
$extension = $this->extension($agreementDocument['mimeType']);
$parameters = new \stdClass();
$parameters->identification = $identification;
$parameters->external_form_id = $externalFormId;
$parameters->file = $document;
$parameters->extension = $extension;
$controller = new AcademyDocumentController;
$controller->uploadUserAcademyDocumentExternal($parameters);
}
}
header('Content-Type: application/json');
return response(json_encode(array("xAdobeSignClientId" => config('adobesign.clientId'))));
}
private function formData($agreementId)
{
// example: https://api.na4.adobesign.com:443/api/rest/v6/agreements/CBJCHBCAABAAh3sk2XRmCDITJUb92GcUe94YCuRL3hQL/formData
try {
$client = new \GuzzleHttp\Client();
$response = $client->get(config('adobesign.api') . "/agreements/{$agreementId}/formData", [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer ' . config('adobesign.token')
],
]);
$body = $response->getBody()->getContents();
$body = json_decode($body, true);
return $body;
} catch (\Exception $e) {
return response(array("r" => false, "m" => $e->getMessage()));
}
}
private function document($agreementId, $documentId)
{
// example: https://api.na4.adobesign.com:443/api/rest/v6/agreements/CBJCHBCAABAAwdZ1mlvmO_BXk3bUFohGi9xbl0Sxuw2B/documents/3AAABLblqZhBTxBmvE-PxwvSbx6tQGjxAFSkwHs1nsfKMgtVUImKYD_jJ31mGdBtF4-_1xKKSNayIZIlfG2-5XAYXOPySCA9O
try {
$client = new \GuzzleHttp\Client();
$response = $client->get(config('adobesign.api') . "/agreements/{$agreementId}/documents/{$documentId}", [
'headers' => [
'Accept' => '*/*;encoding=base64',
'Authorization' => 'Bearer ' . config('adobesign.token')
],
]);
$body = $response->getBody()->getContents();
return $body;
} catch (\Exception $e) {
return response(array("r" => false, "m" => $e->getMessage()));
}
}
}