Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/boxberry.delivery/lib/controllers/ |
Upload File : |
<?php namespace Boxberry\Delivery\Controllers; use Bitrix\Main\Engine\Controller; use Bitrix\Main\Engine\Response\AjaxJson; use Bitrix\Main\Engine\ActionFilter; use Bitrix\Main\Error; use Bitrix\Main\ErrorCollection; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Web\Json; use Boxberry\Api\Client; use Boxberry\Bitrix\OrdersTable; use Boxberry\Delivery\ActionFilter\Referer; Loc::loadMessages(__FILE__); class Order extends Controller { public function parselCreateAction($orderId, $print = false): AjaxJson { if (intval($orderId) <= 0) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('ORDER_ID_IS_NOT_SPECIFIED'))])); } if (!OrdersTable::isOrderWithBbDelivery($orderId)) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('DELIVERY_IS_NOT_BOXBERRY'))])); } if ($print) { $successMessage = Loc::getMessage('STICKER_RECEIVED_WAIT_FOR_PRINT_PAGE'); if ($filePath = Client::getFilePathByrOrderId($orderId)) { return AjaxJson::createSuccess(['message' => $successMessage, 'path' => $filePath]); } $stickersUrl = OrdersTable::getStickersUrlByOrderId($orderId); if ($stickersUrl->isSuccess()) { $stickersFile = Client::downloadFile($stickersUrl->getData()['STICKERS'], 'label_' . $orderId . '.pdf'); if ($stickersFile->isSuccess()) { return AjaxJson::createSuccess(['message' => $successMessage, 'path' => $stickersFile->getData()['path']]); } } } $result = \Boxberry\Bitrix\Handlers\Order::runParselCreate($orderId); if ($result->isSuccess() && $print) { $stickerUrl = $result->getData()['label']; $filePath = Client::downloadFile($stickerUrl, 'label_' . $orderId . '.pdf')->getData()['path']; $result->setData(['message' => $successMessage, 'path' => $filePath]); return AjaxJson::createSuccess($result->getData()); } if ($result->isSuccess()) { return AjaxJson::createSuccess($result->getData()); } return AjaxJson::createError(new ErrorCollection($result->getErrors())); } public function parselSendAction($orderId): AjaxJson { if (empty($orderId)) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('ORDER_ID_IS_NOT_SPECIFIED'))])); } $orderIds = explode(',', $orderId); $actFileNamesResult = OrdersTable::getActFileNamesByOrderIds($orderIds); if (!$actFileNamesResult->isSuccess()) { return AjaxJson::createError(new ErrorCollection($actFileNamesResult->getErrors())); } $actFileNames = $actFileNamesResult->getData(); $actFilesPaths = []; $missingOrderIds = []; foreach ($orderIds as $orderId) { if (isset($actFileNames[$orderId])) { $actFilesPaths[$orderId] = Client::getFilePathByName($actFileNames[$orderId]); } else { $missingOrderIds[] = $orderId; } } if (!empty($missingOrderIds) && !empty($actFilesPaths)) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('CAN_NOT_ADD_SELECTED_ORDERS_IN_ONE_ACT_BECAUSE_FOR_ORDERS') . implode(', ', $missingOrderIds) . Loc::getMessage('ACT_IS_NOT_FORMED_BUT_FOR_ORDERS') . implode(', ', array_diff($orderIds, $missingOrderIds)) . Loc::getMessage('ACT_IS_FORMED'), 0, ['missingOrderIds' => $missingOrderIds, 'actFileNames' => $actFileNames])])); } if (!empty($actFilesPaths) && empty($missingOrderIds)) { foreach ($actFilesPaths as $orderId => $filePath) { if ($filePath === null && ($actUrl = OrdersTable::getActUrlByOrderId($orderId)) && $actUrl->isSuccess()) { $fileName = Client::makeActFileNameByOrderIds($orderIds); if ($actFile = Client::downloadFile($actUrl->getData()['ACT'], $fileName)) { OrdersTable::saveActFileName($orderId, $fileName); $actFilesPaths[$orderId] = $actFile->getData()['path']; } else { return AjaxJson::createError(new ErrorCollection($actFile->getErrors())); } } } return AjaxJson::createSuccess($actFilesPaths); } $result = \Boxberry\Bitrix\Handlers\Order::runParselSendMulti($orderIds); if ($result->isSuccess()) { return AjaxJson::createSuccess($result->getData()); } return AjaxJson::createError(new ErrorCollection($result->getErrors())); } public function downloadFileAction($url, $fileName): AjaxJson { if (empty($url)) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('FILE_URL_IS_NOT_SPECIFIED'))])); } if (empty($fileName)) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('FILE_NAME_IS_NOT_SPECIFIED'))])); } $result = Client::downloadFile($url, $fileName); if ($result->isSuccess()) { return AjaxJson::createSuccess($result->getData()); } return AjaxJson::createError(new ErrorCollection($result->getErrors())); } public function getOrderDataAction($orderId, $deliveryId): AjaxJson { if (intval($orderId) <= 0) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('ORDER_ID_IS_NOT_SPECIFIED'))])); } $result = \Boxberry\Bitrix\Handlers\Order::getOrderData($orderId, $deliveryId); if ($result->isSuccess()) { return AjaxJson::createSuccess($result->getData()); } return AjaxJson::createError(new ErrorCollection($result->getErrors())); } public function updateAction($orderId, $data): AjaxJson { if (intval($orderId) <= 0) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('ORDER_ID_IS_NOT_SPECIFIED'))])); } $updateResult = \Boxberry\Bitrix\Handlers\Order::updateOrderDataFromAdmin($orderId, Json::decode(Client::convertEncoding($data))); if ($updateResult->isSuccess()) { return AjaxJson::createSuccess($updateResult->getData()); } return AjaxJson::createError(new ErrorCollection($updateResult->getErrors())); } public function calculateAction($orderId, $deliveryId, $data = []): AjaxJson { if (intval($orderId) <= 0) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('ORDER_ID_IS_NOT_SPECIFIED'))])); } if (intval($deliveryId) <= 0) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('DELIVERY_ID_IS_NOT_SPECIFIED'))])); } $calculateResult = \Boxberry\Bitrix\Handlers\Order::calculateDeliveryCostFromAdmin($orderId, $deliveryId, Json::decode(Client::convertEncoding($data))); if ($calculateResult->isSuccess()) { return AjaxJson::createSuccess($calculateResult->getData()); } return AjaxJson::createError(new ErrorCollection($calculateResult->getErrors())); } public function getOrderTrackingDataAction($orderId): AjaxJson { if (intval($orderId) <= 0) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('ORDER_ID_IS_NOT_SPECIFIED'))])); } $trackingData = \Boxberry\Bitrix\Handlers\Order::getOrderTrackingData($orderId); if ($trackingData->isSuccess()) { return AjaxJson::createSuccess($trackingData->getData()); } return AjaxJson::createError(new ErrorCollection($trackingData->getErrors())); } public function cancelAction($orderId, $cancelType = '1'): AjaxJson { if (intval($orderId) <= 0) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('ORDER_ID_IS_NOT_SPECIFIED'))])); } $result = \Boxberry\Bitrix\Handlers\Order::cancelOrder($orderId, $cancelType); if ($result->isSuccess()) { return AjaxJson::createSuccess($result->getData()); } return AjaxJson::createError(new ErrorCollection($result->getErrors())); } public function getPlacesAction($orderId, $deliveryId): AjaxJson { if (intval($orderId) <= 0) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('ORDER_ID_IS_NOT_SPECIFIED'))])); } if (intval($deliveryId) <= 0) { return AjaxJson::createError(new ErrorCollection([new Error(Loc::getMessage('DELIVERY_ID_IS_NOT_SPECIFIED'))])); } $places = \Boxberry\Bitrix\Handlers\Order::getOrderPlaces($orderId, $deliveryId); if ($places->isSuccess()) { return AjaxJson::createSuccess($places->getData()); } return AjaxJson::createError(new ErrorCollection($places->getErrors())); } public function changeStorageDateAction($date, $trackNumber, $deliveryId): AjaxJson { $result = \Boxberry\Bitrix\Handlers\Order::changeStorageDateFromAdmin($date, $trackNumber, $deliveryId); if ($result->isSuccess()) { return AjaxJson::createSuccess($result->getData()); } return AjaxJson::createError(new ErrorCollection($result->getErrors())); } protected function getDefaultPreFilters(): array { return array_merge( parent::getDefaultPreFilters(), [ new ActionFilter\Cors(), new ActionFilter\Scope(ActionFilter\Scope::AJAX), new Referer([ Referer::SALE_ORDER_VIEW_REFERER, Referer::SALE_ORDER_REFERER ]) ] ); } }