Files
kupshop/bundles/KupShop/CheckAppBundle/Controller/CheckAppRequiredController.php
2025-08-02 16:30:27 +02:00

276 lines
8.7 KiB
PHP

<?php
namespace KupShop\CheckAppBundle\Controller;
use KupShop\AdminBundle\AdminRequiredControllerInterface;
use KupShop\CheckAppBundle\Exception\OrderCheckException;
use KupShop\CheckAppBundle\Exception\StockInException;
use KupShop\CheckAppBundle\Util\OrderCheckoutWorker;
use KupShop\CheckAppBundle\Util\ReclamationSupplierCheckoutWorker;
use KupShop\CheckAppBundle\Util\ReturnCheckoutWorker;
use KupShop\CheckAppBundle\Util\StockInWorker;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class CheckAppRequiredController extends AbstractController implements AdminRequiredControllerInterface
{
/**
* @var \KupShop\WarehouseBundle\Util\StockInWorker
*/
private $stockInWorker;
public function __construct(StockInWorker $stockInWorker)
{
$this->stockInWorker = $stockInWorker;
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/addEan")
*/
public function addEanAction(Request $request)
{
$jsonResponse = json_decode($request->getContent());
return new JsonResponse($this->stockInWorker->addEan($jsonResponse->id, $jsonResponse->ean));
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/generateEan")
*/
public function generateEanAction(Request $request)
{
$jsonRequest = json_decode($request->getContent());
return new JsonResponse($this->stockInWorker->generateEan($jsonRequest->id));
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/getOrderCheckData")
*
* @throws \Exception
*/
public function GetOrderCheckDataAction(Request $request, OrderCheckoutWorker $orderCheckoutWorker)
{
$jsonResponse = json_decode($request->getContent());
$result = true;
$order = null;
/** @var $order \Order */
if (!$error = $orderCheckoutWorker->checkOrder($jsonResponse->id, $order)) {
$data = $orderCheckoutWorker->getOrderCheckData($order->id);
if ($data === false) {
$data = [];
$result = false;
}
} else {
$result = false;
}
$packages = 1;
if ($order) {
$packages = $order->getData('balikobot')['packages'] ?? 1;
}
return new JsonResponse([
'id' => $jsonResponse->id,
'id_order' => $order->id ?? $jsonResponse->id,
'order_no' => $order->order_no ?? '',
'packages' => $packages,
'items' => $data ?? [],
'error' => $error,
'result' => $result,
]);
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/submitOrderCheckout")
*/
public function submitOrderCheckout(Request $request, OrderCheckoutWorker $orderCheckoutWorker)
{
$jsonResponse = json_decode($request->getContent());
try {
if (findModule(\Modules::PRODUCTS_SERIAL_NUMBERS)) {
$orderCheckoutWorker->checkoutOrderSerialNumbers($jsonResponse->items);
}
if ($jsonResponse->packages) {
$order = \Order::createFromDbOrderNo($jsonResponse->id);
$data = $order->getData('balikobot');
$data = $data ? $data : [];
$data['packages'] = $jsonResponse->packages;
$order->setData('balikobot', $data);
}
return new JsonResponse($orderCheckoutWorker->checkoutOrder($jsonResponse->id));
} catch (OrderCheckException $e) {
return new JsonResponse([
'result' => false,
'keepState' => true,
'message' => $e->getMessage(),
]);
}
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/getReturnCheckData")
*
* @throws \Exception
*/
public function GetReturnCheckDataAction(Request $request, ReturnCheckoutWorker $returnCheckoutWorker)
{
$jsonResponse = json_decode($request->getContent());
$data = $returnCheckoutWorker->getReturnCheckData($jsonResponse->id);
return new JsonResponse([
'id' => $jsonResponse->id,
'items' => $data ?? [],
'error' => null,
'result' => !empty($data),
]);
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/submitReturnCheckout")
*/
public function submitReturnCheckout(Request $request, ReturnCheckoutWorker $returnCheckoutWorker)
{
$jsonResponse = json_decode($request->getContent());
try {
if (findModule(\Modules::PRODUCTS_SERIAL_NUMBERS)) {
$returnCheckoutWorker->checkoutReturnSerialNumbers($jsonResponse->items);
}
if (findModule(\Modules::PRODUCTS_BATCHES)) {
$returnCheckoutWorker->checkoutReturnBatchNumbers($jsonResponse->items);
}
return new JsonResponse($returnCheckoutWorker->checkoutReturn($jsonResponse->id, $jsonResponse->items));
} catch (OrderCheckException $e) {
return new JsonResponse([
'result' => false,
'keepState' => true,
'message' => $e->getMessage(),
]);
}
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/getStockInData")
*
* @throws \Exception
*/
public function GetStockInDataAction(Request $request, StockInWorker $stockInWorker)
{
$jsonResponse = json_decode($request->getContent());
$stockIn = $stockInWorker->getStockIn($jsonResponse->id);
if (empty($stockIn['code'])) {
$result = false;
$error = 'Naskladňující faktura nemá vyplněné "Číslo faktury"!';
return new JsonResponse([
'id' => $jsonResponse->id,
'items' => [],
'result' => $result,
'error' => $error,
]);
}
$data = $stockInWorker->getStockInData($jsonResponse->id);
$result = !empty($data);
$error = null;
return new JsonResponse([
'id' => $jsonResponse->id,
'items' => $data,
'result' => $result,
'error' => $error,
]);
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/submitStockIn")
*
* @throws \Exception
*/
public function submitStockInAction(Request $request, StockInWorker $stockInWorker)
{
$jsonResponse = json_decode($request->getContent());
try {
$result = ['result' => $stockInWorker->submitStockIn($jsonResponse->id, $jsonResponse->items)];
} catch (StockInException $e) {
$result = [
'result' => false,
'message' => 'message: '.$e->getMessage(),
];
}
return new JsonResponse($result);
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/getReclamationSupplierCheckData")
*
* @throws \Exception
*/
public function getReclamationSupplierCheckDataAction(Request $request, ReclamationSupplierCheckoutWorker $reclamationSupplierCheckoutWorker)
{
$jsonResponse = json_decode($request->getContent());
$data = $reclamationSupplierCheckoutWorker->getReclamationSupplierCheckData($jsonResponse->id);
return new JsonResponse([
'id' => $jsonResponse->id,
'items' => $data ?? [],
'error' => null,
'result' => !empty($data),
]);
}
/**
* @return \Symfony\Component\HttpFoundation\Response
*
* @Route("/_warehouse/check-app/submitReclamationSupplierCheckout")
*/
public function submitReclamationSupplierCheckout(Request $request, ReclamationSupplierCheckoutWorker $reclamationSupplierCheckoutWorker)
{
$jsonResponse = json_decode($request->getContent());
try {
return new JsonResponse($reclamationSupplierCheckoutWorker->checkoutReclamationSupplier($jsonResponse->id, $jsonResponse->items));
} catch (OrderCheckException $e) {
return new JsonResponse([
'result' => false,
'keepState' => true,
'message' => $e->getMessage(),
]);
}
}
}