2019-02-06 17:23:37 +01:00
|
|
|
<?php
|
|
|
|
/**
|
2019-06-19 21:54:19 +02:00
|
|
|
* Class Round
|
|
|
|
*
|
|
|
|
* Class for a round of the tournament
|
|
|
|
*
|
|
|
|
* @author Jeroen De Meerleer <schaak@jeroened.be>
|
|
|
|
* @category Main
|
|
|
|
* @package Libpairtwo
|
|
|
|
* @copyright Copyright (c) 2018-2019 Jeroen De Meerleer <schaak@jeroened.be>
|
2019-02-06 17:23:37 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
namespace JeroenED\Libpairtwo;
|
|
|
|
|
2019-06-19 21:54:19 +02:00
|
|
|
use DateTime;
|
2019-05-13 20:03:25 +02:00
|
|
|
use JeroenED\Libpairtwo\Enums\Result;
|
2019-05-01 15:50:44 +02:00
|
|
|
use JeroenED\Libpairtwo\Game;
|
|
|
|
use JeroenED\Libpairtwo\Pairing;
|
2019-02-06 17:23:37 +01:00
|
|
|
|
2019-06-19 21:54:19 +02:00
|
|
|
/**
|
|
|
|
* Class Round
|
|
|
|
*
|
|
|
|
* Class for a round of the tournament
|
|
|
|
*
|
|
|
|
* @author Jeroen De Meerleer <schaak@jeroened.be>
|
|
|
|
* @category Main
|
|
|
|
* @package Libpairtwo
|
|
|
|
* @copyright Copyright (c) 2018-2019 Jeroen De Meerleer <schaak@jeroened.be>
|
|
|
|
*/
|
|
|
|
class Round
|
2019-02-06 17:23:37 +01:00
|
|
|
{
|
2019-06-19 21:54:19 +02:00
|
|
|
/**
|
|
|
|
* Date of the round
|
|
|
|
*
|
|
|
|
* @var DateTime
|
|
|
|
*/
|
|
|
|
private $date;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Array of all games
|
|
|
|
*
|
|
|
|
* @var Game[]
|
|
|
|
*/
|
|
|
|
private $games = [];
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Number of the round
|
|
|
|
*
|
|
|
|
* @var int
|
|
|
|
*/
|
|
|
|
private $roundNo;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Array of all pairings for this round
|
|
|
|
*
|
|
|
|
* @var Pairing[]
|
|
|
|
*/
|
|
|
|
private $pairings = [];
|
|
|
|
|
2019-03-20 17:33:09 +01:00
|
|
|
/**
|
|
|
|
* Adds a game to the round
|
|
|
|
*
|
|
|
|
* @param Game $game
|
2019-06-19 21:54:19 +02:00
|
|
|
* @return Round
|
2019-03-20 17:33:09 +01:00
|
|
|
*/
|
2019-06-19 21:54:19 +02:00
|
|
|
public function addGame(Game $game): Round
|
2019-02-11 22:41:44 +01:00
|
|
|
{
|
|
|
|
$newarray = $this->getGames();
|
|
|
|
$newarray[] = $game;
|
|
|
|
$this->setGames($newarray);
|
2019-06-19 21:54:19 +02:00
|
|
|
return $this;
|
2019-02-11 22:41:44 +01:00
|
|
|
}
|
2019-05-01 15:50:44 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds a pairing to the round
|
|
|
|
*
|
|
|
|
* @param Pairing $pairing
|
2019-06-19 21:54:19 +02:00
|
|
|
* @return Round
|
2019-05-01 15:50:44 +02:00
|
|
|
*/
|
2019-06-19 21:54:19 +02:00
|
|
|
public function addPairing(Pairing $pairing): Round
|
2019-05-01 15:50:44 +02:00
|
|
|
{
|
|
|
|
$newarray = $this->getPairings();
|
|
|
|
$newarray[] = $pairing;
|
|
|
|
$this->setPairings($newarray);
|
2019-06-19 21:54:19 +02:00
|
|
|
return $this;
|
2019-05-01 15:50:44 +02:00
|
|
|
}
|
2019-05-13 20:03:25 +02:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns an array of pairings where the player is bye
|
|
|
|
*
|
|
|
|
* @return Pairing[]
|
|
|
|
*/
|
|
|
|
public function getBye(): array
|
|
|
|
{
|
|
|
|
$allPairings = $this->getPairings();
|
|
|
|
$byePairings = [];
|
|
|
|
foreach ($allPairings as $pairing) {
|
2019-06-04 15:37:06 +02:00
|
|
|
if ($pairing->getResult() == Result::wonbye) {
|
2019-05-13 20:03:25 +02:00
|
|
|
$byePairings[] = $pairing;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $byePairings;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns an array of pairings where the player is absent
|
|
|
|
*
|
|
|
|
* @return Pairing[]
|
|
|
|
*/
|
|
|
|
public function getAbsent(): array
|
|
|
|
{
|
|
|
|
$allPairings = $this->getPairings();
|
|
|
|
$absentPairings = [];
|
|
|
|
foreach ($allPairings as $pairing) {
|
|
|
|
if ($pairing->getResult() == Result::absent) {
|
|
|
|
$absentPairings[] = $pairing;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $absentPairings;
|
|
|
|
}
|
2019-06-19 21:54:19 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the date of the round
|
|
|
|
*
|
|
|
|
* @return DateTime
|
|
|
|
*/
|
|
|
|
public function getDate(): DateTime
|
|
|
|
{
|
|
|
|
return $this->date;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Sets the date of the round
|
|
|
|
*
|
|
|
|
* @param DateTime $date
|
|
|
|
* @return Round
|
|
|
|
*/
|
|
|
|
public function setDate(DateTime $date): Round
|
|
|
|
{
|
|
|
|
$this->date = $date;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Returns an array of all games in the tournament
|
|
|
|
*
|
|
|
|
* @return Game[]
|
|
|
|
*/
|
|
|
|
public function getGames(): array
|
|
|
|
{
|
|
|
|
return $this->games;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Sets Round::games to $games
|
|
|
|
*
|
|
|
|
* @param Game[] $games
|
|
|
|
* @return Round
|
|
|
|
*/
|
|
|
|
public function setGames(array $games): Round
|
|
|
|
{
|
|
|
|
$this->games = $games;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Returns the round number
|
|
|
|
*
|
|
|
|
* @return int
|
|
|
|
*/
|
|
|
|
public function getRoundNo(): int
|
|
|
|
{
|
|
|
|
return $this->roundNo;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Sets the round number
|
|
|
|
*
|
|
|
|
* @param int $roundNo
|
|
|
|
* @return Round
|
|
|
|
*/
|
|
|
|
public function setRoundNo(int $roundNo): Round
|
|
|
|
{
|
|
|
|
$this->roundNo = $roundNo;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Returns an array of all pairings for this round
|
|
|
|
*
|
|
|
|
* @return Pairing[]
|
|
|
|
*/
|
|
|
|
public function getPairings(): array
|
|
|
|
{
|
|
|
|
return $this->pairings;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Sets Round::Pairings to $pairings
|
|
|
|
*
|
|
|
|
* @param Pairing[] $pairings
|
|
|
|
* @return Round
|
|
|
|
*/
|
|
|
|
public function setPairings(array $pairings): Round
|
|
|
|
{
|
|
|
|
$this->pairings = $pairings;
|
|
|
|
return $this;
|
|
|
|
}
|
2019-02-11 17:37:30 +01:00
|
|
|
}
|