src/Entity/User/User.php line 46

Open in your IDE?
  1. <?php 
  2. declare(strict_types=1);
  3. /**
  4.  * This file is part of the Symfony users-bundle package.
  5.  * (C) 2019 AVT-Korporacja Sp. z o.o.
  6.  */
  7. namespace App\Entity\User;
  8. use App\Entity\Address\Address;
  9. use App\Entity\Shop\ShopOrder;
  10. use Doctrine\Common\Collections\Collection;
  11. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  12. use Symfony\Component\Security\Core\User\UserInterface;
  13. use Doctrine\Common\Collections\ArrayCollection;
  14. use Doctrine\ORM\Mapping as ORM;
  15. use App\Entity\AbstractEntity;
  16. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  17. use DateTime;
  18. use Serializable;
  19. use function strval;
  20. use function json_decode;
  21. use function json_encode;
  22. use function is_null;
  23. use function is_array;
  24. use function array_key_exists;
  25. use function serialize;
  26. use function unserialize;
  27. /**
  28.  * @author Andrzej Dunowski <andrzej.dunowski@avt.pl>
  29.  * @author Przemysław Chrupek <przemyslaw.chrupek@avt.pl>
  30.  */
  31. /**
  32.  * @ORM\Entity(repositoryClass="App\Repository\User\UserRepository")
  33.  * @UniqueEntity(
  34.  *      fields={"email"},
  35.  *      message="Adres email już istnieje w naszej bazie"
  36.  * )
  37.  */
  38. class User extends AbstractEntity implements UserInterfaceSerializablePasswordAuthenticatedUserInterface
  39. {
  40.     const ROLE_USER 'ROLE_USER';
  41.     const ROLE_ADMIN 'ROLE_ADMIN';
  42.     const ROLE_SUPER_ADMIN 'ROLE_SUPER_ADMIN';
  43.     /**
  44.      * @ORM\Id
  45.      * @ORM\GeneratedValue
  46.      * @ORM\Column(name="id", type="integer", options={"unsigned": "true"})
  47.      */
  48.     private $id;
  49.     /**
  50.      * @ORM\Column(type="json")
  51.      */
  52.     private $roles = [];
  53.     /**
  54.      * @ORM\Column(name="active", type="boolean", options={"default": 1})
  55.      */
  56.     private $active false;
  57.     
  58.     /**
  59.      * @ORM\Column(name="date", type="datetime", options={"default": "CURRENT_TIMESTAMP"})
  60.      */
  61.     private $date;
  62.     
  63.     /**
  64.      * @var User
  65.      *
  66.      * @ORM\ManyToOne(targetEntity="App\Entity\User\User")
  67.      * @ORM\JoinColumn(name="user", referencedColumnName="id")
  68.      */
  69.     private $user;
  70.     
  71.     /**
  72.      * @ORM\Column(name="name", length=182, nullable=true)
  73.      */
  74.     private $name;
  75.     
  76.     /**
  77.      * @ORM\Column(name="lastname", length=182, nullable=true)
  78.      */
  79.     private $lastname;
  80.     
  81.     /**
  82.      * @ORM\Column(name="email", type="string", length=128, unique=true, options={"default": "NULL"})
  83.      */
  84.     private $email;
  85.     
  86.     /**
  87.      * @ORM\Column(name="password", type="string", length=128, options={"default": "NULL"})
  88.      */
  89.     private $password;
  90.     
  91.     /**
  92.      * @ORM\Column(name="code", type="string", length=128, nullable=true, options={"default": "NULL"})
  93.      */
  94.     private $code;
  95.     
  96.     /**
  97.      * @ORM\Column(name="api_key", type="string", length=32, nullable=true, unique=true, options={"default": "NULL"})
  98.      */
  99.     private $apiKey;
  100.     /**
  101.      * @ORM\Column(name="api_ips", type="text", nullable=true, options={"default": "NULL"})
  102.      */
  103.     private $apiIps;
  104.     /**
  105.      * @ORM\Column(name="params", nullable=true, type="text", options={"default": "NULL"})
  106.      */
  107.     private $params;
  108.     /**
  109.      * @ORM\OneToMany(targetEntity="App\Entity\Shop\Cart", mappedBy="user")
  110.      */
  111.     private $carts;
  112.     
  113.     /**
  114.      * @ORM\Column(name="date_last_login", type="datetime", nullable=true)
  115.      *
  116.      * @var DateTime|null
  117.      */
  118.     private $dateLastLogin;
  119.     /**
  120.      * 
  121.      * @ORM\Column(name="date_last_modified", type="datetime", nullable=true)
  122.      *
  123.      * @var DateTime|null
  124.      */
  125.     private $dateLastModified;
  126.     /**
  127.      * @ORM\OneToMany(targetEntity=ShopOrder::class, mappedBy="user")
  128.      */
  129.     private $shopOrders;
  130.     /**
  131.      * @ORM\OneToMany(targetEntity=Address::class, mappedBy="user")
  132.      */
  133.     private $addresses;
  134.     public function __construct()
  135.     {
  136.         $this->date = new DateTime;
  137.         $this->shopOrders = new ArrayCollection();
  138.         $this->addresses = new ArrayCollection();
  139.     }
  140.     
  141.     public function __toString(): string
  142.     {
  143.         return strval($this->name);
  144.     }
  145.     
  146.     public function getId(): ?int
  147.     {
  148.         return $this->id;
  149.     }
  150.     public function setId(?int $id): void
  151.     {
  152.         $this->id $id;
  153.     }
  154.     
  155.     public function getActive(): ?bool
  156.     {
  157.         return $this->active;
  158.     }
  159.     public function setActive(?bool $active): void
  160.     {
  161.         $this->active $active;
  162.     }
  163.     
  164.     public function getDate(): ?DateTime
  165.     {
  166.         return $this->date;
  167.     }
  168.     public function setDate(?DateTime $date): void
  169.     {
  170.         $this->date $date;
  171.     }
  172.     public function getRoles(): array
  173.     {
  174.         $roles $this->roles;
  175.     
  176.         return array_unique($roles);
  177.     }
  178.     public function setRoles(array $roles): void
  179.     {
  180.         $this->roles $roles;
  181.     }
  182.     public function addRole(string $role): void
  183.     {
  184.         $this->roles[] = $role;
  185.     }
  186.     public function removeRole(string $role): void
  187.     {
  188.         $index array_search($role$this->roles);
  189.         if($index !== FALSE) {
  190.             unset($this->roles[$index]);
  191.         }        
  192.     }
  193.     
  194.     public function getUser(): ?User
  195.     {
  196.         return $this->user;
  197.     }
  198.     public function setUser(User $user): void
  199.     {
  200.         $this->user $user;
  201.     }
  202.     
  203.     public function getName(): ?string
  204.     {
  205.         return $this->name;
  206.     }
  207.     public function setName(?string $name): void
  208.     {
  209.         $this->name $name;
  210.     }
  211.     
  212.     public function getLastname(): ?string
  213.     {
  214.         return $this->lastname;
  215.     }
  216.     public function setLastname(?string $lastname): void
  217.     {
  218.         $this->lastname $lastname;
  219.     }
  220.     public function getName2(): ?string
  221.     {
  222.         $name $this->name;
  223.         
  224.         return $name;
  225.     }
  226.     public function getFullName(): string
  227.     {
  228.         $name '';
  229.         if (!empty($this->name)) {
  230.             $name .= $this->name;
  231.         }
  232.         if (!empty($this->lastname)) {
  233.             if (!empty($this->name)) {
  234.                 $name .= ' ';
  235.             }
  236.             $name .= $this->lastname;
  237.         }
  238.         return $name;
  239.     }
  240.     
  241.     public function getUsername(): ?string
  242.     {
  243.         return $this->email;
  244.     }
  245.     
  246.     public function getEmail(): ?string
  247.     {
  248.         return $this->email;
  249.     }
  250.     public function setEmail(?string $email): void
  251.     {
  252.         $this->email $email;
  253.     }
  254.     public function getSalt()
  255.     {
  256.         return null;
  257.     }
  258.     
  259.     public function getPassword(): ?string
  260.     {
  261.         return $this->password;
  262.     }
  263.     
  264.     public function setPassword(?string $password): void
  265.     {
  266.         $this->password $password;
  267.     }
  268.     
  269.     public function getCode(): ?string
  270.     {
  271.         return $this->code;
  272.     }
  273.     
  274.     public function setCode(?string $code): void
  275.     {
  276.         $this->code $code;
  277.     }
  278.     public function getApiKey(): ?string
  279.     {
  280.         return $this->apiKey;
  281.     }
  282.     
  283.     public function setApiKey(?string $apiKey): void
  284.     {
  285.         $this->apiKey $apiKey;
  286.     }
  287.     public function getApiIps(): array
  288.     {
  289.         if (is_null($this->apiIps))
  290.         {
  291.             return [];
  292.         }
  293.         $apiIps json_decode($this->apiIpstrue);
  294.         return is_array($apiIps) ? $apiIps : [];
  295.     }
  296.     
  297.     public function setApiIps(array $apiIps): void
  298.     {
  299.         $this->apiIps count($apiIps) === null json_encode($apiIps);
  300.     }
  301.     public function getParams(): array
  302.     {
  303.         if (is_null($this->params))
  304.         {
  305.             return [];
  306.         }
  307.         $params json_decode($this->paramstrue);
  308.         return is_array($params) ? $params : [];
  309.     }
  310.     public function setParams(array $params): void
  311.     {
  312.         $this->params count($params) === null json_encode($params);
  313.     }
  314.     public function setParam(string $name$value): void
  315.     {
  316.         $params $this->getParams();
  317.         $params[$name] = $value;
  318.         $this->setParams($params);
  319.     }
  320.     public function getParam(string $param$default null)
  321.     {
  322.         $params $this->getParams();
  323.         
  324.         if (!is_array($params))
  325.         {
  326.             return $default;
  327.         }
  328.         
  329.         if (array_key_exists($param$params))
  330.         {
  331.             return $params[$param];
  332.         }
  333.         
  334.         return $default;
  335.     }
  336.     public function getDateLastLogin(): ?DateTime
  337.     {
  338.         return $this->dateLastLogin;
  339.     }
  340.     public function setDateLastLogin(?DateTime $dateLastLogin): void
  341.     {
  342.         $this->dateLastLogin $dateLastLogin;
  343.     }
  344.     public function getDateLastModified(): ?DateTime
  345.     {
  346.         return $this->dateLastModified;
  347.     }
  348.     public function setDateLastModified(?DateTime $dateLastModified): void
  349.     {
  350.         $this->dateLastModified $dateLastModified;
  351.     }
  352.     public function eraseCredentials()
  353.     {
  354.     }
  355.     
  356.     public function serialize(): string
  357.     {
  358.         return serialize([
  359.             $this->id,
  360.             $this->email,
  361.             $this->password
  362.         ]);
  363.     }
  364.     public function unserialize($serialized): void
  365.     {
  366.         list (
  367.             $this->id,
  368.             $this->email,
  369.             $this->password,
  370.         ) = unserialize($serialized);
  371.     }
  372.     public function getDataForApi(): array
  373.     {
  374.         return [
  375.             'id' => $this->id,
  376.             'name' => $this->name
  377.         ];
  378.     }
  379.     /**
  380.      * @return Collection|ShopOrder[]
  381.      */
  382.     public function getShopOrders(): Collection
  383.     {
  384.         return $this->shopOrders;
  385.     }
  386.     public function addShopOrder(ShopOrder $shopOrder): self
  387.     {
  388.         if (!$this->shopOrders->contains($shopOrder)) {
  389.             $this->shopOrders[] = $shopOrder;
  390.             $shopOrder->setUser($this);
  391.         }
  392.         return $this;
  393.     }
  394.     public function removeShopOrder(ShopOrder $shopOrder): self
  395.     {
  396.         if ($this->shopOrders->removeElement($shopOrder)) {
  397.             // set the owning side to null (unless already changed)
  398.             if ($shopOrder->getUser() === $this) {
  399.                 $shopOrder->setUser(null);
  400.             }
  401.         }
  402.         return $this;
  403.     }
  404.     /**
  405.      * @return Collection|Address[]
  406.      */
  407.     public function getAddresses(): Collection
  408.     {
  409.         return $this->addresses;
  410.     }
  411.     public function addAddress(Address $address): self
  412.     {
  413.         if (!$this->addresses->contains($address)) {
  414.             $this->addresses[] = $address;
  415.             $address->setUser($this);
  416.         }
  417.         return $this;
  418.     }
  419.     public function removeAddress(Address $address): self
  420.     {
  421.         if ($this->addresses->removeElement($address)) {
  422.             // set the owning side to null (unless already changed)
  423.             if ($address->getUser() === $this) {
  424.                 $address->setUser(null);
  425.             }
  426.         }
  427.         return $this;
  428.     }
  429.     public function getUserIdentifier(): string
  430.     {
  431.         return $this->email;
  432.     }
  433. }