X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/40fa570f0ce4fc6b518ab7b6d71fde5bf249cd56..f972044e64e3c1f79f86b1b44c2f821a35e39e62:/Entity/Dance.php diff --git a/Entity/Dance.php b/Entity/Dance.php index fa07ba9..6ae5f1b 100644 --- a/Entity/Dance.php +++ b/Entity/Dance.php @@ -1,16 +1,17 @@ + * (c) Raphaël Gertz * - * for the full copyright and license information, please view the license + * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Rapsys\AirBundle\Entity; +use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\Event\PreUpdateEventArgs; @@ -19,39 +20,42 @@ use Doctrine\ORM\Event\PreUpdateEventArgs; */ class Dance { /** - * @var integer + * Primary key */ - private $id; + private ?int $id = null; /** - * @var string + * Create datetime */ - protected $title; + private \DateTime $created; /** - * @var \DateTime + * Update datetime */ - private $created; + private \DateTime $updated; /** - * @var \DateTime + * Applications collection */ - private $updated; + private Collection $applications; /** - * @var ArrayCollection + * Users collection */ - private $applications; - - /** - * @var ArrayCollection - */ - private $users; + private Collection $users; /** * Constructor + * + * @param string $name The dance name + * @param string $type The dance type */ - public function __construct() { + public function __construct(private string $name, private string $type) { + //Set defaults + $this->created = new \DateTime('now'); + $this->updated = new \DateTime('now'); + + //Set collections $this->applications = new ArrayCollection(); $this->users = new ArrayCollection(); } @@ -61,30 +65,52 @@ class Dance { * * @return integer */ - public function getId(): int { + public function getId(): ?int { return $this->id; } /** - * Set title + * Set name + * + * @param string $name + * + * @return Dance + */ + public function setName(string $name): Dance { + $this->name = $name; + + return $this; + } + + /** + * Get name + * + * @return string + */ + public function getName(): string { + return $this->name; + } + + /** + * Set type * - * @param string $title + * @param string $type * * @return Dance */ - public function setTitle(string $title): Dance { - $this->title = $title; + public function setType(string $type): Dance { + $this->type = $type; return $this; } /** - * Get title + * Get type * * @return string */ - public function getTitle(): string { - return $this->title; + public function getType(): string { + return $this->type; } /** @@ -172,6 +198,9 @@ class Dance { * @return Dance */ public function addUser(User $user): Dance { + //Add from owning side + $user->addDance($this); + $this->users[] = $user; return $this; @@ -185,6 +214,13 @@ class Dance { * @return bool */ public function removeUser(User $user): bool { + if (!$this->dances->contains($user)) { + return true; + } + + //Remove from owning side + $user->removeDance($this); + return $this->users->removeElement($user); } @@ -201,8 +237,8 @@ class Dance { * {@inheritdoc} */ public function preUpdate(PreUpdateEventArgs $eventArgs) { - //Check that we have an session instance - if (($dance = $eventArgs->getEntity()) instanceof Dance) { + //Check that we have a dance instance + if (($dance = $eventArgs->getObject()) instanceof Dance) { //Set updated value $dance->setUpdated(new \DateTime('now')); } @@ -214,6 +250,6 @@ class Dance { * @return string */ public function __toString(): string { - return $this->title; + return $this->name.' '.lcfirst($this->type); } }