File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Services/SellerInventoryService.php
Back
<?php /** * SellerInventoryService * Handles seller stock management, low stock alerts, and quick SKU stock updates */ require_once __DIR__ . '/../Models/Product.php'; require_once __DIR__ . '/../Models/Store.php'; require_once __DIR__ . '/../Models/ActivityLog.php'; class SellerInventoryService { private Product $productModel; private Store $storeModel; private ActivityLog $activityLog; public function __construct() { $this->productModel = new Product(); $this->storeModel = new Store(); $this->activityLog = new ActivityLog(); } private function getSellerStore(int $userId): ?array { return $this->storeModel->findByUserId($userId); } public function getInventory(int $userId, array $filters = [], int $page = 1, int $perPage = 20): array { $store = $this->getSellerStore($userId); if (!$store) { return ['products' => [], 'total' => 0, 'page' => 1, 'pages' => 0, 'filters' => $filters]; } $storeId = (int)$store['id']; $page = max(1, $page); $offset = ($page - 1) * $perPage; $total = $this->productModel->countSellerProducts($storeId, $filters); $products = $this->productModel->getSellerProducts($storeId, $filters, $perPage, $offset); // Attach SKUs to products foreach ($products as &$p) { $p['skus'] = $this->productModel->getSkus((int)$p['id']); } return [ 'products' => $products, 'total' => $total, 'page' => $page, 'pages' => ceil($total / $perPage), 'filters' => $filters, 'store' => $store ]; } public function quickAdjustStock(int $userId, int $productId, int $newStock, ?int $skuId = null): array { $store = $this->getSellerStore($userId); if (!$store) { return ['success' => false, 'message' => 'ไม่พบข้อมูลร้านค้า']; } $product = $this->productModel->findSellerProduct($productId, (int)$store['id']); if (!$product) { return ['success' => false, 'message' => 'ไม่พบสินค้า หรือคุณไม่มีสิทธิ์จัดการสินค้านี้']; } $newStock = max(0, $newStock); if ($skuId) { $this->productModel->quickUpdateSkuStock($skuId, $productId, $newStock); // Recalculate total product stock from SKUs $skus = $this->productModel->getSkus($productId); $totalStock = array_sum(array_column($skus, 'stock')); $this->productModel->quickUpdateStock($productId, (int)$store['id'], $totalStock); } else { $this->productModel->quickUpdateStock($productId, (int)$store['id'], $newStock); } $this->activityLog->record($userId, 'stock_adjusted', 'products', $productId, "Adjusted stock for product #{$productId} to {$newStock}"); return [ 'success' => true, 'message' => 'ปรับปรุงจำนวนสต็อกเรียบร้อยแล้ว', 'new_stock' => $newStock ]; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings