ok
Direktori : /home2/selectio/www/ecommerce-website/website/app/Http/Controllers/api/v1/ |
Current File : /home2/selectio/www/ecommerce-website/website/app/Http/Controllers/api/v1/CartController.php |
<?php namespace App\Http\Controllers\api\v1; use App\CPU\CartManager; use App\CPU\Helpers; use App\Http\Controllers\Controller; use App\Model\Cart; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use function App\CPU\translate; class CartController extends Controller { public function cart(Request $request) { $user = Helpers::get_customer($request); $cart = Cart::with('product:id,name,slug,current_stock,minimum_order_qty,variation') ->where(['customer_id' => $user->id]) ->get(); if($cart) { foreach($cart as $key => $value){ if(!isset($value['product'])){ $cart_data = Cart::find($value['id']); $cart_data->delete(); unset($cart[$key]); } } $cart->map(function ($data) { $data['choices'] = json_decode($data['choices']); $data['variations'] = json_decode($data['variations']); $data['product']['total_current_stock'] = isset($data['product']['current_stock']) ? $data['product']['current_stock'] : 0; if (isset($data['product']['variation']) && !empty($data['product']['variation'])) { $variants = json_decode($data['product']['variation']); foreach ($variants as $var) { if ($data['variant'] == $var->type) { $data['product']['total_current_stock'] = $var->qty; } } } unset($data['product']['variation']); return $data; }); } return response()->json($cart, 200); } public function add_to_cart(Request $request) { $validator = Validator::make($request->all(), [ 'id' => 'required', 'quantity' => 'required', ], [ 'id.required' => translate('Product ID is required!') ]); if ($validator->errors()->count() > 0) { return response()->json(['errors' => Helpers::error_processor($validator)]); } $cart = CartManager::add_to_cart($request); return response()->json($cart, 200); } public function update_cart(Request $request) { $validator = Validator::make($request->all(), [ 'key' => 'required', 'quantity' => 'required', ], [ 'key.required' => translate('Cart key or ID is required!') ]); if ($validator->errors()->count() > 0) { return response()->json(['errors' => Helpers::error_processor($validator)]); } $response = CartManager::update_cart_qty($request); return response()->json($response); } public function remove_from_cart(Request $request) { $validator = Validator::make($request->all(), [ 'key' => 'required' ], [ 'key.required' => translate('Cart key or ID is required!') ]); if ($validator->errors()->count() > 0) { return response()->json(['errors' => Helpers::error_processor($validator)]); } $user = Helpers::get_customer($request); Cart::where(['id' => $request->key, 'customer_id' => $user->id])->delete(); return response()->json(translate('successfully_removed')); } public function remove_all_from_cart(Request $request) { $validator = Validator::make($request->all(), [ 'key' => 'required' ], [ 'key.required' => translate('Cart key or ID is required!') ]); if ($validator->errors()->count() > 0) { return response()->json(['errors' => Helpers::error_processor($validator)]); } $user = Helpers::get_customer($request); Cart::where(['customer_id' => $user->id])->delete(); return response()->json(translate('successfully_removed')); } }