Game.php (2194B) download
1<?php
2
3namespace App\Entity;
4
5use Doctrine\Common\Collections\ArrayCollection;
6use Doctrine\Common\Collections\Collection;
7use Doctrine\ORM\Mapping\Column;
8use Doctrine\ORM\Mapping\GeneratedValue;
9use Doctrine\ORM\Mapping\Id;
10use Doctrine\ORM\Mapping\Entity;
11use Doctrine\ORM\Mapping\ManyToMany;
12use ApiPlatform\Core\Annotation\ApiResource;
13use phpDocumentor\Reflection\Types\True_;
14
15
16#[Entity]
17#[ApiResource]
18class Game implements \JsonSerializable {
19
20 #[Column(unique:true)] #[Id] #[GeneratedValue] private int $id;
21 #[Column(name:'date')] public \DateTime $dateTime;
22 #[Column] public float $score;
23
24 // optional string for api used in this game
25 #[Column(nullable:true)] public string $api = '';
26
27 //optional column for color of closed cards in this game
28 #[Column(nullable:true)] public string $color_closed = '';
29
30 //optional column for color of found cards in this game
31 #[Column(nullable:true)] public string $color_found = '';
32
33 // Zo doe je dus unidirectionele OneToMany in doctrine...
34 // zie
35 // https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-unidirectional-with-join-table
36
37 #[ManyToMany(targetEntity: Player::class, mappedBy: "games")]
38 private Collection $player;
39
40 public function __construct(Player $player, mixed $params)
41 {
42 $this->player = new ArrayCollection();
43 $this->player[] = $player;
44 $this->dateTime = new \DateTime('now');
45 $this->score = $params['score'];
46 $this->api = $params['api'] ?? '';
47 $this->color_found = $params['color_found'] ?? '';
48 $this->color_closed = $params['color_closed'] ?? '';
49 }
50
51 public function getId(): int { return $this->id; }
52
53 public function getDayFromDate():string {
54 return $this->dateTime->format('Y-m-d');
55 }
56
57 public function jsonSerialize():mixed {
58 return array(
59 'date' => $this->dateTime,
60 'day' => $this->getDayFromDate(),
61 'score' => $this->score,
62 'api' => $this->api,
63 'color_closed' => $this->color_closed,
64 'color_found' => $this->color_found
65 );
66 }
67}