<?php

use App\Core\Database as Database;
use App\Teamtable\Team as Team;
use App\Teamtable\TeamMapper as TeamMapper;

/**
 * Does stuffs with the teamtable
 */
class Teamtable
{
    /**
     * Database connection
     */
    public PDO $dbh;

    /**
     * We use a data mapper pattern
     */
    public TeamMapper $teamMapper;

    public function __construct(Database $database)
    {
        $this->dbh = $database->conn;
        $this->teamMapper = new TeamMapper($this->dbh);
    }

    /**
     * Fetch entire team table
     */
    public function getAll(): array
    {
        return $this->teamMapper->getAll();
    }

    /**
     * Find team with supplied id
     */
    public function get(int $id): ?Team
    {
        return $this->teamMapper->get($id);
    }

    /**
     * Inserts team into database
     */
    public function create(Team $team): Team
    {
        return $this->teamMapper->create($team);
    }

    public function delete(int $id): void
    {
        $this->teamMapper->delete($id);
    }

    /**
     * Returns TRUE if team exists, FALSE if not
     */
    public function recieveBaton(string $cardnumber): bool 
    {
        $team = $this->getTeamByCardnumber($cardnumber);
        if ($team)
        {
            // team exists, insert into time table
            $sth = $this->dbh->prepare('INSERT INTO tidtabell (LagID) VALUES (?)');
            $sth->execute([$row['LagID']]);
            return TRUE;
        }
        // team does not exist, lets create it
        $team = new Team();
        $team->cardnumber = $cardnumber;
        $this->addTeam($team);
        return FALSE;
    }
}