/** * function to get view desktop for order detail in checkout * 1. Get cart detail * 2. return to view */ public function get_view($id = null) { // 1. Get detail Order $APIUser = new APIUser(); $result = $APIUser->getMeOrderInCart(['user_id' => Session::get('whoami')['id']]); // 2. generate from ajax to view for order detail same for index // 2.a. session carts $carts = Session::get('carts'); // 2.b. get order from API setelah shipping cost $order = $result['data']; $data = ['carts' => Session::get('carts'), 'order' => $result['data']]; // 2.c. get model view to return $model = Input::get('model') != 'mobile' ? 'desktop' : 'mobile'; return View('web_v2.components.checkout.part_total_order_' . $model)->with('data', $data); }
/** * function to store an item to cart or transaction detail * * 1. Parsing data * 2. Check quantity of varian * 3. Check logged user * 4. return data * @param current cart, changes product, changes qty, changes varian */ function addToCart($temp_carts, $product, $qtys, $varianids) { //1. Parsing data $errors = new MessageBag(); //2. Check quantity of varian foreach ($varianids as $key => $value) { //2a. get valid quantity of varian if (isset($qtys[$value]) && $qtys[$value] != 0 && isset($temp_carts[$product['id']]['varians'][$value])) { $validqty = $qtys[$value]; } elseif (isset($temp_carts[$product['id']]['varians'][$value]) && $qtys[$value] != 0) { $validqty = $temp_carts[$product['id']]['varians'][$value]['quantity']; } else { $validqty = $qtys[$value]; } //2b. collect varian from product foreach ($product['varians'] as $key2 => $value2) { if ($value2['id'] == $value) { $varianp = $value2; } } //2c. check varian stock if (isset($varianp)) { if ($varianp['current_stock'] < $validqty || $varianp['current_stock'] == 0) { $errors->add('Stock', $product['name'] . ' tidak tersedia dalam ukuran ' . $varianp['size'] . '.'); } } // else // { // $errors->add('Stock', $product['name']. ' tidak tersedia dalam ukuran yang dicari.'); // } //2d. parsing detail if (!$errors->count() && $validqty != 0 && isset($varianp)) { if (!isset($temp_carts[$product['id']])) { $temp_carts[$product['id']] = $product; $temp_carts[$product['id']]['discount'] = $product['promo_price'] != 0 ? $product['price'] - $product['promo_price'] : 0; unset($temp_carts[$product['id']]['varians']); } $temp_carts[$product['id']]['varians'][$varianp['id']] = ['varian_id' => $varianp['id'], 'sku' => $varianp['sku'], 'quantity' => $validqty, 'size' => $varianp['size'], 'current_stock' => $varianp['current_stock']]; } elseif (!$errors->count() && $validqty == 0 && isset($temp_carts[$product['id']]) && isset($varianp)) { unset($temp_carts[$product['id']]['varians'][$varianp['id']]); } } // Check if temp carts is 0 to flash session carts if (count($temp_carts) == 0) { Session::flash('carts', 'remove carts'); } elseif (count($temp_carts[$product['id']]['varians']) == 0) { unset($temp_carts[$product['id']]); } //3. Check logged user if (Session::has('whoami') && !$errors->count()) { //3a. Check cart $APIUser = new APIUser(); $order_in_cart = $APIUser->getMeOrderInCart(['user_id' => Session::get('whoami')['id']]); if ($order_in_cart['status'] != 'success') { $order['id'] = ''; $order['transactiondetails'] = []; } else { $order['id'] = $order_in_cart['data']['id']; $order['voucher_id'] = $order_in_cart['data']['voucher_id']; $order['transactiondetails'] = $order_in_cart['data']['transactiondetails']; } $order_detail = []; //3b. Check transactiondetail foreach ($temp_carts as $key => $value) { foreach ($value['varians'] as $key2 => $value2) { $id = ''; foreach ($order['transactiondetails'] as $key3 => $value3) { if ($value3['varian_id'] == $value2['varian_id']) { $id = $value3['id']; } else { $id = ''; } } $varian = ['id' => $id, 'varian_id' => $value2['varian_id'], 'quantity' => $value2['quantity'], 'price' => $value['price'], 'discount' => $value['discount']]; $order_detail[] = $varian; } } if (empty($temp_carts)) { foreach ($order['transactiondetails'] as $keyx => $valuex) { $valuex['quantity'] = 0; $order_detail[] = $valuex; } } $order['transactiondetails'] = $order_detail; $order['status'] = 'cart'; $order['user_id'] = Session::get('whoami')['id']; //3c. Store cart $result = $APIUser->postMeOrder($order); //3d. check result if (isset($result['message'])) { $errors->add('Cart', $result['message']); } } //4. return data if ($errors->count()) { return ['status' => false, 'data' => $temp_carts, 'message' => $errors]; } return ['status' => true, 'data' => $temp_carts]; }
/** * function to post login information * * @param email and password */ public function postLogin() { //check user data login $api_url = '/oauth/access_token'; $api_data = ['email' => Input::get('email'), 'password' => Input::get('password'), 'grant_type' => 'password', 'client_id' => env('CLIENT_ID'), 'client_secret' => env('CLIENT_SECRET')]; $api = new API(); $result = json_decode($api->post($api_url, $api_data), true); if ($result['status'] == "success") { $API_me = new APIUser(); Session::put('API_token_private', $result['data']['token']['token']); $whoami = $API_me->getMeDetail(['user_id' => $result['data']['me']['id'], 'token' => Session::get('API_token_private')]); Session::put('whoami', $whoami['data']); Session::put('API_token', Session::get('API_token_private')); //check user before login carts if (!Session::has('carts')) { $me_order_in_cart = $API_me->getMeOrderInCart(['user_id' => Session::get('whoami')['id']]); if ($me_order_in_cart['status'] == 'success') { $carts = $me_order_in_cart; $temp_carts = []; foreach ($carts['data']['transactiondetails'] as $k => $v) { $temp_carts[$v['varian']['product_id']] = ['product_id' => $v['varian']['product_id'], 'slug' => $v['varian']['product']['slug'], 'name' => $v['varian']['product']['name'], 'discount' => $v['discount'], 'current_stock' => $v['varian']['current_stock'], 'thumbnail' => $v['varian']['product']['thumbnail'], 'price' => $v['price']]; $temp_varian = ['varian_id' => $v['varian_id'], 'sku' => $v['varian']['sku'], 'quantity' => $v['quantity'], 'size' => $v['varian']['size'], 'current_stock' => $v['varian']['current_stock'], 'message' => null]; $temp_carts[$v['varian']['product_id']]['varians'][$v['varian']['id']] = $temp_varian; } Session::put('carts', $temp_carts); } } else { if (count(Session::get('carts')) != 0) { /* SET API TOKEN USE TOKEN PRIVATE */ $temp_carts = ['id' => '', 'user_id' => Session::get('whoami')['id'], 'transact_at' => date('Y-m-d H:i:s'), 'transactiondetails' => [], 'transactionlogs' => ['id' => '', 'status' => 'cart', 'change_at' => '', 'notes' => ''], 'payment' => [], 'shipment' => []]; $session_cart = Session::get('carts'); $temp_varian = []; foreach ($session_cart as $k => $v) { foreach ($v['varians'] as $k2 => $v2) { $temp_varian[] = ['id' => '', 'transaction_id' => '', 'quantity' => $v2['quantity'], 'price' => $v['price'], 'discount' => $v['discount'], 'varian_id' => $v2['varian_id'], 'varians' => ['id' => $v2['varian_id'], 'product_id' => $k, 'sku' => $v2['sku'], 'size' => $v2['size']]]; } } $temp_carts['transactiondetails'] = $temp_varian; $temp_carts['status'] = 'cart'; $API_order = new APIUser(); $result = $API_order->postMeOrder($temp_carts); // result if (isset($result['message'])) { $error = $result['message']; } } } if (Session::has('redirect_url')) { $redirect = Session::get('redirect_url'); Session::forget('redirect_url'); return Redirect::to($redirect); } return Redirect::route('my.balin.redeem.index'); } return Redirect::route('balin.get.login', ['type' => 'login'])->withErrors($result['message'])->with('msg-type', 'danger'); }