X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/9aad88c45d93dadacd35176364b56df4734c017b..8af69ac700a76d252d0c2beceaeee29b41f5d483:/Entity/Location.php diff --git a/Entity/Location.php b/Entity/Location.php index 1fdca93..62ef9fc 100644 --- a/Entity/Location.php +++ b/Entity/Location.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,79 +20,49 @@ use Doctrine\ORM\Event\PreUpdateEventArgs; */ class Location { /** - * @var integer + * Primary key */ - private $id; + private ?int $id = null; /** * @var string */ - private $title; + private ?string $description = null; /** - * @var string - */ - private $short; - - /** - * @var string - */ - private $address; - - /** - * @var string - */ - private $zipcode; - - /** - * @var string - */ - private $city; - - /** - * @var string - */ - private $latitude; - - /** - * @var string - */ - private $longitude; - - /** - * @var boolean - */ - private $hotspot; - - /** - * @var \DateTime + * Create datetime */ - private $created; + private \DateTime $created; /** - * @var \DateTime + * Update datetime */ - private $updated; + private \DateTime $updated; /** - * @var ArrayCollection + * Sessions collection */ - private $sessions; + private Collection $sessions; /** - * @var ArrayCollection + * Snippets collection */ - private $snippets; + private Collection $snippets; /** - * @var ArrayCollection + * Users collection */ - private $users; + private Collection $users; /** * Constructor */ - public function __construct() { + public function __construct(private string $title = '', private string $address = '', private string $zipcode = '', private string $city = '', private string $latitude = '0', private string $longitude = '0', private bool $hotspot = false, private bool $indoor = false) { + //Set defaults + $this->created = new \DateTime('now'); + $this->updated = new \DateTime('now'); + + //Set collections $this->sessions = new ArrayCollection(); $this->snippets = new ArrayCollection(); $this->users = new ArrayCollection(); @@ -102,7 +73,7 @@ class Location { * * @return integer */ - public function getId(): int { + public function getId(): ?int { return $this->id; } @@ -129,25 +100,25 @@ class Location { } /** - * Set short + * Set description * - * @param string $short + * @param string $description * * @return Location */ - public function setShort(string $short): Location { - $this->short = $short; + public function setDescription(?string $description): Location { + $this->description = $description; return $this; } /** - * Get short + * Get description * * @return string */ - public function getShort(): string { - return $this->short; + public function getDescription(): ?string { + return $this->description; } /** @@ -260,10 +231,32 @@ class Location { return $this->longitude; } + /** + * Set indoor + * + * @param bool $indoor + * + * @return Session + */ + public function setIndoor(bool $indoor): Location { + $this->indoor = $indoor; + + return $this; + } + + /** + * Get indoor + * + * @return bool + */ + public function getIndoor(): bool { + return $this->indoor; + } + /** * Set hotspot * - * @param boolean $hotspot + * @param bool $hotspot * * @return Session */ @@ -276,7 +269,7 @@ class Location { /** * Get hotspot * - * @return boolean + * @return bool */ public function getHotspot(): bool { return $this->hotspot; @@ -343,7 +336,7 @@ class Location { * Remove session * * @param Session $session - * @return boolean + * @return bool */ public function removeSession(Session $session): bool { return $this->sessions->removeElement($session); @@ -375,7 +368,7 @@ class Location { * Remove snippet * * @param Snippet $snippet - * @return boolean + * @return bool */ public function removeSnippet(Snippet $snippet): bool { return $this->snippets->removeElement($snippet); @@ -398,6 +391,9 @@ class Location { * @return Location */ public function addUser(User $user): Location { + //Add from owning side + $user->addLocation($this); + $this->users[] = $user; return $this; @@ -407,9 +403,16 @@ class Location { * Remove user * * @param User $user - * @return boolean + * @return bool */ public function removeUser(User $user): bool { + if (!$this->locations->contains($user)) { + return true; + } + + //Remove from owning side + $user->removeLocation($this); + return $this->users->removeElement($user); } @@ -427,9 +430,9 @@ class Location { */ public function preUpdate(PreUpdateEventArgs $eventArgs) { //Check that we have a location instance - if (($user = $eventArgs->getEntity()) instanceof Location) { + if (($location = $eventArgs->getObject()) instanceof Location) { //Set updated value - $user->setUpdated(new \DateTime('now')); + $location->setUpdated(new \DateTime('now')); } }