%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.142.133.147 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/lib/numerator/service/ |
Upload File : |
<?php namespace Bitrix\Main\Numerator\Service; use Bitrix\Main\Entity\ReferenceField; use Bitrix\Main\Error; use Bitrix\Main\Localization\Loc; use Bitrix\Main\Numerator\Generator\SequentNumberGenerator; use Bitrix\Main\Numerator\Model\NumeratorSequenceTable; use Bitrix\Main\Numerator\Model\NumeratorTable; use Bitrix\Main\Numerator\Numerator; use Bitrix\Main\Result; /** * Class NumeratorRequestManager * @package Bitrix\Main\Numerator\Model */ class NumeratorRequestManager { /*** @var \Bitrix\Main\HttpRequest */ private $request; /** * NumeratorRequestManager constructor. * @param \Bitrix\Main\HttpRequest $request */ public function __construct($request) { $this->request = $request; } /** * @return \Bitrix\Main\Entity\AddResult|\Bitrix\Main\Entity\UpdateResult|Result * @throws \Bitrix\Main\ArgumentException * @throws \Bitrix\Main\NotImplementedException * @throws \Bitrix\Main\ObjectException * @throws \Bitrix\Main\ObjectPropertyException * @throws \Bitrix\Main\SystemException */ public function saveFromRequest() { $numeratorConfig = $this->request->getPost(Numerator::getType()); $id = $numeratorConfig ['id']; if ($id) { $result = $this->updateNextSequentialNumber($id); if ($result->isSuccess()) { $result = Numerator::update($id, $this->request->getPostList()->toArray()); } } else { $numerator = Numerator::create(); $result = $numerator->setConfig($this->request->getPostList()->toArray()); if ($result->isSuccess()) { $result = $numerator->save(); } } return $result; } /** * @param $id * @return Result * @throws \Bitrix\Main\ArgumentException * @throws \Bitrix\Main\ObjectPropertyException * @throws \Bitrix\Main\SystemException */ private function updateNextSequentialNumber($id) { $sequenceConfig = $this->request->getPost(SequentNumberGenerator::getType()); $result = new Result(); if ($sequenceConfig !== null && is_array($sequenceConfig) && array_key_exists('nextNumberForSequence', $sequenceConfig) && $sequenceConfig['nextNumberForSequence']) { $nextNumber = $sequenceConfig['nextNumberForSequence']; if (is_numeric($nextNumber)) { $sequence = NumeratorTable::query() ->registerRuntimeField('', new ReferenceField( 'ref', NumeratorSequenceTable::class, ['=this.ID' => 'ref.NUMERATOR_ID'] ) ) ->addSelect(('ID')) ->addSelect('ref.NEXT_NUMBER', 'NEXT_NUMBER') ->addSelect('ref.TEXT_KEY', 'TEXT_KEY') ->where('ID', $id) ->exec() ->fetchAll(); if ($sequence && count($sequence) == 1) { $numerator = Numerator::load($id); if ($numerator) { $res = $numerator->setNextSequentialNumber($nextNumber, $sequence[0]['NEXT_NUMBER'], $sequence[0]['TEXT_KEY']); if (!$res->isSuccess()) { $errors = $res->getErrors(); return $result->addError($errors[0]); } } } } else { return $result->addError(new Error(Loc::getMessage('MAIN_NUMERATOR_EDIT_ERROR_NUMBER_NOT_NUMERIC'))); } } return $result; } }