Browse Source

Implementei metodo api/v2/meet/joinmeet

1.9
parent
commit
b259c93556
  1. 11
      app/Repositories/Meet.php
  2. 34
      app/controllers/MeetController.php
  3. 34
      app/core/Repository.php
  4. 7
      app/traits/MeetRequest.php
  5. 2
      public/api.php

11
app/Repositories/Meet.php

@ -1,10 +1,17 @@
<?php <?php
namespace app\models; namespace app\Repositories;
use app\core\Repository; use app\core\Repository;
class Meet extends Repository class Meet extends Repository
{ {
protected static $table = 'pbx_meet'; //protected static $table = 'pbx_meet';
public static function getMeetById(string $id): array|bool
{
$query = 'SELECT * FROM pbx_meet WHERE meet_id = :meet_id';
return self::query($query, ["meet_id" => $id], "one");
}
} }

34
app/controllers/MeetController.php

@ -2,9 +2,10 @@
namespace app\controllers; namespace app\controllers;
use app\models\Meet; use app\Repositories\Meet;
use app\models\MeetPeople; use app\Repositories\MeetPeople;
use app\models\Queue; use app\Repositories\Queue;
use app\shared\Logger;
use app\traits\MeetRequest; use app\traits\MeetRequest;
use app\traits\Validate; use app\traits\Validate;
use Slim\Routing\RouteCollectorProxy; use Slim\Routing\RouteCollectorProxy;
@ -14,9 +15,15 @@ use Exception;
class MeetController class MeetController
{ {
private static Logger $logger;
const LOG_ACTIVE = true;
use Validate, MeetRequest; 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) { return function (RouteCollectorProxy $group) {
$group->post('/joinmeet', [self::class, 'joinMeet']); $group->post('/joinmeet', [self::class, 'joinMeet']);
$group->post('/participantleft', [self::class, 'participantLeft']); $group->post('/participantleft', [self::class, 'participantLeft']);
@ -26,33 +33,36 @@ class MeetController
function joinMeet(Request $request, Response $response, array $args) function joinMeet(Request $request, Response $response, array $args)
{ {
self::$logger->debug('MeetController->joinMeet()', true);
try { try {
$this->serverRequest(); $this->serverRequest();
$body = json_decode($request->getBody()->getContents(), true); $body = json_decode($request->getBody()->getContents(), true);
$data = []; // this array is never populated?? $dados = [];
$dados['org_id'] = $body['org_id']; $dados['org_id'] = $body['org_id'];
$dados['meet_id'] = $body['data']['roomName']; $dados['meet_id'] = $body['data']['roomName'];
$dados['nome'] = $body['data']['roomName']; $dados['nome'] = $body['data']['roomName'];
$dados['token'] = md5($body['data']['roomName']); $dados['token'] = md5($body['data']['roomName']);
$dados['org_id'] = 1; //$dados['org_id'] = 1;
$people = []; $people = [];
$people['nome'] = $body['data']['displayName']; $people['nome'] = $body['data']['displayName'];
$people['meet_id'] = $body['data']['roomName']; $people['meet_id'] = $body['data']['roomName'];
$people['people_id'] = $body['data']['id']; $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; $meet = null;
if (!$m) { 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); self::$logger->debug("Gonna create meet people", true);
$p = Meet::dinamicInsertQuery('pbx_meet_people', $people);
if ($data) { // will it allways be falsy? if ($dados) {
$response->getBody()->write(json_encode(['status' => true, 'data' => ['meet' => ['created' => $meet ?? 'OK'], 'user' => ['join' => $p ?? 'yes']]])); $response->getBody()->write(json_encode(['status' => true, 'data' => ['meet' => ['created' => $meet ?? 'OK'], 'user' => ['join' => $p ?? 'yes']]]));
} else { } else {
$response->getBody()->write(json_encode(['status' => false, 'data' => $data])); $response->getBody()->write(json_encode(['status' => false, 'data' => $dados]));
} }
} catch (Exception $e) { } catch (Exception $e) {
$response->getBody()->write(json_encode(['status' => false, 'data' => ["message" => "Nao foi possivel realizar a consulta! " . $e->getMessage()]])); $response->getBody()->write(json_encode(['status' => false, 'data' => ["message" => "Nao foi possivel realizar a consulta! " . $e->getMessage()]]));

34
app/core/Repository.php

@ -34,7 +34,7 @@ abstract class Repository
foreach ($params as $key => $value) { foreach ($params as $key => $value) {
// menaging LIKE statement in query // 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%"; $value = "%$value%";
} }
$stmt->bindValue(":$key", $value, (is_int($value) ? PDO::PARAM_INT : PDO::PARAM_STR)); $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 /** Dinamicaly creates a SELECT query based on passed parameters
*
* @param string $table: table name * @param string $table: table name
* @param array $columns: list of columns to be returned * @param array $columns: list of columns to be returned
* @param array $params: list of parameters to be used in 'WHERE' statement * @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); 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");
}
} }

7
app/traits/MeetRequest.php

@ -2,17 +2,22 @@
namespace app\traits; namespace app\traits;
use app\shared\Logger;
use Exception; use Exception;
trait MeetRequest trait MeetRequest
{ {
public function serverRequest() public function serverRequest()
{ {
$logger = new Logger('api' . date('Ymd'), true);
$logger->debug('meet request. HTTP_ORIGIN: ' . $_SERVER['HTTP_ORIGIN'], true);
// must be localhost
if ( if (
!isset($_SERVER['HTTP_ORIGIN']) && !isset($_SERVER['HTTP_ORIGIN']) &&
(strpos($_SERVER['HTTP_ORIGIN'], 'localhost') === false || strpos($_SERVER['HTTP_ORIGIN'], '127.0.0.1') === false) (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!');
} }
} }
} }

2
public/api.php

@ -56,6 +56,8 @@ $app->group('/api/v2', function (RouteCollectorProxy $group) {
$group->group('/queue', QueueController::route()); $group->group('/queue', QueueController::route());
})->add(new AuthMiddleware); })->add(new AuthMiddleware);
$logger->debug("will run the API.", true);
// Middleware de Fallback // Middleware de Fallback
try { try {
$app->run(); $app->run();

Loading…
Cancel
Save