403Webshell
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 :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/boxberry.delivery/lib/controllers/order.php
<?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
                ])
            ]
        );
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit