Viewing File: /usr/local/cpanel/whostmgr/docroot/cgi/ncssl/source/src/Service/Certificate/Activate.php

<?php

namespace App\Service\Certificate;

use App\Exception\ActivateException;
use App\Service\NcGatewayApi\Exceptions\NcGatewayApiException;
use App\Service\NcPlugin\PluginException;
use App\Entity\Certificate as CertificateEntity;
use Exception;

class Activate extends AbstractActivate
{
    /**
     * @throws ActivateException
     */
    public function activate(CertificateTransfer $data, $isAsyncExternalCall): void
    {
        $this->logger->notice(sprintf(self::MESSAGE_START_ACTIVATION, $data->getCertificateId()));
        $this->makeAction($data, $isAsyncExternalCall);
    }

    /**
     * @param CertificateTransfer $certificateTransfer
     *
     * @return void
     *
     * @throws PluginException|\JsonException
     */
    public function saveValidationData(CertificateTransfer $certificateTransfer): void
    {
        $this->logger->notice(sprintf(self::START_ASYNC_ACTIVATION_MESSAGE, $certificateTransfer->getCertificateId()));

        $certificate = $this->entityManager->getRepository(CertificateEntity::class)->findOneBy([
            'ncId' => $certificateTransfer->getCertificateId()
        ]);

        if (!$certificate) {
            throw new PluginException(sprintf('Not found certificate for saveValidationData ncId: %s', $certificateTransfer->getCertificateId()));
        }

        $certificateTransfer->setDomainName($certificate->getHost());

        try {
            $certificate->setValidationData($this->prepareValidationData($certificateTransfer));
            $this->saveHttpDcvFile($certificateTransfer);
            $this->entityManager->flush();
        } catch (Exception $exception) {
            throw new PluginException('Can\'t save certificate validation data', $exception->getCode());
        }
    }

    /**
     * @param CertificateTransfer $certificateTransfer
     * @param string $csr
     * @param bool $isAsyncExternalCall
     *
     * @return void
     *
     * @throws Exception
     * @throws NcGatewayApiException
     */
    protected function makeExternalCall(CertificateTransfer $certificateTransfer, string $csr, bool $isAsyncExternalCall): void
    {
        $result = $this->ncGatewayApi->activate($certificateTransfer, $csr, $isAsyncExternalCall);

        if (!empty($result['fileName']) && !empty($result['fileContent'])) {
            $certificateTransfer->setFileName($result['fileName']);
            $certificateTransfer->setFileContent($result['fileContent']);
        }

        $certificateTransfer->setNCStatus(CertificateEntity::NCSTATUS_ORDERCREATED);
    }
}
Back to Directory File Manager