1 <?php
declare(strict_types
=1);
4 * This file is part of the Rapsys AirBundle package.
6 * (c) Raphaël Gertz <symfony@rapsys.eu>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Rapsys\AirBundle\Entity
;
14 use Doctrine\Common\Collections\Collection
;
15 use Doctrine\Common\Collections\ArrayCollection
;
16 use Doctrine\ORM\Event\PreUpdateEventArgs
;
35 private string $access;
40 private ?string $refresh;
45 private \DateTime
$expired;
50 private \DateTime
$created;
55 private \DateTime
$updated;
58 * @var \Doctrine\Common\Collections\Collection
60 private Collection
$googleCalendars;
63 * @var \Rapsys\AirBundle\Entity\User
70 * @param \Rapsys\AirBundle\Entity\User $user The user
71 * @param string The token user mail
72 * @param string The access token identifier
73 * @param \DateTime The access token expires
74 * @param ?string The refresh token identifier
76 public function __construct(User
$user, string $mail, string $access, \DateTime
$expired, ?string $refresh = null) {
80 $this->access
= $access;
81 $this->refresh
= $refresh;
82 $this->expired
= $expired;
83 $this->created
= new \
DateTime('now');
84 $this->updated
= new \
DateTime('now');
85 $this->googleCalendars
= new ArrayCollection();
93 public function getId(): ?int {
100 * @param string $mail
101 * @return GoogleToken
103 public function setMail(string $mail): GoogleToken
{
114 public function getMail(): string {
121 * @param string $access
123 * @return GoogleToken
125 public function setAccess(string $access): GoogleToken
{
126 $this->access
= $access;
136 public function getAccess(): string {
137 return $this->access
;
143 * @param string $refresh
145 * @return GoogleToken
147 public function setRefresh(?string $refresh): GoogleToken
{
148 $this->refresh
= $refresh;
158 public function getRefresh(): ?string {
159 return $this->refresh
;
165 * @param \DateTime $expired
167 * @return GoogleToken
169 public function setExpired(\DateTime
$expired): GoogleToken
{
170 $this->expired
= $expired;
180 public function getExpired(): \DateTime
{
181 return $this->expired
;
187 * @param \DateTime $created
189 * @return GoogleToken
191 public function setCreated(\DateTime
$created): GoogleToken
{
192 $this->created
= $created;
202 public function getCreated(): \DateTime
{
203 return $this->created
;
209 * @param \DateTime $updated
211 * @return GoogleToken
213 public function setUpdated(\DateTime
$updated): GoogleToken
{
214 $this->updated
= $updated;
224 public function getUpdated(): \DateTime
{
225 return $this->updated
;
229 * Add google calendar
231 * @param GoogleCalendar $googleCalendar
235 public function addGoogleCalendar(GoogleCalendar
$googleCalendar): User
{
236 $this->googleCalendars
[] = $googleCalendar;
242 * Remove google calendar
244 * @param GoogleCalendar $googleCalendar
246 public function removeGoogleCalendar(GoogleCalendar
$googleCalendar): bool {
247 return $this->googleCalendars
->removeElement($googleCalendar);
251 * Get google calendars
253 * @return \Doctrine\Common\Collections\Collection
255 public function getGoogleCalendars(): Collection
{
256 return $this->googleCalendars
;
262 * @param \Rapsys\AirBundle\Entity\User $user
264 * @return GoogleToken
266 public function setUser(User
$user): GoogleToken
{
275 * @return \Rapsys\AirBundle\Entity\User
277 public function getUser(): User
{
284 public function preUpdate(PreUpdateEventArgs
$eventArgs): ?GoogleToken
{
285 //Check that we have an snippet instance
286 if (($entity = $eventArgs->getObject()) instanceof GoogleToken
) {
288 return $entity->setUpdated(new \
DateTime('now'));