This repository has been archived on 2023-01-06. You can view files and clone it, but cannot push or open issues or pull requests.
web/app/lib/App/Timetable/TimeMapper.php
2022-03-16 13:37:24 +01:00

63 lines
1.5 KiB
PHP

<?php
namespace App\Timetable;
use \PDO;
use \DateTime;
class TimeMapper
{
public PDO $dbh;
public function __construct(PDO $dbh)
{
$this->dbh = $dbh;
}
private function mapRowToTime(array $row): Time
{
$team = new Time();
$team->id = $row['TidID'];
$team->setTeamId($row['LagID']);
$team->setDate(new DateTime($row['Tidspunkt']));
return $team;
}
public function getLatestByTeamId(int $teamId): ?Time
{
$sth = $this->dbh->prepare('SELECT * FROM tidtabell WHERE LagID = ? ORDER BY Tidspunkt DESC');
$sth->execute([$teamId]);
$row = $sth->fetch(PDO::FETCH_ASSOC);
if ($row)
{
return $this->mapRowToTime($row);
}
return NULL;
}
public function get(int $id): ?Time
{
$sth = $this->dbh->prepare('SELECT * FROM tidtabell WHERE TidID = ?');
$sth->execute([$id]);
$row = $sth->fetch(PDO::FETCH_ASSOC);
if ($row)
{
return $this->mapRowToTime($row);
}
return NULL;
}
public function create(Time $time): Time
{
$sth = $this->dbh->prepare('INSERT INTO tidtabell (LagID) VALUES (?)');
$sth->execute([$time->teamId]);
$lastId = $this->dbh->lastInsertId();
return $this->get($lastId);
}
public function delete(int $id): void
{
$sth = $this->dbh->prepare('DELETE FROM tidtabell WHERE TidID = ?');
$sth->execute([$id]);
}
}