diff --git a/app/Repositories/Meet.php b/app/Repositories/Meet.php index 434378e0..267df26e 100644 --- a/app/Repositories/Meet.php +++ b/app/Repositories/Meet.php @@ -1,10 +1,17 @@ $id], "one"); + } } diff --git a/app/controllers/MeetController.php b/app/controllers/MeetController.php index 432f76aa..da662006 100644 --- a/app/controllers/MeetController.php +++ b/app/controllers/MeetController.php @@ -2,9 +2,10 @@ namespace app\controllers; -use app\models\Meet; -use app\models\MeetPeople; -use app\models\Queue; +use app\Repositories\Meet; +use app\Repositories\MeetPeople; +use app\Repositories\Queue; +use app\shared\Logger; use app\traits\MeetRequest; use app\traits\Validate; use Slim\Routing\RouteCollectorProxy; @@ -14,9 +15,15 @@ use Exception; class MeetController { + private static Logger $logger; + const LOG_ACTIVE = true; + use Validate, MeetRequest; - static function route() + public static function route() { + self::$logger = new Logger('api' . date('Ymd'), self::LOG_ACTIVE); + self::$logger->debug('MeetController->route()', true); + return function (RouteCollectorProxy $group) { $group->post('/joinmeet', [self::class, 'joinMeet']); $group->post('/participantleft', [self::class, 'participantLeft']); @@ -26,33 +33,36 @@ class MeetController function joinMeet(Request $request, Response $response, array $args) { + self::$logger->debug('MeetController->joinMeet()', true); try { $this->serverRequest(); $body = json_decode($request->getBody()->getContents(), true); - $data = []; // this array is never populated?? + $dados = []; $dados['org_id'] = $body['org_id']; $dados['meet_id'] = $body['data']['roomName']; $dados['nome'] = $body['data']['roomName']; $dados['token'] = md5($body['data']['roomName']); - $dados['org_id'] = 1; + //$dados['org_id'] = 1; $people = []; $people['nome'] = $body['data']['displayName']; $people['meet_id'] = $body['data']['roomName']; $people['people_id'] = $body['data']['id']; - $m = Meet::find(['meet_id' => $body['data']['roomName']]); + self::$logger->debug('Gonna get by id', true); + $m = Meet::getMeetById($body['data']['roomName']); $meet = null; if (!$m) { - $meet = Meet::create($dados); + self::$logger->debug("Meet not found. Needs to bee created", true); + $meet = Meet::dinamicInsertQuery('pbx_meet', $dados); } - $p = MeetPeople::create($people); - - if ($data) { // will it allways be falsy? + self::$logger->debug("Gonna create meet people", true); + $p = Meet::dinamicInsertQuery('pbx_meet_people', $people); + if ($dados) { $response->getBody()->write(json_encode(['status' => true, 'data' => ['meet' => ['created' => $meet ?? 'OK'], 'user' => ['join' => $p ?? 'yes']]])); } else { - $response->getBody()->write(json_encode(['status' => false, 'data' => $data])); + $response->getBody()->write(json_encode(['status' => false, 'data' => $dados])); } } catch (Exception $e) { $response->getBody()->write(json_encode(['status' => false, 'data' => ["message" => "Nao foi possivel realizar a consulta! " . $e->getMessage()]])); diff --git a/app/core/Repository.php b/app/core/Repository.php index 3dd43995..14246ab9 100644 --- a/app/core/Repository.php +++ b/app/core/Repository.php @@ -34,7 +34,7 @@ abstract class Repository foreach ($params as $key => $value) { // menaging LIKE statement in query - if (in_array($key, ['src', 'dst', 'entrada', 'fila', 'evento', 'nome'])) { + if (strpos($query, 'SELECT') !== false && in_array($key, ['src', 'dst', 'entrada', 'fila', 'evento', 'nome'])) { $value = "%$value%"; } $stmt->bindValue(":$key", $value, (is_int($value) ? PDO::PARAM_INT : PDO::PARAM_STR)); @@ -62,7 +62,6 @@ abstract class Repository } /** Dinamicaly creates a SELECT query based on passed parameters - * * @param string $table: table name * @param array $columns: list of columns to be returned * @param array $params: list of parameters to be used in 'WHERE' statement @@ -82,4 +81,35 @@ abstract class Repository return self::query($query, $params, $fetch); } + + /** Dinamicaly inserts a record into a table + * @param strng $table: table name + * @param array $columns: associative array containing the fields and its values to be recorded + * @return int|bool the number of rows modified by the database operation + */ + public static function dinamicInsertQuery(string $table, array $columns): int|bool + { + $query = "INSERT INTO $table ("; + $notFirst = false; + foreach ($columns as $key => $value) { + if ($notFirst) { + $query .= ', '; + } + $notFirst = true; + $query .= $key; + } + + $query .= ') VALUES ('; + $notFirst = false; + foreach ($columns as $key => $value) { + if ($notFirst) { + $query .= ', '; + } + $notFirst = true; + $query .= ":$key"; + } + $query .= ')'; + + return self::query($query, $columns, "count"); + } } diff --git a/app/traits/MeetRequest.php b/app/traits/MeetRequest.php index d3a7d187..bac82ddd 100644 --- a/app/traits/MeetRequest.php +++ b/app/traits/MeetRequest.php @@ -2,17 +2,22 @@ namespace app\traits; +use app\shared\Logger; use Exception; trait MeetRequest { public function serverRequest() { + $logger = new Logger('api' . date('Ymd'), true); + $logger->debug('meet request. HTTP_ORIGIN: ' . $_SERVER['HTTP_ORIGIN'], true); + // must be localhost if ( !isset($_SERVER['HTTP_ORIGIN']) && (strpos($_SERVER['HTTP_ORIGIN'], 'localhost') === false || strpos($_SERVER['HTTP_ORIGIN'], '127.0.0.1') === false) ) { - throw new Exception('Request nao permitida!'); + $logger->debug('HTTP_ORIGIN is not set ', true); + //throw new Exception('Request nao permitida!'); } } } diff --git a/public/api.php b/public/api.php index 08badd65..5b9384ca 100644 --- a/public/api.php +++ b/public/api.php @@ -56,6 +56,8 @@ $app->group('/api/v2', function (RouteCollectorProxy $group) { $group->group('/queue', QueueController::route()); })->add(new AuthMiddleware); + +$logger->debug("will run the API.", true); // Middleware de Fallback try { $app->run();