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))