From 5b06077a00abbc2a06a0d76f7d3e901000e69a68 Mon Sep 17 00:00:00 2001 From: Andrey Dmitrakovich Date: Sun, 2 Jun 2024 23:32:52 +0300 Subject: [PATCH] 369. product stub for notifications --- src/app/Http/Controllers/DebugController.php | 3 ++- .../UpdateAvailableSizesTableJob.php | 1 + src/app/Jobs/OneC/UpdateOfflineOrdersJob.php | 25 +++++++++++++++---- src/app/Models/Product.php | 12 +++++++++ 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/app/Http/Controllers/DebugController.php b/src/app/Http/Controllers/DebugController.php index 7e41b0c7..40691996 100644 --- a/src/app/Http/Controllers/DebugController.php +++ b/src/app/Http/Controllers/DebugController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Jobs\OneC\UpdateOfflineOrdersJob; +use App\Models\Orders\OfflineOrder; use App\Models\Orders\Order; use App\Models\User\User; use App\Services\Order\OrderItemInventoryService; @@ -16,7 +17,7 @@ public function index() { // (new OrderItemInventoryService)->outOfStock(1426); - // UpdateOfflineOrdersJob::dispatchSync(); + // (new UpdateOfflineOrdersJob)->notify(OfflineOrder::query()->find(26167)); return 'ok'; } diff --git a/src/app/Jobs/AvailableSizes/UpdateAvailableSizesTableJob.php b/src/app/Jobs/AvailableSizes/UpdateAvailableSizesTableJob.php index 60483860..513e7dc0 100644 --- a/src/app/Jobs/AvailableSizes/UpdateAvailableSizesTableJob.php +++ b/src/app/Jobs/AvailableSizes/UpdateAvailableSizesTableJob.php @@ -338,6 +338,7 @@ protected function updateAvailableSizesFromOrders(array &$availableSizes): int $productsInOrdersDebug = []; $sizesCount = OrderItem::query() ->whereIn('status_key', ['new', 'reserved', 'confirmed', 'collect', 'pickup']) + ->whereHas('statusLog') ->with('statusLog:order_item_id,stock_id') ->get(['id', 'product_id', 'size_id', 'count']) ->each(function (OrderItem $orderItem) use (&$productsInOrders, &$productsInOrdersDebug) { diff --git a/src/app/Jobs/OneC/UpdateOfflineOrdersJob.php b/src/app/Jobs/OneC/UpdateOfflineOrdersJob.php index 53662a77..0ff335e1 100644 --- a/src/app/Jobs/OneC/UpdateOfflineOrdersJob.php +++ b/src/app/Jobs/OneC/UpdateOfflineOrdersJob.php @@ -4,10 +4,12 @@ use App\Jobs\AbstractJob; use App\Models\Bots\Telegram\TelegramChat; +use App\Models\Brand; use App\Models\Logs\OrderItemStatusLog; use App\Models\OneC\OfflineOrder as OfflineOrder1C; use App\Models\Orders\OfflineOrder; use App\Models\Orders\OrderItem; +use App\Models\Product; use App\Models\Stock; use App\Models\User\User; use App\Notifications\OrderItemInventoryNotification; @@ -178,11 +180,9 @@ private function notify(OfflineOrder $offlineOrder): void } $notification = new OrderItemStatusLog(['stock_id' => $offlineOrder->stock_id]); - $orderItem = (new OrderItem([ - 'product_id' => $offlineOrder->product_id, - 'size_id' => $offlineOrder->size_id, - 'status_key' => 'complete', - ]))->setRelation('inventoryNotification', $notification); + $orderItem = (new OrderItem(['size_id' => $offlineOrder->size_id, 'status_key' => 'complete'])) + ->setRelation('product', $this->getProductFromOfflineOrder($offlineOrder)) + ->setRelation('inventoryNotification', $notification); $chat->notifyNow(new OrderItemInventoryNotification($orderItem)); } @@ -204,4 +204,19 @@ private function getChatByStockId(int $stockId): ?TelegramChat { return $this->stocks[$stockId]?->groupChat; } + + private function getProductFromOfflineOrder(OfflineOrder $offlineOrder): Product + { + if ($offlineOrder->product) { + return $offlineOrder->product; + } + + $product = new Product([ + 'id' => $offlineOrder->one_c_product_id, + 'sku' => $offlineOrder->sku, + ]); + $product->setRelation('brand', new Brand(['name' => 'Нет на сайте -'])); + + return $product; + } } diff --git a/src/app/Models/Product.php b/src/app/Models/Product.php index 3149d216..b296314a 100644 --- a/src/app/Models/Product.php +++ b/src/app/Models/Product.php @@ -291,6 +291,18 @@ public function getFallbackMediaUrl(string $collectionName = 'default', string $ }; } + /** + * Get the fallback media path. + */ + public function getFallbackMediaPath(string $collectionName = 'default', string $conversionName = ''): string + { + return match ($conversionName) { + 'thumb' => public_path('/images/no-image-100.png'), + 'catalog' => public_path('/images/no-image-300.png'), + default => public_path('/images/no-image.png'), + }; + } + /** * Сортировка товаров *