Add Results Entity, Gateway & Model

pull/17/head
tomivt 6 months ago
parent c9f496e2ed
commit f91b281a88

@ -0,0 +1,69 @@
<?php
namespace Entity;
class ResultsEntity
{
private int $idQuiz;
public function getIdUser(): int
{
return $this->idUser;
}
public function setIdUser(int $idUser): void
{
$this->idUser = $idUser;
}
public function getIdQuiz(): int
{
return $this->idQuiz;
}
public function setIdQuiz(int $idQuiz): void
{
$this->idQuiz = $idQuiz;
}
public function getTime(): int
{
return $this->time;
}
public function setTime(int $time): void
{
$this->time = $time;
}
public function getNbPts(): int
{
return $this->nbPts;
}
public function setNbPts(int $nbPts): void
{
$this->nbPts = $nbPts;
}
private int $idUser;
private int $nbPts;
private int $time;
/**
* @param int $idQuiz
* @param int $idUser
* @param int $time
* @param int $nbPts
*/
public function __construct(int $idQuiz, int $idUser, int $time, int $nbPts)
{
$this -> idQuiz = $idQuiz;
$this -> idUser = $idUser;
$this -> time = $time;
$this -> nbPts = $nbPts;
}
}

@ -1,54 +0,0 @@
<?php
namespace Entity;
class Result_quizEntity
{
private int $id_quiz;
private int $nbQuestion;
/**
* @param int $id_quiz
* @param int $nbQuestion
*/
public function __construct(int $id_quiz, int $nbQuestion)
{
$this->id_quiz = $id_quiz;
$this->nbQuestion = $nbQuestion;
}
/**
* @return int
*/
public function getIdQuiz(): int
{
return $this->id_quiz;
}
/**
* @param int $id_quiz
*/
public function setIdQuiz(int $id_quiz): void
{
$this->id_quiz = $id_quiz;
}
/**
* @return int
*/
public function getNbQuestion(): int
{
return $this->nbQuestion;
}
/**
* @param int $nbQuestion
*/
public function setNbQuestion(int $nbQuestion): void
{
$this->nbQuestion = $nbQuestion;
}
}

@ -0,0 +1,131 @@
<?php
namespace Gateway;
use PDO;
class ResultsGateway
{
private Connection $co;
public function __construct(Connection $co)
{
$this -> co = $co ;
}
public function createResultsGateway(int $idQuiz, int $idUser, int $nbPts, int $time) : bool
{
$query = "
INSERT INTO Results
VALUES (:id_quiz, :id_user, :nb_pts, :time)
";
return $this -> co -> executeQuery($query, [
'id_quiz' => array($idQuiz, PDO::PARAM_INT),
'id_user' => array($idUser, PDO::PARAM_INT),
'nb_pts' => array($nbPts, PDO::PARAM_INT),
'time' => array($time, PDO::PARAM_INT)
]);
}
public function findResultsByQuiz(int $idQuiz) : array
{
$query = "
SELECT * FROM Results
WHERE quiz_r = :id_quiz
";
$this -> co -> executeQuery($query, ['id_quiz' => array($idQuiz, PDO::PARAM_INT)]);
return $this -> co -> getResults();
}
public function findResultsByUser(int $idUser) : array
{
$query = "
SELECT * FROM Results
WHERE user_r = :id_user
";
$this -> co -> executeQuery($query, ['id_user' => array($idUser, PDO::PARAM_INT)]);
return $this -> co -> getResults();
}
public function findResultsById(int $idQuiz, int $idUser) : array
{
$query = "
SELECT * FROM Results
WHERE quiz_r = :id_quiz AND user_r = :id_user
";
$this -> co -> executeQuery($query, [
'id_user' => array($idUser, PDO::PARAM_INT),
'id_quiz' => array($idQuiz, PDO::PARAM_INT)
]);
return $this -> co -> getResults();
}
public function findAllResults() : array
{
$query = "SELECT * FROM Results";
$this -> co -> executeQuery($query);
return $this -> co -> getResults();
}
public function updateResults(int $idQuiz, int $idUser, ?int $score, ?int $time) : bool
{
if ($score && !$time)
{
$query = "
UPDATE Results
SET score = :score
WHERE quiz_r = :id_quiz AND user_r = :id_user
";
return $this -> co -> executeQuery($query, [
'id_quiz' => array($idQuiz, PDO::PARAM_INT),
'id_user' => array($idUser, PDO::PARAM_INT),
'score' => array($score, PDO::PARAM_INT)
]);
}
else if (!$score && $time)
{
$query = "
UPDATE Results
SET time = :time
WHERE quiz_r = :id_quiz AND user_r = :id_user
";
return $this -> co -> executeQuery($query, [
'id_quiz' => array($idQuiz, PDO::PARAM_INT),
'id_user' => array($idUser, PDO::PARAM_INT),
'time' => array($time, PDO::PARAM_INT)
]);
}
else
{
$query = "
UPDATE Results
SET score = :score AND time = :time
WHERE quiz_r = :id_quiz AND user_r = :id_user
";
return $this -> co -> executeQuery($query, [
'id_quiz' => array($idQuiz, PDO::PARAM_INT),
'id_user' => array($idUser, PDO::PARAM_INT),
'score' => array($score, PDO::PARAM_INT),
'time' => array($time, PDO::PARAM_INT)
]);
}
}
}

@ -0,0 +1,96 @@
<?php
namespace Model;
use Entity\ResultsEntity;
use Gateway\ResultsGateway;
class ResultsModel
{
private ResultsGateway $gw;
public function __construct(ResultsGateway $gw)
{
$this -> gw = $gw;
}
public function createResultsModel(int $idQuiz, int $idUser, int $score, int $time) : bool
{
return $this -> gw -> createResultsGateway($idQuiz, $idUser, $score, $time);
}
public function getResultsByQuiz(int $idQuiz) : array
{
$res = $this -> gw -> findResultsByQuiz($idQuiz);
$results = [];
foreach ($res as $result)
{
$results[] = new ResultsEntity (
$result['user_r'],
$result['quiz_r'],
$result['score'],
$result['time']
);
}
return $results;
}
public function getResultsByUser(int $idUser) : array
{
$res = $this -> gw -> findResultsByUser($idUser);
$results = [];
foreach ($res as $result)
{
$results[] = new ResultsEntity (
$result['user_r'],
$result['quiz_r'],
$result['score'],
$result['time']
);
}
return $results;
}
public function getResultsById(int $idQuiz, int $idUser) : ?ResultsEntity
{
$res = $this -> gw -> findResultsById($idQuiz, $idUser);
if ($res)
{
return new ResultsEntity (
$res['user_r'],
$res['quiz_r'],
$res['score'],
$res['time']
);
}
return null;
}
public function getAllResults() : array
{
$res = $this -> gw -> findAllResults();
$results = [];
foreach ($res as $result)
{
$results[] = new ResultsEntity (
$result['user_r'],
$result['quiz_r'],
$result['score'],
$result['time']
);
}
return $results;
}
public function updateResultsModel(int $idQuiz, int $idUser, ?int $score, ?int $time) : bool
{
return $this -> gw -> updateResults($idQuiz, $idUser, $score, $time);
}
}
Loading…
Cancel
Save