File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Services/CartService.php
Back
<?php /** * CartService * Handles user shopping cart business logic, variations, dynamic pricing and stock validations */ require_once __DIR__ . '/../Models/Cart.php'; require_once __DIR__ . '/../Models/Product.php'; class CartService { private Cart $cartModel; private Product $productModel; public function __construct() { $this->cartModel = new Cart(); $this->productModel = new Product(); } public function getCart(int $userId): array { return $this->cartModel->getCartItemsGrouped($userId); } public function getCartCount(int $userId): int { return $this->cartModel->getCartItemCount($userId); } public function addItem(int $userId, int $productId, int $quantity = 1, ?string $variationSummary = null, ?float $unitPrice = null, ?int $skuId = null): array { $product = $this->productModel->findById($productId); if (!$product || $product['status'] !== 'active' || !empty($product['deleted_at'])) { return ['success' => false, 'message' => 'สินค้านี้ไม่พร้อมจำหน่าย']; } $availableStock = (int)$product['stock']; if ($availableStock <= 0) { return ['success' => false, 'message' => 'สินค้าหมด']; } $cart = $this->cartModel->getOrCreateCart($userId); $cartId = (int)$cart['id']; $quantity = max(1, min($quantity, $availableStock)); // If unitPrice not specified, fallback to product base price if ($unitPrice === null || $unitPrice <= 0) { $unitPrice = (float)$product['price']; } $this->cartModel->addItem($cartId, $productId, $quantity, $variationSummary, $unitPrice, $skuId); $cartCount = $this->cartModel->getCartItemCount($userId); return [ 'success' => true, 'message' => 'เพิ่มสินค้าลงในรถเข็นเรียบร้อยแล้ว', 'cart_count' => $cartCount ]; } public function updateQuantity(int $userId, int $itemIdOrProductId, int $quantity): array { $cart = $this->cartModel->getOrCreateCart($userId); $cartId = (int)$cart['id']; $quantity = max(0, $quantity); $this->cartModel->updateQuantity($cartId, $itemIdOrProductId, $quantity); $cartData = $this->cartModel->getCartItemsGrouped($userId); return [ 'success' => true, 'cart' => $cartData ]; } public function removeItem(int $userId, int $itemIdOrProductId): array { $cart = $this->cartModel->getOrCreateCart($userId); $this->cartModel->removeItem((int)$cart['id'], $itemIdOrProductId); $cartData = $this->cartModel->getCartItemsGrouped($userId); return [ 'success' => true, 'message' => 'ลบสินค้าออกจากรถเข็นแล้ว', 'cart' => $cartData ]; } public function toggleSelect(int $userId, int $itemIdOrProductId, bool $isSelected): array { $cart = $this->cartModel->getOrCreateCart($userId); $this->cartModel->toggleSelect((int)$cart['id'], $itemIdOrProductId, $isSelected); $cartData = $this->cartModel->getCartItemsGrouped($userId); return [ 'success' => true, 'cart' => $cartData ]; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.23 |
proxy
|
phpinfo
|
Settings