76 lines
2.5 KiB
PHP
76 lines
2.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace External\FlexiBeeBundle\Controller;
|
|
|
|
use External\FlexiBeeBundle\Exception\FlexiBeeException;
|
|
use External\FlexiBeeBundle\Synchronizers\OrderSynchronizer;
|
|
use External\FlexiBeeBundle\Util\FlexiBeeLocator;
|
|
use KupShop\AdminBundle\AdminRequiredControllerInterface;
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
|
use Symfony\Component\Routing\Annotation\Route;
|
|
|
|
class FlexiBeeController extends AbstractController implements AdminRequiredControllerInterface
|
|
{
|
|
/**
|
|
* @Route("/_flexi/dump_order/{id_order}/")
|
|
* @Route("/_flexi/dump_order/{id_order}/{type}/", requirements={"type"="(create|realize)"})
|
|
*/
|
|
public function dumpOrder(OrderSynchronizer $orderSynchronizer, int $id_order, ?string $type = null): JsonResponse
|
|
{
|
|
try {
|
|
$order = \Order::get($id_order);
|
|
} catch (\Throwable $e) {
|
|
throw new NotFoundHttpException('Order not found');
|
|
}
|
|
|
|
switch ($type) {
|
|
case 'realize':
|
|
$data = [
|
|
'realize' => $orderSynchronizer->getOrderRealizeData($order),
|
|
'invoice' => $orderSynchronizer->getOrderInvoiceData($order),
|
|
];
|
|
break;
|
|
default:
|
|
$data = $orderSynchronizer->getOrderData($order);
|
|
}
|
|
|
|
return new JsonResponse(
|
|
$data
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @Route("/_flexi/{type}/")
|
|
*/
|
|
public function syncType(FlexiBeeLocator $locator, string $type): JsonResponse
|
|
{
|
|
try {
|
|
$synchronizer = $locator->getServiceByType($type);
|
|
$synchronizer->sync();
|
|
} catch (FlexiBeeException $e) {
|
|
return new JsonResponse(['success' => false, 'message' => $e->getMessage()]);
|
|
}
|
|
|
|
return new JsonResponse(['success' => true, 'message' => sprintf('Synchronization of "%s" done', $type)]);
|
|
}
|
|
|
|
/**
|
|
* @Route("/_flexi/{type}/{id}/")
|
|
*/
|
|
public function syncSingleItem(FlexiBeeLocator $locator, string $type, int $id): JsonResponse
|
|
{
|
|
try {
|
|
$synchronizer = $locator->getServiceByType($type);
|
|
$synchronizer->syncSingleItem($id);
|
|
} catch (FlexiBeeException $e) {
|
|
return new JsonResponse(['success' => false, 'message' => $e->getMessage()]);
|
|
}
|
|
|
|
return new JsonResponse(['success' => true, 'message' => 'Single item synchronization completed']);
|
|
}
|
|
}
|