public function scan()
 {
     if (Efiwebsetting::getData('checkOAuth') == 'yes') {
         IMBAuth::checkOAuth();
     }
     $id_user = isset($_GET['id_user']) ? addslashes($_GET['id_user']) : "";
     if (!$id_user) {
         Generic::errorMsg("Please login!");
     }
     if (!User::checkUserID($id_user)) {
         Generic::errorMsg("ID User not found!");
     }
     $QR = Generic::mustCheck($_GET['QR'], "No QR found!");
     $objOrder = new MasterOrderModel();
     // check, QR validapakah table free
     // table status = 0, occupied, 1 is free
     if (!Mastertable::isQRValid($QR)) {
         Generic::errorMsg("Invalid QR Code");
     }
     $objUser = new UserModel();
     $objUser->getByID($id_user);
     $objTable = Mastertable::getTableBYQR($QR);
     $id_table = $objTable[0]->id_table;
     $objTable = Mastertable::getTableID($id_table);
     $isTableFree = MasterTable::isTableFree($objTable);
     // Table free
     if ($isTableFree) {
         $paymentMethod = Generic::mustCheck($_GET['payment_method'], "Payment Method Required");
         $this->requestRestoPermission($objUser, $objTable, $paymentMethod);
     } else {
         $objOrder = MasterOrder::getActiveOrderByTableID($id_table);
         Generic::checkCountWithMsg($objOrder, "Empty ID Order!");
         $this->requestJoinTable($objUser, $objOrder);
     }
     die;
 }
 public function setTakeAwayOrder()
 {
     if (Efiwebsetting::getData('checkOAuth') == 'yes') {
         IMBAuth::checkOAuth();
     }
     $type_order = isset($_POST['type_order']) ? addslashes($_POST['type_order']) : "";
     //        echo $type_order;
     //        if (!$type_order) {
     //            Generic::errorMsg("NO Type_order found!");
     //        }
     $id_restaurant = isset($_POST['id_restaurant']) ? addslashes($_POST['id_restaurant']) : "";
     if (!$id_restaurant) {
         Generic::errorMsg("NO ID Restaurant found!");
     }
     $json = array();
     //        $jsonOrder = isset($_POST['order']) ? ($_POST['order']) : "";
     //        pr($_POST['order']);
     if (!isset($_POST['order'])) {
         $json['status_code'] = 0;
         $json['status_message'] = "No Order Found";
         echo json_encode($json);
         die;
     }
     $jsonOrder = $_POST['order'];
     $jsonArrayOrder = json_decode($jsonOrder);
     // update row di tabel Table
     // add data di tabel Order
     // add data di tabel OrderDetail
     $objTable = new MasterTableModel();
     $objOrder = new MasterOrderModel();
     foreach ($jsonArrayOrder as $key => $val) {
         //            echo $key . "=>" . $val . "<br>";
         if ($key == "id_table" || $key == "type_order" || $key == "id_restaurant") {
             $arrTable[$key] = $val;
         } elseif ($key == "detail_order") {
             $arrDetailOrder = $val;
         }
         if ($key != "detail_order") {
             $arrOrder[$key] = $val;
         }
     }
     // Check id_table apakah free atau tidak
     $arrUpdTable = $objTable->getWhere("id_table = {$arrTable['id_table']}");
     MasterDish::checkCount($arrUpdTable);
     // Meja is free
     if ($arrUpdTable[0]->status == "1") {
         // create
         foreach ($arrOrder as $key => $val) {
             $objOrder->{$key} = $val;
         }
         $objOrder->order_now = "1";
         $objOrder->datetime_order = $this->setCurrentDate();
         $objOrder->datetime_order_now = $this->setCurrentDate();
         $objOrder->type_order = $type_order;
         $objOrder->id_restaurant = $id_restaurant;
         $idOrder = $objOrder->save();
         if (!$idOrder) {
             $json['status_code'] = 0;
             $json['status_message'] = Lang::t('save failed');
         }
         // Update di row Table;
         $arrTable["id_order"] = $idOrder;
         foreach ($arrTable as $key => $val) {
             $arrUpdTable[0]->{$key} = $val;
         }
         $arrUpdTable[0]->status = "0";
         $arrUpdTable[0]->load = 1;
         $arrUpdTable[0]->save();
         foreach ($arrDetailOrder as $val) {
             $objOrderdetail = new OrderDetailModel();
             foreach ($val as $key => $o) {
                 $objOrderdetail->{$key} = $o;
             }
             $objOrderdetail->id_order = $idOrder;
             $objOrderdetail->datetime_order = $this->setCurrentDate();
             $objOrderdetail->save();
         }
     } else {
         $json['status_code'] = 0;
         $json['status_message'] = "Table " . $arrUpdTable[0]->table_number . " is occupied";
         echo json_encode($json);
         die;
     }
     $json['status_code'] = 1;
     $json['results']['ID Order'] = $idOrder;
     $objTableHlp = Mastertable::getTableID($arrTable['id_table']);
     //        id_table, id_order
     $invoice = $this->calcRechnung($objTableHlp->id_restaurant, $idOrder);
     $this->setInvoiceInOrder($objOrder, $invoice);
     $json['invoice'] = $invoice;
     //        $objOrder->total_cost = $invoice['Total'];
     //        $objOrder->load = 1;
     $objOrder->save();
     echo json_encode($json);
     die;
 }