sarga/packages/Webkul/API/Http/Controllers/Shop/CartController.php

126 lines
3.3 KiB
PHP
Raw Normal View History

2018-11-21 06:29:18 +00:00
<?php
namespace Webkul\API\Http\Controllers\Shop;
use Webkul\API\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Event;
use Webkul\Checkout\Repositories\CartRepository;
2018-11-25 13:43:30 +00:00
use Webkul\Checkout\Repositories\CartItemRepository as CartItem;
2018-11-25 15:21:21 +00:00
use Webkul\API\Http\Controllers\Shop\Presenter as Presenter;
2018-11-24 09:56:31 +00:00
use Auth;
2018-11-24 13:54:54 +00:00
use Cart;
2018-11-21 06:29:18 +00:00
/**
* Cart controller for the APIs of User Cart
*
* @author Prashant Singh <prashant.singh852@webkul.com> @prashant-webkul
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class CartController extends Controller
{
protected $customer;
protected $cart;
2018-11-25 13:43:30 +00:00
protected $cartItem;
2018-11-21 06:29:18 +00:00
2018-11-25 13:43:30 +00:00
public function __construct(CartRepository $cart, CartItem $cartItem)
2018-11-21 06:29:18 +00:00
{
$this->cart = $cart;
2018-11-25 13:43:30 +00:00
$this->cartItem = $cartItem;
2018-11-24 13:54:54 +00:00
}
/**
* Function to get the current cart instance for customer or guest
*
* @return Response array && Collection Cart
*/
public function get() {
$cart = Cart::getCart();
2018-11-21 06:29:18 +00:00
2018-11-25 13:43:30 +00:00
if($cart == null || $cart == 'null') {
2018-11-24 13:54:54 +00:00
return response()->json(['message' => 'empty', 'items' => null]);
2018-11-21 06:29:18 +00:00
}
2018-11-25 13:43:30 +00:00
return response()->json(['message' => 'success', 'items' => $cart]);
2018-11-21 06:29:18 +00:00
}
2018-11-24 13:54:54 +00:00
/**
* Function for guests user to add the product in the cart.
*
* @return Mixed
*/
2018-11-25 13:43:30 +00:00
public function add($id) {
2018-11-24 13:54:54 +00:00
$result = Cart::add($id, request()->all());
2018-11-24 09:56:31 +00:00
2018-11-24 13:54:54 +00:00
if($result) {
Cart::collectTotals();
2018-11-21 06:29:18 +00:00
2018-11-24 13:54:54 +00:00
return response()->json(['message' => 'successful', 'items' => Cart::getCart()->items]);
2018-11-21 06:29:18 +00:00
} else {
2018-11-24 13:54:54 +00:00
return response()->json(['message' => 'failed', 'items' => Cart::getCart()->items]);
2018-11-21 06:29:18 +00:00
}
}
2018-11-24 13:54:54 +00:00
/**
* Removes the item from the cart if it exists
*
* @param integer $itemId
*/
public function remove($itemId) {
$result = Cart::removeItem($itemId);
Cart::collectTotals();
return response()->json(['message' => $result, 'items' => Cart::getCart()]);
2018-11-21 06:29:18 +00:00
}
2018-11-24 09:56:31 +00:00
2018-11-25 13:43:30 +00:00
/**
* Before checkout starts or full details on the cart
*
* @return response json
*/
public function onePage() {
$cart = Cart::getCart();
if($cart == null || $cart == 'null') {
return response()->json(['message' => 'empty', 'items' => null]);
}
2018-11-25 15:21:21 +00:00
$presenter = new Presenter();
$summary = $presenter->onePagePresenter($cart);
2018-11-25 13:43:30 +00:00
return response()->json(['message' => 'success', 'items' => $cart->items, 'summary' => $summary]);
}
2018-11-24 09:56:31 +00:00
/**
2018-11-24 13:54:54 +00:00
* Updates the quantity of the items present in the cart.
*
* @return response JSON
2018-11-24 09:56:31 +00:00
*/
2018-11-25 13:43:30 +00:00
public function updateOnePage() {
2018-11-24 13:54:54 +00:00
$request = request()->except('_token');
foreach($request['qty'] as $id => $quantity) {
if($quantity <= 0) {
return response()->json(['message' => 'Illegal Quantity', 'status' => 'error']);
}
}
foreach($request['qty'] as $key => $value) {
$item = $this->cartItem->findOneByField('id', $key);
$data['quantity'] = $value;
2018-11-25 13:43:30 +00:00
$result = Cart::updateItem($item->product_id, $data, $key);
2018-11-24 13:54:54 +00:00
unset($item);
unset($data);
}
Cart::collectTotals();
2018-11-25 13:43:30 +00:00
return response()->json(['message' => 'success', 'items' => Cart::getCart()]);
2018-11-24 09:56:31 +00:00
}
2018-11-21 06:29:18 +00:00
}