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/grain.iiko/lib/ |
Upload File : |
<?php namespace Grain\Iiko; use \Bitrix\Main\Entity; use \Bitrix\Main\Type; use \Bitrix\Main\Localization\Loc; use \Grain\Iiko\Rest; Loc::loadMessages(__FILE__); class CommandStatusTable extends Entity\DataManager { const maxAttempts = 20; const maxElements = 50; /* public static function getTableName() { return 'b_grain_iiko_command_status'; // auto create } */ public static function getUfId() { return 'GRAIN_IIKO_COMMAND_STATUS'; } /*public static function getConnectionName() { return 'default'; } */ public static function getMap() { return array( new Entity\IntegerField('ID', array( 'primary' => true, 'autocomplete' => true )), new Entity\StringField('ENTITY', array( 'required' => true, )), new Entity\IntegerField('ENTITY_ID', array( 'required' => true, )), new Entity\StringField('ENTITY_EXTERNAL_ID', array( 'required' => true, )), new Entity\IntegerField('RESTAURANT_ID', array( 'required' => true, )), new Entity\StringField('CORRELATION_ID', array( 'required' => true, )), new Entity\IntegerField('ATTEMPTS', array( 'default_value' => 0, )), ); } public static function sync() { $resultCommandStatus = static::getList(array( 'order' => array('ID'=>'ASC'), 'limit' => static::maxElements, )); while($row = $resultCommandStatus->fetch()) { $result = Rest::getCommandStatus($row['CORRELATION_ID'],$row['RESTAURANT_ID']); switch($row['ENTITY']) { case 'ORDER': $order = \Bitrix\Sale\Order::load($row['ENTITY_ID']); if(!$order) continue; if(isset($result['result']['state']) && $result['result']['state']=='InProgress') { $attempts = $row['ATTEMPTS']+1; if($attempts>static::maxAttempts) { static::delete($row['ID']); \Grain\Iiko\Order::setAdditionalInfoField('sendStatus','FinalInProgress',$order); $order->save(); } else { static::update($row['ID'],array( 'ATTEMPTS' => $attempts, )); } } elseif(isset($result['result']['state']) && $result['result']['state']=='Success') { \CEventLog::Add(array( "SEVERITY" => "CUSTOM", "AUDIT_TYPE_ID" => "GRAIN_IIKO_ORDER_SUCCESS", "MODULE_ID" => "grain.iiko", "ITEM_ID" => $row['ENTITY_ID'], "DESCRIPTION" => "Command status: ".$result['result']['state'], )); \Grain\Iiko\Order::setAdditionalInfoField('sendStatus','FinalSuccess',$order); $order->save(); static::delete($row['ID']); } elseif(isset($result['result']) && !isset($result['error'])) { \CEventLog::Add(array( "SEVERITY" => "CUSTOM", "AUDIT_TYPE_ID" => "GRAIN_IIKO_ORDER_ERROR", "MODULE_ID" => "grain.iiko", "ITEM_ID" => $row['ENTITY_ID'], "DESCRIPTION" => "Command status: ".print_r($result['result'],true), )); \Grain\Iiko\Order::setAdditionalInfoField('sendStatus','FinalError',$order); $order->save(); } elseif(isset($result['error'])) { \CEventLog::Add(array( "SEVERITY" => "CUSTOM", "AUDIT_TYPE_ID" => "GRAIN_IIKO_ORDER_ERROR", "MODULE_ID" => "grain.iiko", "ITEM_ID" => $row['ENTITY_ID'], "DESCRIPTION" => "Command status: ".$result['error'], )); \Grain\Iiko\Order::setAdditionalInfoField('sendStatus','FinalError',$order); $order->save(); static::delete($row['ID']); } break; } } return '\\'.__METHOD__.'();'; } }