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;
 }