static function ejecutar($func, $endpoint, $request) { //Si el usuario o grupo no está configurado para Limb, se sale de estos comandos if (method_exists('ComandosLimb', $func)) { $command = new ComandosLimb(); $chatDAO = new ChatDAO(); $chat = $chatDAO->select($request->get_chat_id()); //Si el chat tiene asociado un solo grupo, se establece ese if (sizeof($chat->arrGrupo) == 1) { return $command->{$func}($endpoint, $request, $chat->arrGrupo[0]); } elseif (sizeof($chat->arrGrupo) > 1) { $currentCMDDAO = new CurrentCMDDAO(); $result = $currentCMDDAO->select($request->get_chat_id()); if ($result != null) { if ($result['grupo'] != null) { //Obtener datos grupo $grupoDAO = new GrupoDAO(); $grupoVO = $grupoDAO->select($result['grupo']); $currentCMDDAO->delete($request->get_chat_id()); return $command->{$func}($endpoint, $request, $grupoVO); } //Si hay comando en curso, se borra y se inserta este $currentCMDDAO->delete($request->get_chat_id()); } $cmd = new CurrentCMDVO(); $cmd->chat_id = $request->get_chat_id(); $cmd->cmd = $func; $resultInsertCMD = $currentCMDDAO->insert($cmd); //se pregunta por el grupo return Utils::pregunta_grupo($endpoint, $request); } else { //El chat no está dado de alta return null; } } return null; }
private function crearApuesta($endpoint, $request, $currentCMD) { $grupo = $currentCMD['grupo']; $grupoDAO = new GrupoDAO(); $grupoVO = $grupoDAO->select($currentCMD['grupo']); $urlApi = $grupoVO->url_api; $jsonTokenUser = Utils::callApi($request, 'tokenusuario/' . $request->get_chat_id() . '?token=' . TOKEN_API_BOT, $urlApi); $tokenUsuario = json_decode($jsonTokenUser, true); //Si hay token de usuario del chat, se invoca el comando con el token if ($tokenUsuario[0]['token']) { $this->log->debug("Hay token."); $idUsuario = $tokenUsuario[0]['id']; $apostarCMDDAO = new ApostarCMDDAO(); $cmd = $apostarCMDDAO->select($request->get_chat_id()); $data = array("token" => $tokenUsuario[0]['token'], "idpartido" => $cmd['partido'], "idapostante" => $idUsuario, "importe" => $cmd['importe'], "desc" => $cmd['descrip']); $data_string = json_encode($data); //Esto se podría meter en el utils $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $urlApi . '/apuestas/partido'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data_string))); $result = curl_exec($curl); $apuesta = json_decode($result); if (isset($apuesta->error)) { return $apuesta->error->text; } return null; } else { $this->log->debug("No hay token"); $emoji_alert = Utils::convert_emoji(0x26a0); $text = $emoji_alert . '*Error:*' . PHP_EOL . 'Se ha producido un error'; return Response::create_text_response($endpoint, $request->get_chat_id(), $text); } }