X-Git-Url: https://git.rapsys.eu/airbundle/blobdiff_plain/c812e773a8195a42a718ce2de0a4e9bca65382aa..eb1f263248166f36f5eb7dc17e39721e80b3e7c2:/Entity/Location.php diff --git a/Entity/Location.php b/Entity/Location.php index 984e8d8..d70bddf 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,88 +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 + * Create datetime */ - protected $description; + private \DateTime $created; /** - * @var string + * Update datetime */ - private $address; + private \DateTime $updated; /** - * @var string + * Sessions collection */ - private $zipcode; + private Collection $sessions; /** - * @var string + * Snippets collection */ - private $city; + private Collection $snippets; /** - * @var string - */ - private $latitude; - - /** - * @var string + * Users collection */ - private $longitude; - - /** - * @var bool - */ - private $indoor; - - /** - * @var bool - */ - private $hotspot; - - /** - * @var \DateTime - */ - private $created; - - /** - * @var \DateTime - */ - private $updated; - - /** - * @var ArrayCollection - */ - private $sessions; - - /** - * @var ArrayCollection - */ - private $snippets; - - /** - * @var ArrayCollection - */ - private $users; + private Collection $users; /** * Constructor */ - public function __construct() { + public function __construct(private string $title = '', private string $address = '', private string $zipcode = '0', private string $city = '', private string $latitude = '0', private string $longitude = '0', private bool $hotspot = false, private bool $indoor = false) { //Set defaults - $this->description = null; $this->created = new \DateTime('now'); $this->updated = new \DateTime('now'); + + //Set collections $this->sessions = new ArrayCollection(); $this->snippets = new ArrayCollection(); $this->users = new ArrayCollection(); @@ -111,7 +73,7 @@ class Location { * * @return integer */ - public function getId(): int { + public function getId(): ?int { return $this->id; } @@ -430,7 +392,7 @@ class Location { */ public function addUser(User $user): Location { //Add from owning side - $user->addSubscriber($this); + $user->addLocation($this); $this->users[] = $user; @@ -444,8 +406,12 @@ class Location { * @return bool */ public function removeUser(User $user): bool { + if (!$this->locations->contains($user)) { + return true; + } + //Remove from owning side - $user->removeSubscriber($this); + $user->removeLocation($this); return $this->users->removeElement($user); } @@ -464,7 +430,7 @@ class Location { */ public function preUpdate(PreUpdateEventArgs $eventArgs) { //Check that we have a location instance - if (($location = $eventArgs->getEntity()) instanceof Location) { + if (($location = $eventArgs->getObject()) instanceof Location) { //Set updated value $location->setUpdated(new \DateTime('now')); }