<?php
namespace CompanyGroupBundle\Modules\Api\Controller;
use ApplicationBundle\Controller\GenericController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
class OrganizationIdentityController extends GenericController
{
public function syncErpCustomerAction(Request $request): JsonResponse
{
$expectedSecret = (string)$this->container->getParameter('secret');
$providedSecret = (string)$request->headers->get('X-Honeybee-Internal-Secret', $request->get('internalSecret', ''));
if ($expectedSecret === '' || !hash_equals($expectedSecret, $providedSecret)) {
return new JsonResponse([
'success' => false,
'code' => 'HB_UNAUTHORIZED',
'message' => 'Unauthorized customer identity sync request.',
], 401);
}
$payload = json_decode((string)$request->getContent(), true);
if (!is_array($payload)) {
$payload = $request->request->all();
}
try {
$result = $this->get('app.organization_identity_service')->linkErpCustomer($payload);
} catch (\InvalidArgumentException $e) {
return new JsonResponse([
'success' => false,
'code' => 'HB_VALIDATION_ERROR',
'message' => $e->getMessage(),
], 400);
} catch (\Throwable $e) {
return new JsonResponse([
'success' => false,
'code' => 'HB_SYNC_ERROR',
'message' => $e->getMessage(),
], 500);
}
return new JsonResponse([
'success' => true,
'code' => 'HB_OK',
'message' => 'Customer organization identity synchronized.',
'data' => $result,
]);
}
}