You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
BOB_PARTY/api-rest/gateways/matchGateway.php

98 lines
3.8 KiB

<?php
require_once('model/match.php');
class MatchGateway{
private $connection;
// Constructor
public function __construct($con){
$this->connection=$con;
}
/* Functions implemented to manage matches' data from database
* getMatchById : returning a match found in database with its id
* postMatch : adding a NEW user in database
* putMatch : modifying an EXISTING user in database
* deleteMatch : deleting an user from database
*/
/// Brief : Returning a match found in database with his id
/// Parameters : * $id (string): identifier of the match we are looking for
public function getMatchById(string $matchId):?Matchs{
$match=NULL;
$matchInfoQuery="SELECT PK_ID, MTC_IN_GAME, FK_GAME FROM T_E_MATCH_MTC WHERE PK_ID = :id";
$playersInMatchQuery="SELECT FK_USER FROM T_J_PLAY_MATCH_PLM WHERE FK_MATCH=:id";
$argId=array('id' => array($matchId, PDO::PARAM_INT));
$this->connection->execQuery($playersInMatchQuery, $argId);
$res=$this->connection->getRes();
foreach($res as $row){
$tabUser[] = $row['FK_USER'];
}
$this->connection->execQuery($matchInfoQuery, $argId);
$res=$this->connection->getRes();
foreach($res as $row){
$match = new Matchs($row['PK_ID'],$row['MTC_IN_GAME'],$row['FK_GAME'],$tabUser);
}
return $match;
}
/// Brief : Adding a NEW match in database
public function postMatch(int $idGame, int $idCreator): ?Matchs{
$insertMatchQuery="INSERT INTO T_E_MATCH_MTC VALUES(NULL,0,:idGame)";
$insertPlayQuery = "INSERT INTO T_J_PLAY_MATCH_PLM VALUES(:idCreator,:id);";
$argInsertMatch=array('idGame'=>array($idGame, PDO::PARAM_INT));
$this->connection->execQuery($insertMatchQuery,$argInsertMatch);
$this->connection->execQuery("SELECT PK_ID
FROM T_E_MATCH_MTC
WHERE PK_ID >= ALL (SELECT max(m2.PK_ID)
FROM T_E_MATCH_MTC m2)",[]);
$res=$this->connection->getRes();
foreach($res as $row){
$id=$row['PK_ID'];
}
$argInsertPlay= array('idCreator'=>array($idCreator,PDO::PARAM_INT),
'id'=>array($id,PDO::PARAM_INT));
$this->connection->execQuery($insertPlayQuery,$argInsertPlay);
return new Matchs($id, 0, $idGame, [$idCreator]);
}
/// Brief : Modifying an EXISTING match in database
public function putMatch(int $id){
$updateQuery="UPDATE T_E_MATCH_MTC SET MTC_IN_GAME=1 WHERE PK_ID=:id";
$argUpdate=array('id'=>array($id,PDO::PARAM_INT));
$this->connection->execQuery($updateQuery,$argUpdate);
return;
}
/// Brief : Adding an user into a match
public function addUserToMatch(int $idMatch, int $idUser){
$insertQuery = "INSERT INTO T_J_PLAY_MATCH_PLM VALUES(:idUser,:idMatch)";
$argInsert= array('idUser'=>array($idUser,PDO::PARAM_INT),
'idMatch'=>array($idMatch,PDO::PARAM_INT));
$this->connection->execQuery($insertQuery,$argInsert);
return;
}
/// Brief : Deleting an user from a match
public function deleteUserFromMatch(int $idUser){
$deleteQuery = "DELETE FROM T_J_PLAY_MATCH_PLM WHERE FK_USER=:idUser";
$argDelete = array('idUser'=>array($idUser,PDO::PARAM_INT));
$this->connection->execQuery($deleteQuery,$argDelete);
return;
}
/// Brief : Deleting a match from database
/// Parameters : * $u (Matchs): match we want to delete from database
public function deleteMatch(int $id){
$query="DELETE FROM T_E_MATCH_MTC WHERE PK_ID=:id";
$arg=array('id'=>array($id, PDO::PARAM_INT));
$this->connection->execQuery($query,$arg);
}
}
?>