Open sidebar
<?php namespace App\Jobs\Order; use App\Http\Controllers\OrderController; use App\Models\Mediator; use App\Presets\OrderPreset; use App\Services\Bitrix24\Bitrix24Service; use App\Services\IfNeededToUpdateOrderCheckService; use App\Services\MoiSklad\MoiSkladService; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log; class UpdateOrderJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $tries = 3; /** @var OrderPreset */ private $orderPreset; /** @var int */ private $serviceNumber; /** @var MoiSkladService */ private $moiskladService; /** @var Bitrix24Service */ private $bx24Service; /** @var bool */ private $isNeedToCreate = false; /** @var bool */ private $isNeedToUpdate = true; /** @var bool */ private $orderWasCreated = false; /** * Create a new job instance. * * @return void */ public function __construct(OrderPreset $orderPreset, int $serviceNumber) { $this->onQueue('creating_and_updating'); $this->orderPreset = $orderPreset; $this->serviceNumber = $serviceNumber; } /** * Execute the job. * * @return void * @throws \Exception */ public function handle() { $this->initializeServices(); Log::info('UpdateOrderJob@handle [$this->orderPreset]: ', $this->orderPreset->toArray()); // Получаем сделку или заказ и системы БТР или МС if ($this->serviceNumber === Mediator::BITRIX_24) { $dealInfoRequest = $this->bx24Service->getFormattedDealInfo($this->orderPreset->getBitrixId()); if ($dealInfoRequest['status'] === false) { return; } /** @var OrderPreset $orderPreset */ $orderPreset = $dealInfoRequest['data']; } elseif ($this->serviceNumber === Mediator::MOI_SKLAD) { $dealInfoRequest = $this->moiskladService->getFormattedDealInfo( 'https://online.moysklad.ru/api/remap/1.2/entity/customerorder/' . $this->orderPreset->getMoiskladId() ); if ($dealInfoRequest['status'] === false) { return; } /** @var OrderPreset $orderPreset */ $orderPreset = $dealInfoRequest['data']; } else { Log::error('UpdateOrderJob@handle | Such Service ' . "[$this->serviceNumber]" . ' is not existed!'); return; } // Получаем сделку\заказ из нашйе базы $getOrderRequest = (new OrderController())->get($orderPreset, true); if ($getOrderRequest['status'] === false) { $this->isNeedToCreate = true; $this->isNeedToUpdate = false; } if ($this->isNeedToUpdate) { /** @var OrderPreset $oldOrderPreset */ $oldOrderPreset = $getOrderRequest['data']['old_order_preset']; /** @var OrderPreset $orderPreset */ $orderPreset = $getOrderRequest['data']['order_preset']; Log::info('MediatorService@handleUpdatedOrderInService [$oldOrderPreset]: ', $oldOrderPreset->toArray()); $isNeededToUpdate = (new IfNeededToUpdateOrderCheckService($orderPreset, $oldOrderPreset))->check(); Log::info('MediatorService@handleUpdatedOrderInService [BitrixId] - ' . "[{$orderPreset->getBitrixId()}]" . ' | [$isNeededToUpdate]: ' . "[$isNeededToUpdate]"); if ( ! $isNeededToUpdate) { return; // Не нужно и не создавать и не обновлять. } } if ($this->serviceNumber === Mediator::BITRIX_24) { if ($this->isNeedToCreate) { $createOrderInMoiSkladRequest = $this->moiskladService->createOrder($orderPreset); if ($createOrderInMoiSkladRequest['status'] === false) { return; } $orderPreset = $createOrderInMoiSkladRequest['data']; $this->orderWasCreated = true; } else { $updateOrderInMoiSkladRequest = $this->moiskladService->updateOrder($orderPreset); if ($updateOrderInMoiSkladRequest['status'] === false) { return; } $orderPreset = $updateOrderInMoiSkladRequest['data']; } } elseif ($this->serviceNumber === Mediator::MOI_SKLAD) { if ($this->isNeedToCreate) { $createOrderInBitrix24Request = $this->bx24Service->createOrder($orderPreset); if ($createOrderInBitrix24Request['status'] === false) { return; } $orderPreset = $createOrderInBitrix24Request['data']; $this->orderWasCreated = true; } else { $updateOrderInBitrix24Request = $this->bx24Service->updateOrder($orderPreset); if ($updateOrderInBitrix24Request['status'] === false) { return; } $orderPreset = $updateOrderInBitrix24Request['data']; } } else { Log::error('UpdateOrderJob@handle | Such Service ' . "[$this->serviceNumber]" . ' is not existed!'); return; } if ($this->orderWasCreated) { (new OrderController())->create($orderPreset); } else { (new OrderController())->update($orderPreset); } } private function initializeServices() { $moiskladService = new MoiSkladService(); $this->moiskladService = $moiskladService; $bx24Service = new Bitrix24Service(); $this->bx24Service = $bx24Service; } }
Close sidebar
Back
Please note that all pasted data is publicly available.
X (fomerly Twitter)
GitHub
Use setting
Back
Please note that all pasted data is publicly available.
X (fomerly Twitter)
GitHub
Use setting