391 lines
7.2 KiB
PHP
391 lines
7.2 KiB
PHP
<?php
|
|
|
|
/*
|
|
* doughnutwedding.com
|
|
* Copyright (C) 2017 http://doughnutwedding.com eric@doughnutwedding.com
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
namespace Sikofitt\App\Entity;
|
|
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
use Symfony\Component\Security\Core\Encoder\BCryptPasswordEncoder;
|
|
use Symfony\Component\Validator\Constraints as Assert;
|
|
|
|
/**
|
|
* Class User.
|
|
*
|
|
* @ORM\Entity(repositoryClass="Sikofitt\App\Repository\UserRepository")
|
|
* @ORM\Table(name="users")
|
|
*/
|
|
class User
|
|
{
|
|
const KATRINA_SIDE = 'Katrina';
|
|
|
|
const ERIC_SIDE = 'Eric';
|
|
|
|
/**
|
|
* @ORM\Id()
|
|
* @ORM\Column(name="id", type="integer", nullable=false, unique=true)
|
|
* @ORM\GeneratedValue(strategy="IDENTITY")
|
|
*
|
|
* @var int
|
|
*/
|
|
private $id;
|
|
|
|
/**
|
|
* @ORM\Column(name="first_name", type="string", length=255, nullable=false)
|
|
* @Assert\NotBlank()
|
|
* @Assert\Regex(pattern="/\w+/")
|
|
*/
|
|
private $firstName;
|
|
|
|
/**
|
|
* @ORM\Column(name="last_name", type="string", length=255, nullable=false)
|
|
* @Assert\NotBlank()
|
|
* @Assert\Regex(pattern="/\w+/")
|
|
*/
|
|
private $lastName;
|
|
|
|
/**
|
|
* @ORM\Column(type="boolean", name="is_family", nullable=false)
|
|
* @Assert\Type(type="bool")
|
|
*/
|
|
private $family = false;
|
|
|
|
/**
|
|
* @ORM\Column(type="string", name="family_side", nullable=true)
|
|
* @Assert\Choice(choices="{self::KATRINA_SIDE, self::ERIC_SIDE}", multiple=false)
|
|
*
|
|
* @var null|string
|
|
*/
|
|
private $familySide = null;
|
|
|
|
/**
|
|
* @ORM\Column(name="email", type="string", length=255)
|
|
* @Assert\Email(strict=true, checkHost=true, checkMX=true)
|
|
*/
|
|
private $email;
|
|
|
|
/**
|
|
* @var string
|
|
* @ORM\Column(name="password", type="string", length=255))
|
|
*/
|
|
private $password;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $plainPassword;
|
|
|
|
/**
|
|
* @var string
|
|
* @ORM\Column(name="token", type="string", length=255, nullable=true)
|
|
*/
|
|
private $token;
|
|
|
|
/**
|
|
* @var int
|
|
* @ORM\OneToOne(targetEntity="Sikofitt\App\Entity\Rsvp", inversedBy="user", cascade={"persist"})
|
|
*/
|
|
private $rsvp;
|
|
/**
|
|
* @ORM\Column(type="datetime", name="created")
|
|
*/
|
|
private $created = null;
|
|
|
|
/**
|
|
* @ORM\Column(type="datetime", name="updated")
|
|
*/
|
|
private $updated = null;
|
|
|
|
public function __construct()
|
|
{
|
|
if (null === $this->created) {
|
|
$this->created = new \DateTime('now');
|
|
}
|
|
$this->updated = new \DateTime('now');
|
|
}
|
|
|
|
/**
|
|
* Get id.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getId()
|
|
{
|
|
return $this->id;
|
|
}
|
|
|
|
/**
|
|
* Set firstName.
|
|
*
|
|
* @param string $firstName
|
|
*
|
|
* @return User
|
|
*/
|
|
public function setFirstName($firstName)
|
|
{
|
|
$this->firstName = $firstName;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get firstName.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getFirstName()
|
|
{
|
|
return $this->firstName;
|
|
}
|
|
|
|
/**
|
|
* Set lastName.
|
|
*
|
|
* @param string $lastName
|
|
*
|
|
* @return User
|
|
*/
|
|
public function setLastName($lastName)
|
|
{
|
|
$this->lastName = $lastName;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get lastName.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getLastName()
|
|
{
|
|
return $this->lastName;
|
|
}
|
|
|
|
/**
|
|
* Set family.
|
|
*
|
|
* @param bool $family
|
|
*
|
|
* @return User
|
|
*/
|
|
public function setFamily($family)
|
|
{
|
|
$this->family = $family;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get family.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function getFamily()
|
|
{
|
|
return $this->family;
|
|
}
|
|
|
|
/**
|
|
* Set familySide.
|
|
*
|
|
* @param string $familySide
|
|
*
|
|
* @return User
|
|
*/
|
|
public function setFamilySide($familySide)
|
|
{
|
|
$this->familySide = $familySide;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get familySide.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getFamilySide()
|
|
{
|
|
return $this->familySide;
|
|
}
|
|
|
|
/**
|
|
* Set email.
|
|
*
|
|
* @param string $email
|
|
*
|
|
* @return User
|
|
*/
|
|
public function setEmail($email)
|
|
{
|
|
$this->email = $email;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get email.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getEmail()
|
|
{
|
|
return $this->email;
|
|
}
|
|
|
|
/**
|
|
* @param string $password
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setPassword($password)
|
|
{
|
|
$encoder = new BCryptPasswordEncoder(14);
|
|
|
|
$salt = bin2hex(random_bytes(16));
|
|
$this->password = $encoder->encodePassword($password, $salt);
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getPassword()
|
|
{
|
|
return $this->password;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getPlainPassword(): string
|
|
{
|
|
if (null === $this->plainPassword) {
|
|
return '';
|
|
} else {
|
|
return $this->plainPassword;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param string $plainPassword
|
|
*
|
|
* @return User
|
|
*/
|
|
public function setPlainPassword(string $plainPassword): User
|
|
{
|
|
$this->plainPassword = $plainPassword;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param string $token
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setToken($token)
|
|
{
|
|
$this->token = $token;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getToken()
|
|
{
|
|
return $this->token;
|
|
}
|
|
|
|
/**
|
|
* Set created.
|
|
*
|
|
* @param \DateTime $created
|
|
*
|
|
* @return User
|
|
*/
|
|
public function setCreated($created)
|
|
{
|
|
$this->created = $created;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get created.
|
|
*
|
|
* @return \DateTime
|
|
*/
|
|
public function getCreated()
|
|
{
|
|
return $this->created;
|
|
}
|
|
|
|
/**
|
|
* Set updated.
|
|
*
|
|
* @param \DateTime $updated
|
|
*
|
|
* @return User
|
|
*/
|
|
public function setUpdated($updated)
|
|
{
|
|
$this->updated = $updated;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get updated.
|
|
*
|
|
* @return \DateTime
|
|
*/
|
|
public function getUpdated()
|
|
{
|
|
return $this->updated;
|
|
}
|
|
|
|
/**
|
|
* Set rsvp.
|
|
*
|
|
* @param \Sikofitt\App\Entity\Rsvp $rsvp
|
|
*
|
|
* @return User
|
|
*/
|
|
public function setRsvp(\Sikofitt\App\Entity\Rsvp $rsvp = null)
|
|
{
|
|
$this->rsvp = $rsvp;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get rsvp.
|
|
*
|
|
* @return \Sikofitt\App\Entity\Rsvp
|
|
*/
|
|
public function getRsvp()
|
|
{
|
|
return $this->rsvp;
|
|
}
|
|
}
|