src/Entity/Account.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  6. use Symfony\Component\Security\Core\User\UserInterface;
  7. use App\Repository\AccountRepository;
  8. /**
  9.  * Account
  10.  *
  11.  * @ORM\Table(name="accounts", uniqueConstraints={@ORM\UniqueConstraint(name="email", columns={"email"})}, indexes={@ORM\Index(name="accountsPlans", columns={"planid"})})
  12.  * @ORM\Entity(repositoryClass=AccountRepository::class)
  13.  * @UniqueEntity(fields={"email"}, message="We are unable to create your account with that information.")
  14.  */
  15. class Account implements UserInterface
  16. {
  17.     /**
  18.      * @var int
  19.      *
  20.      * @ORM\Column(name="id", type="integer", nullable=false)
  21.      * @ORM\Id
  22.      * @ORM\GeneratedValue(strategy="IDENTITY")
  23.      */
  24.     private $id;
  25.     /**
  26.      * @var string
  27.      *
  28.      * @ORM\Column(name="firstname", type="string", length=255, nullable=false)
  29.      */
  30.     private $firstname;
  31.     /**
  32.      * @var string
  33.      *
  34.      * @ORM\Column(name="lastname", type="string", length=255, nullable=false)
  35.      */
  36.     private $lastname;
  37.     /**
  38.      * @var string
  39.      *
  40.      * @ORM\Column(name="password", type="string", length=255, nullable=false)
  41.      */
  42.     private $password;
  43.     /**
  44.      * @var string
  45.      *
  46.      * @ORM\Column(name="email", type="string", length=255, nullable=false)
  47.      */
  48.     private $email;
  49.     /**
  50.      * @var bool|null
  51.      *
  52.      * @ORM\Column(name="exempt", type="boolean", nullable=true)
  53.      */
  54.     private $exempt;
  55.     /**
  56.      * @var bool|null
  57.      *
  58.      * @ORM\Column(name="active", type="boolean", nullable=true)
  59.      */
  60.     private $active;
  61.     /**
  62.      * @var \DateTime|null
  63.      *
  64.      * @ORM\Column(name="lastlogin", type="datetime", nullable=true)
  65.      */
  66.     private $lastlogin;
  67.     /**
  68.      * @var \DateTime|null
  69.      *
  70.      * @ORM\Column(name="created", type="datetime", nullable=true)
  71.      */
  72.     private $created;
  73.     /**
  74.      * @var \DateTime|null
  75.      *
  76.      * @ORM\Column(name="modified", type="datetime", nullable=true)
  77.      */
  78.     private $modified;
  79.     /**
  80.      * @var Plan|null
  81.      *
  82.      * @ORM\ManyToOne(targetEntity="Plan")
  83.      * @ORM\JoinColumns({
  84.      *   @ORM\JoinColumn(name="planid", referencedColumnName="id")
  85.      * })
  86.      */
  87.     private $plan;
  88.     /**
  89.      * @ORM\Column(type="json")
  90.      */
  91.     private $roles = [];
  92.     /**
  93.      * @ORM\Column(type="boolean")
  94.      */
  95.     private $isVerified true;
  96.     /**
  97.      * @var Plan
  98.      *
  99.      * @ORM\ManyToOne(targetEntity="Plan")
  100.      * @ORM\JoinColumns({
  101.      *   @ORM\JoinColumn(name="desired_plan", referencedColumnName="id")
  102.      * })
  103.      */
  104.     private $desiredPlan;
  105.     /**
  106.      * @var Service[]
  107.      *
  108.      * @ORM\ManyToMany(targetEntity="App\Entity\Service", mappedBy="accounts")
  109.      */
  110.     private $services;
  111.     /**
  112.      * @var Payment[]
  113.      *
  114.      * @ORM\OneToMany(targetEntity="App\Entity\Payment", mappedBy="account")
  115.      * @ORM\OrderBy({"created" = "DESC"})
  116.      */
  117.     private $payments;
  118.     /**
  119.      * @var ApiKey[]
  120.      *
  121.      * @ORM\OneToMany(targetEntity="App\Entity\ApiKey", mappedBy="account")
  122.      */
  123.     private $apiKeys;
  124.     /**
  125.      * Account constructor.
  126.      */
  127.     public function __construct()
  128.     {
  129.         $this->created = new \DateTime();
  130.         $this->modified = new \DateTime();
  131.         $this->services = new ArrayCollection();
  132.         // Give everyone a ROLE_USER
  133.         $this->roles = ['ROLE_USER'];
  134.     }
  135.     public function getId(): ?int
  136.     {
  137.         return $this->id;
  138.     }
  139.     public function getFirstname(): ?string
  140.     {
  141.         return $this->firstname;
  142.     }
  143.     public function setFirstname(string $firstname): self
  144.     {
  145.         $this->firstname $firstname;
  146.         return $this;
  147.     }
  148.     public function getLastname(): ?string
  149.     {
  150.         return $this->lastname;
  151.     }
  152.     public function setLastname(string $lastname): self
  153.     {
  154.         $this->lastname $lastname;
  155.         return $this;
  156.     }
  157.     public function getUsername(): string
  158.     {
  159.         return (string)$this->email;
  160.     }
  161.     public function getPassword(): ?string
  162.     {
  163.         return $this->password;
  164.     }
  165.     public function setPassword(?string $password): self
  166.     {
  167.         $this->password $password;
  168.         return $this;
  169.     }
  170.     public function getEmail(): ?string
  171.     {
  172.         return $this->email;
  173.     }
  174.     public function setEmail(string $email): self
  175.     {
  176.         $this->email $email;
  177.         return $this;
  178.     }
  179.     public function getActive(): ?bool
  180.     {
  181.         return $this->active;
  182.     }
  183.     public function setActive(?bool $active): self
  184.     {
  185.         $this->active $active;
  186.         return $this;
  187.     }
  188.     public function setLastlogin(\DateTime $lastlogin): self
  189.     {
  190.         $this->lastlogin $lastlogin;
  191.         return $this;
  192.     }
  193.     public function getCreated(): ?\DateTimeInterface
  194.     {
  195.         return $this->created;
  196.     }
  197.     public function getModified(): ?\DateTimeInterface
  198.     {
  199.         return $this->modified;
  200.     }
  201.     public function getPlan()
  202.     {
  203.         return $this->plan;
  204.     }
  205.     public function setPlan(Plan $plan): self
  206.     {
  207.         $this->plan $plan;
  208.         return $this;
  209.     }
  210.     public function getRoles(): array
  211.     {
  212.         $roles $this->roles;
  213.         // guarantee every user at least has ROLE_USER
  214.         $roles[] = 'ROLE_USER';
  215.         return array_unique($roles);
  216.     }
  217.     public function getSalt()
  218.     {
  219.         return null;
  220.     }
  221.     public function eraseCredentials()
  222.     {
  223.     }
  224.     public function isVerified(): bool
  225.     {
  226.         return $this->isVerified;
  227.     }
  228.     public function setIsVerified(bool $isVerified): self
  229.     {
  230.         $this->isVerified $isVerified;
  231.         return $this;
  232.     }
  233.     /**
  234.      * @return Plan
  235.      */
  236.     public function getDesiredPlan(): Plan
  237.     {
  238.         return $this->desiredPlan;
  239.     }
  240.     /**
  241.      * @param Plan $desiredPlan
  242.      * @return $this
  243.      */
  244.     public function setDesiredPlan(Plan $desiredPlan): self
  245.     {
  246.         $this->desiredPlan $desiredPlan;
  247.         return $this;
  248.     }
  249.     /**
  250.      * @return Service[]
  251.      */
  252.     public function getServices()
  253.     {
  254.         return $this->services;
  255.     }
  256.     /**
  257.      * @param Service $service
  258.      * @return $this
  259.      */
  260.     public function addService(Service $service) : self
  261.     {
  262.         if (!$this->services->contains($service)) {
  263.             $this->services[] = $service;
  264.             $service->addAccount($this);
  265.         }
  266.         return $this;
  267.     }
  268.     /**
  269.      * @param Service $service
  270.      */
  271.     public function removeService(Service $service)
  272.     {
  273.         if ($this->services->contains($service)) {
  274.             $this->services->removeElement($service);
  275.             $service->removeAccount($this);
  276.         }
  277.     }
  278.     /**
  279.      * @return Payment[]
  280.      */
  281.     public function getPayments()
  282.     {
  283.         return $this->payments;
  284.     }
  285.     /**
  286.      * @return ApiKey[]
  287.      */
  288.     public function getApiKeys()
  289.     {
  290.         return $this->apiKeys;
  291.     }
  292.     /**
  293.      * @param \DateTime|null $modified
  294.      */
  295.     public function setModified(?\DateTime $modified): void
  296.     {
  297.         $this->modified $modified;
  298.     }
  299. }