Browse Source

Implementei metodo api/v2/meet/conferenceleft

1.9-pjsip
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';
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'];
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) {
self::$logger->debug("Meet not found. Needs to bee created", true);
$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);
$p = Meet::dinamicInsertQuery('pbx_meet_people', $people);
$peopleJoined = Meet::dinamicInsertQuery('pbx_meet_people', $people);
}
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 {
$response->getBody()->write(json_encode(['status' => false, 'data' => $dados]));
}
@ -90,17 +98,30 @@ class MeetController
$this->serverRequest();
$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;
if ($mp) {
$meet = Meet::delete(['id' => $mp->id]);
MeetPeople::delete(['meet_id' => $body['roomName']]);
$meet = Meet::dinamicDeleteQuery("pbx_meet", ['meet_id' => $mp['meet_id']]);
Meet::dinamicDeleteQuery("pbx_meet_people", ['meet_id' => $mp['meet_id']]);
}
if ($meet) {
$response->getBody()->write(json_encode(['status' => true, 'data' => ['meet' => ['deleted' => $meet ?? 'OK']]]));
} 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) {
$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::$logger->debug("Getting connection", true);
$stmt = Connection::getInstance()->prepare($query);
self::$logger->debug("Biding values for $query\nwith params: " . print_r($params, true), true);
foreach ($params as $key => $value) {
// 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%";
self::$logger->debug("treating value $key", true);
}
$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();
//selects the type of return
@ -76,6 +76,11 @@ abstract class Repository
if (empty($value)) {
continue;
}
if (in_array($key, ['src', 'dst', 'entrada', 'fila', 'evento', 'nome'])) {
$query .= " AND $key LIKE :$key";
continue;
}
$query .= " AND $key = :$key";
}
@ -83,7 +88,7 @@ abstract class Repository
}
/** 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
* @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");
}
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