Browse Source

Implementei metodo api/v2/meet/conferenceleft

1.9
parent
commit
96b5f9cd15
  1. 6
      app/Repositories/Meet.php
  2. 37
      app/controllers/MeetController.php
  3. 30
      app/core/Repository.php

6
app/Repositories/Meet.php

@ -8,10 +8,4 @@ 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");
}
} }

37
app/controllers/MeetController.php

@ -65,16 +65,24 @@ class MeetController
$people['people_id'] = $body['data']['id']; $people['people_id'] = $body['data']['id'];
self::$logger->debug('Gonna get by id', true); self::$logger->debug('Gonna get by id', true);
$m = Meet::getMeetById($body['data']['roomName']);
//$meet = null; // if meet does't exist, create it
$m = Meet::dinamicSelectQuery('pbx_meet', ['*'], ['meet_id' => $body['data']['roomName']], 'one');
if (!$m) { if (!$m) {
self::$logger->debug("Meet not found. Needs to bee created", true); self::$logger->debug("Meet not found. Needs to bee created", true);
$meet = Meet::dinamicInsertQuery('pbx_meet', $dados); $meet = Meet::dinamicInsertQuery('pbx_meet', $dados);
} }
// verifies if the person is already in meet before insert him
$p = Meet::dinamicSelectQuery('pbx_meet_people', ['*'], $people, 'one');
self::$logger->debug("person: " . print_r($p, true), true);
if (!$p) {
self::$logger->debug("Gonna create meet people", true); self::$logger->debug("Gonna create meet people", true);
$p = Meet::dinamicInsertQuery('pbx_meet_people', $people); $peopleJoined = Meet::dinamicInsertQuery('pbx_meet_people', $people);
}
if ($dados) { 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 ?? 0], 'user' => ['join' => $peopleJoined ?? 'Person already in meet.']]]));
} else { } else {
$response->getBody()->write(json_encode(['status' => false, 'data' => $dados])); $response->getBody()->write(json_encode(['status' => false, 'data' => $dados]));
} }
@ -90,17 +98,30 @@ class MeetController
$this->serverRequest(); $this->serverRequest();
$body = json_decode($request->getBody()->getContents(), true); $body = json_decode($request->getBody()->getContents(), true);
$mp = Meet::find(['nome' => $body['roomName']]); //validation: must have ort_id and data must have the folowing array keys:
$validator = new Validator();
$validator->mapFieldsRules([
"org_id" => ['integer', 'required', ['min', 1]],
"roomName" => ['required']
]);
$validator = $validator->withData($body);
if (!$validator->validate()) {
$response->getBody()
->write(json_encode($validator->errors()));
return $response->withStatus(422);
}
$mp = Meet::dinamicSelectQuery('pbx_meet', ['*'], ['nome' => $body['roomName']], 'one');
$meet = null; $meet = null;
if ($mp) { if ($mp) {
$meet = Meet::delete(['id' => $mp->id]); $meet = Meet::dinamicDeleteQuery("pbx_meet", ['meet_id' => $mp['meet_id']]);
MeetPeople::delete(['meet_id' => $body['roomName']]); Meet::dinamicDeleteQuery("pbx_meet_people", ['meet_id' => $mp['meet_id']]);
} }
if ($meet) { if ($meet) {
$response->getBody()->write(json_encode(['status' => true, 'data' => ['meet' => ['deleted' => $meet ?? 'OK']]])); $response->getBody()->write(json_encode(['status' => true, 'data' => ['meet' => ['deleted' => $meet ?? 'OK']]]));
} else { } else {
$response->getBody()->write(json_encode(['status' => false, 'data' => ['message' => 'Nao foi possivel exluir participant']])); $response->getBody()->write(json_encode(['status' => false, 'data' => ['message' => 'Nao foi possivel exluir participante']]));
} }
} 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()]]));

30
app/core/Repository.php

@ -30,15 +30,15 @@ abstract class Repository
self::setLog(); self::setLog();
self::$logger->debug("Getting connection", true); self::$logger->debug("Getting connection", true);
$stmt = Connection::getInstance()->prepare($query); $stmt = Connection::getInstance()->prepare($query);
self::$logger->debug("Biding values for $query\nwith params: " . print_r($params, true), true);
foreach ($params as $key => $value) { foreach ($params as $key => $value) {
// menaging LIKE statement in query // menaging LIKE statement in query
if (strpos($query, 'SELECT') !== false && 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%";
self::$logger->debug("treating value $key", true);
} }
$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));
} }
self::$logger->debug("Biding values for $query\nwith params: " . print_r($params, true), true);
$stmt->execute(); $stmt->execute();
//selects the type of return //selects the type of return
@ -76,6 +76,11 @@ abstract class Repository
if (empty($value)) { if (empty($value)) {
continue; continue;
} }
if (in_array($key, ['src', 'dst', 'entrada', 'fila', 'evento', 'nome'])) {
$query .= " AND $key LIKE :$key";
continue;
}
$query .= " AND $key = :$key"; $query .= " AND $key = :$key";
} }
@ -83,7 +88,7 @@ abstract class Repository
} }
/** Dinamicaly inserts a record into a table /** Dinamicaly inserts a record into a table
* @param strng $table: table name * @param string $table: table name
* @param array $columns: associative array containing the fields and its values to be recorded * @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 * @return int|bool the number of rows modified by the database operation
*/ */
@ -112,4 +117,21 @@ abstract class Repository
return self::query($query, $columns, "count"); return self::query($query, $columns, "count");
} }
public static function dinamicDeleteQuery(string $table, array $params): int|bool
{
if (!sizeof($params)) {
throw new Exception("Delete statement must have parameters!");
}
$query = "DELETE FROM $table WHERE 1 = 1 ";
foreach ($params as $key => $value) {
if (empty($value)) {
continue;
}
$query .= " AND $key = :$key";
}
return self::query($query, $params, 'count');
}
} }

Loading…
Cancel
Save