Ajout route API pour les likes

master
Félix MIELCAREK 2 years ago
parent 1c2d2acfb9
commit 8a52e1dec4

@ -1,6 +1,7 @@
<?php <?php
require "gateways/UserGateway.php"; require "gateways/UserGateway.php";
require "gateways/LikesGateway.php";
require "business/User.php"; require "business/User.php";
class Model class Model
@ -31,4 +32,15 @@ class Model
$gw = new UserGateway(new Connection($db['dsn'], $db['user'], $db['pass'])); $gw = new UserGateway(new Connection($db['dsn'], $db['user'], $db['pass']));
$gw->addUser($data['idDafl'], $data['idSpotify'], $data['passw']); $gw->addUser($data['idDafl'], $data['idSpotify'], $data['passw']);
} }
public function like($user,$liked) : bool {
global $app;
$db = $app->getContainer()['settings']['db'];
$data = [];
$data['user'] = filter_var($user, FILTER_SANITIZE_STRING);
$data['liked'] = filter_var($liked, FILTER_SANITIZE_STRING);
$gw = new LikesGateway(new Connection($db['dsn'], $db['user'], $db['pass']));
return $gw->addUser($data['idDafl'], $data['idSpotify'], $data['passw']);
}
} }

@ -0,0 +1,26 @@
<?php
class LikesGateway
{
private Connection $con;
public function __construct(Connection $con)
{
$this->con = $con;
}
public function addLike($user,$liked):bool
{
$query = 'INSERT INTO likes VALUES (:user,:liked)';
$this->con->executeQuery($query,array(':user'=>array($user,PDO::PARAM_STR),':liked'=>array($liked,PDO::PARAM_STR)));
$query = 'SELECT * FROM likes WHERE (user=:user AND liked=:liked) OR (liked=:liked AND user=:user )';
$this->con->executeQuery($query,array(':user'=>array($user,PDO::PARAM_STR),':liked'=>array($liked,PDO::PARAM_STR)));
$res=$this->con->getResults();
if(count($res) == 2) {
$query = 'INSERT INTO matches VALUES (:user,:liked)';
$this->con->executeQuery($query,array(':user'=>array($user,PDO::PARAM_STR),':liked'=>array($liked,PDO::PARAM_STR)));
return true;
}
return false;
}
}

@ -54,15 +54,24 @@ $app->delete('/users/{id}', function (Request $request, Response $response, arra
return $response; return $response;
}); });
*/
// Like someone // Like someone
$app->post('/user/{id}/like', function (Request $request, Response $response, array $args) { $app->post('/user/{id}/like', function (Request $request, Response $response, array $args) {
$res = "User " . $args['id'] . " liked " . $args['liked']; try {
$response->getBody()->write($res); $mdl = new Model();
$data = $request->getParsedBody();
return $response; if (!isset($data['liked'])) {
throw new Exception("missing arguments");
}
$res=($mdl->like($args["id"],$data["liked"])) ? "Match" : "Ok";
} catch (Exception $e) {
$res = array("Error: " . $e->getMessage());
} finally {
$response->getBody()->write(json_encode($res));
return $response;
}
}); });
/*
// Add a new song as a preference for a situation // Add a new song as a preference for a situation
$app->post('/users/{id}/preferences', function (Request $request, Response $response, array $args) { $app->post('/users/{id}/preferences', function (Request $request, Response $response, array $args) {
$res = "User " . $args['id'] . " add music " . $args['music'] . " to his preferences for category " . $args['categ']; $res = "User " . $args['id'] . " add music " . $args['music'] . " to his preferences for category " . $args['categ'];
@ -70,4 +79,4 @@ $app->post('/users/{id}/preferences', function (Request $request, Response $resp
return $response; return $response;
}); });
*/ */

Loading…
Cancel
Save