1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
namespace App\Http\Controllers;
use Darryldecode\Cart\CartCondition;
class CartController extends Controller
{
public function index()
{
$userId = 1; // get this from session or wherever it came from
if(request()->ajax())
{
$items = [];
\Cart::session($userId)->getContent()->each(function($item) use (&$items)
{
$items[] = $item;
});
return response(array(
'success' => true,
'data' => $items,
'message' => 'cart get items success'
),200,[]);
}
else
{
return view('cart');
}
}
public function add()
{
$userId = 1; // get this from session or wherever it came from
$id = request('id');
$name = request('name');
$price = request('price');
$qty = request('qty');
$customAttributes = [
'color_attr' => [
'label' => 'red',
'price' => 10.00,
],
'size_attr' => [
'label' => 'xxl',
'price' => 15.00,
]
];
$item = \Cart::session($userId)->add($id, $name, $price, $qty, $customAttributes);
return response(array(
'success' => true,
'data' => $item,
'message' => "item added."
),201,[]);
}
public function addCondition()
{
$userId = 1; // get this from session or wherever it came from
/** @var \Illuminate\Validation\Validator $v */
$v = validator(request()->all(),[
'name' => 'required|string',
'type' => 'required|string',
'target' => 'required|string',
'value' => 'required|string',
]);
if($v->fails())
{
return response(array(
'success' => false,
'data' => [],
'message' => $v->errors()->first()
),400,[]);
}
$name = request('name');
$type = request('type');
$target = request('target');
$value = request('value');
$cartCondition = new CartCondition([
'name' => $name,
'type' => $type,
'target' => $target, // this condition will be applied to cart's subtotal when getSubTotal() is called.
'value' => $value,
'attributes' => array()
]);
\Cart::session($userId)->condition($cartCondition);
return response(array(
'success' => true,
'data' => $cartCondition,
'message' => "condition added."
),201,[]);
}
public function clearCartConditions()
{
$userId = 1; // get this from session or wherever it came from
\Cart::session($userId)->clearCartConditions();
return response(array(
'success' => true,
'data' => [],
'message' => "cart conditions cleared."
),200,[]);
}
public function delete($id)
{
$userId = 1; // get this from session or wherever it came from
\Cart::session($userId)->remove($id);
return response(array(
'success' => true,
'data' => $id,
'message' => "cart item {$id} removed."
),200,[]);
}
public function details()
{
$userId = 1; // get this from session or wherever it came from
// get subtotal applied condition amount
$conditions = \Cart::session($userId)->getConditions();
// get conditions that are applied to cart sub totals
$subTotalConditions = $conditions->filter(function (CartCondition $condition) {
return $condition->getTarget() == 'subtotal';
})->map(function(CartCondition $c) use ($userId) {
return [
'name' => $c->getName(),
'type' => $c->getType(),
'target' => $c->getTarget(),
'value' => $c->getValue(),
];
});
// get conditions that are applied to cart totals
$totalConditions = $conditions->filter(function (CartCondition $condition) {
return $condition->getTarget() == 'total';
})->map(function(CartCondition $c) {
return [
'name' => $c->getName(),
'type' => $c->getType(),
'target' => $c->getTarget(),
'value' => $c->getValue(),
];
});
return response(array(
'success' => true,
'data' => array(
'total_quantity' => \Cart::session($userId)->getTotalQuantity(),
'sub_total' => \Cart::session($userId)->getSubTotal(),
'total' => \Cart::session($userId)->getTotal(),
'cart_sub_total_conditions_count' => $subTotalConditions->count(),
'cart_total_conditions_count' => $totalConditions->count(),
),
'message' => "Get cart details success."
),200,[]);
}
} |
Partager