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
namespace app\models;
namespace app\Repositories;
use app\core\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;
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()]]));

34
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");
}
}

7
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!');
}
}
}

2
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();

Loading…
Cancel
Save