Example #1
0
 /**
  * function to cancel order
  *
  * @return redirect url
  */
 public function destroy($id = null)
 {
     //1.  ambil data order detail dari API
     $APIUser = new APIUser();
     $me_order_detail = $APIUser->getMeOrderDetail(['user_id' => Session::get('whoami')['id'], 'order_id' => $id]);
     if ($me_order_detail['status'] != 'success') {
         \App::abort(404);
     }
     //2.  Set status cancel
     $me_order_detail['data']['status'] = 'canceled';
     //3.  Store order
     $order = $APIUser->postMeOrder($me_order_detail['data']);
     //4. Check order
     if ($order['status'] != 'success') {
         $this->errors = $order['message'];
     } else {
         $infos = [];
         foreach ($this->balin['info'] as $key => $value) {
             $infos[$value['type']] = $value['value'];
         }
         $mail = new APISendMail();
         $result = $mail->cancelorder($order['data'], $infos);
         if (isset($result['message'])) {
             $this->errors = $result['message'];
         }
     }
     //5. Generate view
     $this->page_attributes->success = "Pesanan Anda sudah dibatalkan.";
     return $this->generateRedirectRoute('my.balin.profile');
 }
Example #2
0
 /**
  * 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 inform success payment
  * 
  * @return redirect url
  */
 public function vtfinish()
 {
     //1. Ambil data order detail dari API
     $APIUser = new APIUser();
     $me_order_detail = $APIUser->getMeOrderRef(['user_id' => Session::get('whoami')['id'], 'ref_number' => Input::get('order_id')]);
     if ($me_order_detail['status'] != 'success') {
         \App::abort(404);
     }
     //2a.change status
     $me_order_detail['data']['status'] = 'veirtrans_processing_payment';
     //3. Store checkout
     $order = $APIUser->postMeOrder($me_order_detail['data']);
     //4. Check order, send mail
     if ($order['status'] != 'success') {
         $this->errors = $order['message'];
     }
     Session::forget('carts');
     $this->page_attributes->success = "Pembayaran Anda sudah tersimpan, BALIN akan memproses penerimaan pembayaran Anda dalam waktu kurang dari 24 jam.";
     return $this->generateRedirectRoute('my.balin.profile', ['order_id' => $order['data']['id']]);
 }
Example #4
0
 /**
  * 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');
 }