Skip to content

Commit 25a4407

Browse files
committed
Cart,Wishlist,Compare functionality implemented into backend & frontend
1 parent b90016a commit 25a4407

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+4487
-568
lines changed

app/Http/Controllers/Admin/LoginController.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Http\Controllers\Admin;
44

55
use App\Http\Controllers\Controller;
6+
use Gloudemans\Shoppingcart\Facades\Cart;
67
use Illuminate\Http\Request;
78
use Illuminate\Support\Facades\Auth;
89

@@ -17,6 +18,8 @@ public function __construct()
1718
public function logout()
1819
{
1920
try {
21+
$user = Auth::user();
22+
Cart::instance('default')->store($user);
2023
Auth::guard('admin')->logout();
2124
session()->flush();
2225
return response()->json([
@@ -33,5 +36,5 @@ public function logout()
3336
}
3437
protected function guard(){
3538
return Auth::guard('admin');
36-
}
39+
}
3740
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Site;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Models\ShoppingCart;
7+
use Gloudemans\Shoppingcart\Facades\Cart;
8+
use Illuminate\Http\Request;
9+
use Illuminate\Support\Facades\Auth;
10+
11+
class CartController extends Controller
12+
{
13+
/**
14+
* Display alll cart Iitem
15+
*
16+
* @return \Illuminate\Http\Response
17+
*/
18+
public function index()
19+
{
20+
// $carts = Cart::instance('default')->restore(auth()->user()->email);
21+
$carts = Cart::content();
22+
$subtotal = Cart::subtotal();
23+
$tax = Cart::tax();
24+
$total = Cart::total();
25+
$count = Cart::content()->count();
26+
return response()->json(
27+
compact('carts','subtotal','tax','total','count')
28+
, 200);
29+
}
30+
31+
32+
/**
33+
* Store a newly created resource in storage.
34+
*
35+
* @param \Illuminate\Http\Request $request
36+
* @return \Illuminate\Http\Response
37+
*/
38+
public function store(Request $request)
39+
{
40+
$this->validate($request,[
41+
'id' => 'required',
42+
'name' => 'required',
43+
'qty' => 'required',
44+
'price' => 'required',
45+
'size' => $request->size ? 'required' : '',
46+
'colour' => $request->colour ? 'required' : '',
47+
'image' => $request->image ? 'required' : '',
48+
]);
49+
50+
// Cart::store('default'); // Store to DB (We'll add before Order)
51+
$id = $request->id;
52+
$name = $request->name;
53+
$price = $request->price;
54+
$qty = $request->qty;
55+
$image = $request->image;
56+
$weight = $request->has('weight') ? $request->weight : 0;
57+
58+
$options = collect( [] );
59+
if($request->has('image')){
60+
$options = $options->merge(['image' => $request->image]);
61+
}
62+
if($request->has('size')){
63+
$options = $options->merge(['size' => $request->size]);
64+
}
65+
if($request->has('colour')){
66+
$options = $options->merge(['colour' => $request->colour]);
67+
}
68+
$requests = collect($request->only('id','name','price','weight'));
69+
$addData = $requests->merge([['options' => $options]]);
70+
71+
// $add = Cart::add(compact('id','name','qty','price','weight'),['options' => $options]);
72+
$add = Cart::add($id, $name , $qty, $price, $weight , [$options]);
73+
if(Cart::content()->has($add->rowId)){
74+
return $this->index();
75+
}
76+
77+
// return Cart::add($id, $name , $qty, $price, $weight , [$options]); // Mind It we didn't store it into Database
78+
}
79+
80+
/**
81+
* Display the specified resource.
82+
*
83+
* @param \App\Models\ShoppingCart $ShoppingCart
84+
* @return \Illuminate\Http\Response
85+
*/
86+
public function show($rowId)
87+
{
88+
if(Cart::content()->has($rowId)){
89+
return Cart::get($rowId);
90+
}
91+
return response()->json("Row Not Found",404);
92+
}
93+
94+
95+
/**
96+
* Update the specified resource in storage.
97+
*
98+
* @param \Illuminate\Http\Request $request
99+
* @param \App\Models\ShoppingCart $ShoppingCart
100+
* @return \Illuminate\Http\Response
101+
*/
102+
public function update(Request $request,$rowId)
103+
{
104+
$request->validate([
105+
'qty' => 'required|numeric|min:1'
106+
]);
107+
$edit = Cart::update($rowId,$request->qty);
108+
if(Cart::content()->has($edit->rowId)){
109+
return $this->index();
110+
}
111+
}
112+
113+
/**
114+
* Remove the specified resource from storage.
115+
*
116+
* @param \App\Models\ShoppingCart $ShoppingCart
117+
* @return \Illuminate\Http\Response
118+
*/
119+
public function destroy($rowId)
120+
{
121+
Cart::remove($rowId);
122+
return $this->index();
123+
}
124+
public function clearWholeItems()
125+
{
126+
return Cart::destroy();
127+
}
128+
129+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Site;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Models\ShoppingCart;
7+
use Gloudemans\Shoppingcart\Facades\Cart;
8+
use Illuminate\Http\Request;
9+
use Illuminate\Support\Facades\Auth;
10+
class CompareController extends Controller
11+
{
12+
13+
/**
14+
* Display alll wish Iitem
15+
*
16+
* @return \Illuminate\Http\Response
17+
*/
18+
public function index()
19+
{
20+
$compares = Cart::instance('compare')->content();
21+
$subtotal = Cart::instance('compare')->subtotal();
22+
$tax = Cart::instance('compare')->tax();
23+
$total = Cart::instance('compare')->total();
24+
$count = Cart::instance('compare')->content()->count();
25+
return response()->json(
26+
compact('compares','subtotal','tax','total','count')
27+
, 200);
28+
}
29+
30+
31+
/**
32+
* Store a newly created resource in storage.
33+
*
34+
* @param \Illuminate\Http\Request $request
35+
* @return \Illuminate\Http\Response
36+
*/
37+
public function store(Request $request)
38+
{
39+
$this->validate($request,[
40+
'id' => 'required',
41+
'name' => 'required',
42+
'qty' => 'required',
43+
'price' => 'required',
44+
'size' => $request->size ? 'required' : '',
45+
'colour' => $request->colour ? 'required' : '',
46+
'image' => $request->image ? 'required' : '',
47+
]);
48+
49+
// Cart::store('default'); // Store to DB (We'll add before Order)
50+
$id = $request->id;
51+
$name = $request->name;
52+
$price = $request->price;
53+
$qty = $request->qty;
54+
$image = $request->image;
55+
$weight = $request->has('weight') ? $request->weight : 0;
56+
57+
$options = collect( [] );
58+
if($request->has('image')){
59+
$options = $options->merge(['image' => $request->image]);
60+
}
61+
if($request->has('size')){
62+
$options = $options->merge(['size' => $request->size]);
63+
}
64+
if($request->has('colour')){
65+
$options = $options->merge(['colour' => $request->colour]);
66+
}
67+
$requests = collect($request->only('id','name','price','weight'));
68+
$addData = $requests->merge([['options' => $options]]);
69+
70+
// $add = Cart::add(compact('id','name','qty','price','weight'),['options' => $options]);
71+
$add = Cart::instance('compare')->add($id, $name , $qty, $price, $weight , [$options]);
72+
if(Cart::instance('compare')->content()->has($add->rowId)){
73+
return $this->index();
74+
}
75+
76+
// return Cart::add($id, $name , $qty, $price, $weight , [$options]); // Mind It we didn't store it into Database
77+
}
78+
79+
/**
80+
* Display the specified resource.
81+
*
82+
* @param \App\Models\ShoppingCart $ShoppingCart
83+
* @return \Illuminate\Http\Response
84+
*/
85+
public function show($rowId)
86+
{
87+
if(Cart::instance('compare')->content()->has($rowId)){
88+
return Cart::instance('compare')->get($rowId);
89+
}
90+
return response()->json("compare Not Found",404);
91+
}
92+
93+
94+
/**
95+
* Update the specified resource in storage.
96+
*
97+
* @param \Illuminate\Http\Request $request
98+
* @param \App\Models\ShoppingCart $ShoppingCart
99+
* @return \Illuminate\Http\Response
100+
*/
101+
public function update(Request $request,$rowId)
102+
{
103+
$request->validate([
104+
'qty' => 'required|numeric|min:1'
105+
]);
106+
$edit = Cart::instance('compare')->update($rowId,$request->qty);
107+
if(Cart::instance('compare')->content()->has($edit->rowId)){
108+
return $this->index();
109+
}
110+
}
111+
112+
/**
113+
* Remove the specified resource from storage.
114+
*
115+
* @param \App\Models\ShoppingCart $ShoppingCart
116+
* @return \Illuminate\Http\Response
117+
*/
118+
public function destroy($rowId)
119+
{
120+
Cart::instance('compare')->remove($rowId);
121+
return $this->index();
122+
}
123+
public function clearWholeItems()
124+
{
125+
Cart::instance('compare')->destroy();
126+
return $this->index();
127+
}
128+
129+
}

app/Http/Controllers/Site/ProductController.php

-43
Original file line numberDiff line numberDiff line change
@@ -120,16 +120,6 @@ public function index()
120120
});
121121
}
122122

123-
/**
124-
* Store a newly created resource in storage.
125-
*
126-
* @param \Illuminate\Http\Request $request
127-
* @return \Illuminate\Http\Response
128-
*/
129-
public function store(Request $request)
130-
{
131-
//
132-
}
133123

134124
/**
135125
* Display the specified resource.
@@ -148,37 +138,4 @@ public function show($slug)
148138
}
149139
}
150140

151-
/**
152-
* Show the form for editing the specified resource.
153-
*
154-
* @param int $id
155-
* @return \Illuminate\Http\Response
156-
*/
157-
public function edit($id)
158-
{
159-
//
160-
}
161-
162-
/**
163-
* Update the specified resource in storage.
164-
*
165-
* @param \Illuminate\Http\Request $request
166-
* @param int $id
167-
* @return \Illuminate\Http\Response
168-
*/
169-
public function update(Request $request, $id)
170-
{
171-
//
172-
}
173-
174-
/**
175-
* Remove the specified resource from storage.
176-
*
177-
* @param int $id
178-
* @return \Illuminate\Http\Response
179-
*/
180-
public function destroy($id)
181-
{
182-
//
183-
}
184141
}

0 commit comments

Comments
 (0)