Spaces:
No application file
No application file
namespace MauticPlugin\MauticCrmBundle\Controller; | |
use Mautic\CoreBundle\Controller\CommonController; | |
use Mautic\PluginBundle\Helper\IntegrationHelper; | |
use MauticPlugin\MauticCrmBundle\Integration\HubspotIntegration; | |
use Psr\Log\LoggerInterface; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Component\HttpFoundation\Response; | |
class PublicController extends CommonController | |
{ | |
public function contactDataAction(Request $request, LoggerInterface $mauticLogger, IntegrationHelper $integrationHelper): Response | |
{ | |
$content = $request->getContent(); | |
if (!empty($content)) { | |
$data = json_decode($content, true); // 2nd param to get as array | |
} else { | |
return new Response('ERROR'); | |
} | |
$integration = 'Hubspot'; | |
$integrationObject = $integrationHelper->getIntegrationObject($integration); | |
\assert($integrationObject instanceof HubspotIntegration); | |
foreach ($data as $info) { | |
$object = explode('.', $info['subscriptionType']); | |
$id = $info['objectId']; | |
try { | |
switch ($object[0]) { | |
case 'contact': | |
$executed = []; | |
$integrationObject->getLeads($id, null, $executed); | |
break; | |
case 'company': | |
$integrationObject->getCompanies($id); | |
break; | |
} | |
} catch (\Exception $ex) { | |
$mauticLogger->log('error', 'ERROR on Hubspot webhook: '.$ex->getMessage()); | |
} | |
} | |
return new Response('OK'); | |
} | |
} | |