%PDF- %PDF-
Direktori : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/v1/ |
Current File : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/v1/DocuSignController.php |
<?php namespace App\Http\Controllers\Api\v1; use App\Exceptions\WebhookException; use App\Http\Controllers\Api\ApiController; use App\Models\Docusign; use App\Services\ESign; use App\Transformers\DocuSignTemplateTransformer; use Illuminate\Http\Request; class DocuSignController extends ApiController { /** * @var ESign */ private $esignApi; /** * UserController constructor. * @param ESign $esignApi */ public function __construct(ESign $esignApi) { $this->esignApi = $esignApi; } public function templates() { try { $templates = $this->esignApi->getTemplates(); return $this->collection($templates, new DocuSignTemplateTransformer); } catch (\Exception $e) { return response()->json(['message' => 'Can not load templates!'], 400); } } public function getTemplateDocument($id) { try { $template = $this->esignApi->getTemplate($id); return response()->json([ 'preview' => $template, ]); } catch (\Exception $e) { return response()->json(['message' => 'Can not load template document!'], 400); } } public function webhook(Request $request) { try { $xml = simplexml_load_string($request->getContent()); $hasSignedPatient = head(head($xml->EnvelopeStatus->RecipientStatuses)[0]->Status) === 'Completed'; try { $hasSignedDoctor = head(head($xml->EnvelopeStatus->RecipientStatuses)[1]->Status) === 'Completed'; } catch (\Exception $e) { $hasSignedDoctor = true; } /** @var Docusign $docusign */ $docusign = Docusign::getByEnvelopeId($xml->EnvelopeStatus->EnvelopeID); if ($hasSignedDoctor) { if ($hasSignedPatient) { $docusign->model->completed(); } } else if ($hasSignedPatient) { $docusign->model->signedPatient(); } return response()->json([], 200); } catch (\Exception $e) { throw new WebhookException($e->getMessage()); } } }