diff --git a/packages/Webkul/API/Http/Controllers/Shop/CartController.php b/packages/Webkul/API/Http/Controllers/Shop/CartController.php
index 81fec6b8b..c024cfb63 100644
--- a/packages/Webkul/API/Http/Controllers/Shop/CartController.php
+++ b/packages/Webkul/API/Http/Controllers/Shop/CartController.php
@@ -7,6 +7,8 @@ use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Event;
use Webkul\Checkout\Repositories\CartRepository;
+use Webkul\Checkout\Repositories\CartItemRepository as CartItem;
+use Webkul\API\Http\Controllers\Shop\OnePagePresenter as PresenterOne;
use Auth;
use Cart;
@@ -19,12 +21,14 @@ use Cart;
class CartController extends Controller
{
protected $customer;
-
protected $cart;
+ protected $cartItem;
- public function __construct(CartRepository $cart)
+ public function __construct(CartRepository $cart, CartItem $cartItem)
{
$this->cart = $cart;
+
+ $this->cartItem = $cartItem;
}
/**
@@ -35,11 +39,11 @@ class CartController extends Controller
public function get() {
$cart = Cart::getCart();
- if($cart->count() > 0) {
- return response()->json(['message' => 'success', 'items' => $cart]);
- } else {
+ if($cart == null || $cart == 'null') {
return response()->json(['message' => 'empty', 'items' => null]);
}
+
+ return response()->json(['message' => 'success', 'items' => $cart]);
}
/**
@@ -47,8 +51,7 @@ class CartController extends Controller
*
* @return Mixed
*/
- public function add($id)
- {
+ public function add($id) {
$result = Cart::add($id, request()->all());
if($result) {
@@ -73,12 +76,30 @@ class CartController extends Controller
return response()->json(['message' => $result, 'items' => Cart::getCart()]);
}
+ /**
+ * 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]);
+ }
+
+ $presenter = new PresenterOne();
+ $summary = $presenter->presenter($cart);
+
+ return response()->json(['message' => 'success', 'items' => $cart->items, 'summary' => $summary]);
+ }
+
/**
* Updates the quantity of the items present in the cart.
*
* @return response JSON
*/
- public function updateBeforeCheckout() {
+ public function updateOnePage() {
$request = request()->except('_token');
foreach($request['qty'] as $id => $quantity) {
@@ -92,7 +113,7 @@ class CartController extends Controller
$data['quantity'] = $value;
- Cart::updateItem($item->product_id, $data, $key);
+ $result = Cart::updateItem($item->product_id, $data, $key);
unset($item);
unset($data);
@@ -100,6 +121,6 @@ class CartController extends Controller
Cart::collectTotals();
- return response()->json(['message' => 'success']);
+ return response()->json(['message' => 'success', 'items' => Cart::getCart()]);
}
}
\ No newline at end of file
diff --git a/packages/Webkul/API/Http/Controllers/Shop/OnePagePresenter.php b/packages/Webkul/API/Http/Controllers/Shop/OnePagePresenter.php
new file mode 100644
index 000000000..619f6cb5c
--- /dev/null
+++ b/packages/Webkul/API/Http/Controllers/Shop/OnePagePresenter.php
@@ -0,0 +1,22 @@
+grand_total;
+ $cartSummary['tax_total'] = $cart->tax_total;
+ $cartSummary['total_items'] = $cart->items_count;
+ $cartSummary['total_items_qty'] = $cart->items_qty;
+ $cartSummary['total_items_qty'] = $cart->items_qty;
+
+ return $cartSummary;
+ }
+}
\ No newline at end of file
diff --git a/packages/Webkul/API/Http/api.php b/packages/Webkul/API/Http/api.php
index a3934a13d..d5a229c17 100644
--- a/packages/Webkul/API/Http/api.php
+++ b/packages/Webkul/API/Http/api.php
@@ -1,7 +1,5 @@
json(['message' => 'unauthorized'])->name('login');
-});
+
Route::group(['middleware' => 'api','namespace' => 'Webkul\API\Http\Controllers\Customer', 'prefix' => 'api/customer'], function ($router) {
Route::post('/register', 'RegistrationController@create');
});
@@ -48,6 +46,10 @@ Route::group(['namespace' => 'Webkul\API\Http\Controllers\Shop', 'prefix' => 'ap
Route::post('add/{id}', 'CartController@add');
//remove item to the cart
Route::get('remove/{id}', 'CartController@remove');
+ //get cart and all item for cart checkout
+ Route::get('/onepage', 'CartController@onePage');
+ //update OnePage
+ Route::put('/update/onepage', 'CartController@updateOnePage');
});
Route::group(['namespace' => 'Webkul\API\Http\Controllers\Product', 'prefix' => 'api/product'], function ($router) {
diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php
index f3db9139d..eb3f5651c 100644
--- a/packages/Webkul/Checkout/src/Cart.php
+++ b/packages/Webkul/Checkout/src/Cart.php
@@ -325,7 +325,9 @@ class Cart {
/**
* Update the cartItem on cart checkout page and if already added item is added again
- *
+ * @param $id product_id of cartItem instance
+ * @param $data new requested quantities by customer
+ * @param $itemId is id from cartItem instance
* @return boolean
*/
public function updateItem($id, $data, $itemId)
@@ -371,7 +373,6 @@ class Cart {
return false;
}
-
}
/**
diff --git a/packages/Webkul/Checkout/src/Models/Cart.php b/packages/Webkul/Checkout/src/Models/Cart.php
index dcd18493b..201e5b2d2 100644
--- a/packages/Webkul/Checkout/src/Models/Cart.php
+++ b/packages/Webkul/Checkout/src/Models/Cart.php
@@ -19,10 +19,16 @@ class Cart extends Model
protected $with = ['items', 'items.child', 'shipping_address', 'billing_address', 'selected_shipping_rate', 'payment'];
+ /**
+ * To get relevant associated items with the cart instance
+ */
public function items() {
return $this->hasMany(CartItem::class)->whereNull('parent_id');
}
+ /**
+ * To get all the associated items with the cart instance even the parent and child items of configurable products
+ */
public function all_items() {
return $this->hasMany(CartItem::class);
}
diff --git a/packages/Webkul/Shop/src/Http/Controllers/CartController.php b/packages/Webkul/Shop/src/Http/Controllers/CartController.php
index 3b17ca820..972af7ef3 100644
--- a/packages/Webkul/Shop/src/Http/Controllers/CartController.php
+++ b/packages/Webkul/Shop/src/Http/Controllers/CartController.php
@@ -86,8 +86,6 @@ class CartController extends Controller
* @return Mixed
*/
public function add($id) {
- dd($id, request()->all());
-
$result = Cart::add($id, request()->except('_token'));
if($result) {
diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php
index 160ed765c..8b3edeb2b 100644
--- a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php
+++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php
@@ -65,13 +65,15 @@
{{ __('shop::app.checkout.cart.remove-link') }}
-
- @if($item->parent_id != 'null' ||$item->parent_id != null)
- {{ __('shop::app.checkout.cart.move-to-wishlist') }}
- @else
- {{ __('shop::app.checkout.cart.move-to-wishlist') }}
- @endif
-
+ @auth('customer')
+
+ @if($item->parent_id != 'null' ||$item->parent_id != null)
+ {{ __('shop::app.checkout.cart.move-to-wishlist') }}
+ @else
+ {{ __('shop::app.checkout.cart.move-to-wishlist') }}
+ @endif
+
+ @endauth
@if (!cart()->isItemHaveQuantity($item))