src/Entity/User.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\UserRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  8. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  9. use Symfony\Component\Security\Core\User\UserInterface;
  10. #[ORM\Entity(repositoryClassUserRepository::class)]
  11. #[ORM\Table(name'`users`')]
  12. #[UniqueEntity(fields: ['email'], message'У вас уже есть аккаунт!')]
  13. class User implements UserInterfacePasswordAuthenticatedUserInterface
  14. {
  15.     const STATUS_USER_STEP_REGISTRATION_2 1;
  16.     const STATUS_USER_STEP_REGISTRATION_3 2;
  17.     const STATUS_USER_STEP_REGISTRATION_3_MODERATOR_VIEW 3;
  18.     const STATUS_USER_STEP_REGISTRATION_3_MODERATOR_DECLINE 4;
  19.     const STATUS_USER_READY 10;
  20.     const STATUS_USER_BLOCKED 11;
  21.     #[ORM\Id]
  22.     #[ORM\GeneratedValue]
  23.     #[ORM\Column]
  24.     private ?int $id null;
  25.     #[ORM\Column(length100uniquetrue)]
  26.     private ?string $email null;
  27.     #[ORM\Column(length30)]
  28.     private ?string $name null;
  29.     #[ORM\Column(length30nullabletrue)]
  30.     private ?string $lastname null;
  31.     #[ORM\Column(length20nullabletrue)]
  32.     private ?string $phone null;
  33.     #[ORM\Column(length30nullabletrue)]
  34.     private ?string $website null;
  35.     #[ORM\Column(nullabletrue)]
  36.     private ?string $about_me null;
  37.     #[ORM\Column(length255nullabletrue)]
  38.     private ?string $icon_path null;
  39.     #[ORM\Column(length180nullabletrue)]
  40.     private ?string $address null;
  41.     #[ORM\Column()]
  42.     private ?int $status null;
  43.     /**
  44.      * @var string The hashed password
  45.      */
  46.     #[ORM\Column]
  47.     private ?string $password null;
  48.     #[ORM\Column(
  49.         type'boolean',
  50.         nullablefalse,
  51.         options: ['default' => false]
  52.     )]
  53.     private bool $isVerified false;
  54.     #[ORM\ManyToOne(inversedBy'user_id')]
  55.     private ?Specialties $specialties null;
  56.     #[ORM\OneToMany(mappedBy'user'targetEntityShopCart::class, orphanRemovaltrue)]
  57.     private Collection $shopCartItems;
  58.     #[ORM\OneToMany(mappedBy'seller'targetEntityProduct::class, orphanRemovaltrue)]
  59.     private Collection $products;
  60.     #[ORM\OneToMany(mappedBy'user'targetEntityOrder::class, orphanRemovaltrue)]
  61.     private Collection $orders;
  62.     #[ORM\ManyToMany(targetEntityRoles::class, mappedBy'user')]
  63.     private Collection $roles;
  64.     #[ORM\OneToMany(mappedBy'user'targetEntityComment::class, orphanRemovaltrue)]
  65.     private Collection $comments;
  66.     public function __construct()
  67.     {
  68.         $this->shopCartItems = new ArrayCollection();
  69.         $this->products = new ArrayCollection();
  70.         $this->orders = new ArrayCollection();
  71.         $this->roles = new ArrayCollection();
  72.         $this->comments = new ArrayCollection();
  73.     }
  74.     public function getId(): ?int
  75.     {
  76.         return $this->id;
  77.     }
  78.     /**
  79.      * A visual identifier that represents this user.
  80.      *
  81.      * @see UserInterface
  82.      */
  83.     public function getUserIdentifier(): string
  84.     {
  85.         return (string) $this->email;
  86.     }
  87.     /**
  88.      * @see PasswordAuthenticatedUserInterface
  89.      */
  90.     public function getPassword(): string
  91.     {
  92.         return $this->password;
  93.     }
  94.     public function setPassword(string $password): self
  95.     {
  96.         $this->password $password;
  97.         return $this;
  98.     }
  99.     public function getEmail(): string
  100.     {
  101.         return $this->email;
  102.     }
  103.     public function setEmail(string $email): self
  104.     {
  105.         $this->email $email;
  106.         return $this;
  107.     }
  108.     /**
  109.      * @return string|null
  110.      */
  111.     public function getName(): ?string
  112.     {
  113.         return $this->name;
  114.     }
  115.     /**
  116.      * @param string|null $name
  117.      */
  118.     public function setName(?string $name): void
  119.     {
  120.         $this->name $name;
  121.     }
  122.     /**
  123.      * @return string|null
  124.      */
  125.     public function getLastname(): ?string
  126.     {
  127.         return $this->lastname;
  128.     }
  129.     /**
  130.      * @param string|null $lastname
  131.      */
  132.     public function setLastname(?string $lastname): void
  133.     {
  134.         $this->lastname $lastname;
  135.     }
  136.     /**
  137.      * @see UserInterface
  138.      */
  139.     public function eraseCredentials()
  140.     {
  141.         // If you store any temporary, sensitive data on the user, clear it here
  142.         // $this->plainPassword = null;
  143.     }
  144.     public function isVerified(): bool
  145.     {
  146.         return $this->isVerified;
  147.     }
  148.     public function setIsVerified(bool $isVerified): self
  149.     {
  150.         $this->isVerified $isVerified;
  151.         return $this;
  152.     }
  153.     /**
  154.      * @return string|null
  155.      */
  156.     public function getPhone(): ?string
  157.     {
  158.         return $this->phone;
  159.     }
  160.     /**
  161.      * @param string|null $phone
  162.      */
  163.     public function setPhone(?string $phone): void
  164.     {
  165.         $this->phone $phone;
  166.     }
  167.     /**
  168.      * @return string|null
  169.      */
  170.     public function getWebsite(): ?string
  171.     {
  172.         return $this->website;
  173.     }
  174.     /**
  175.      * @param string|null $website
  176.      */
  177.     public function setWebsite(?string $website): void
  178.     {
  179.         $this->website $website;
  180.     }
  181.     /**
  182.      * @return string|null
  183.      */
  184.     public function getAboutMe(): ?string
  185.     {
  186.         return $this->about_me;
  187.     }
  188.     /**
  189.      * @param string|null $about_me
  190.      */
  191.     public function setAboutMe(?string $about_me): void
  192.     {
  193.         $this->about_me $about_me;
  194.     }
  195.     /**
  196.      * @return string|null
  197.      */
  198.     public function getIconPath(): ?string
  199.     {
  200.         return $this->icon_path;
  201.     }
  202.     /**
  203.      * @param string|null $icon_path
  204.      */
  205.     public function setIconPath(?string $icon_path): void
  206.     {
  207.         $this->icon_path $icon_path;
  208.     }
  209.     /**
  210.      * @return string|null
  211.      */
  212.     public function getAddress(): ?string
  213.     {
  214.         return $this->address;
  215.     }
  216.     /**
  217.      * @param string|null $address
  218.      */
  219.     public function setAddress(?string $address): void
  220.     {
  221.         $this->address $address;
  222.     }
  223.     /**
  224.      * @return int|null
  225.      */
  226.     public function getStatus(): ?int
  227.     {
  228.         return $this->status;
  229.     }
  230.     /**
  231.      * @param int|null $status
  232.      */
  233.     public function setStatus(?int $status): void
  234.     {
  235.         $this->status $status;
  236.     }
  237.     /**
  238.      * @return Specialties|null
  239.      */
  240.     public function getSpecialties(): ?Specialties
  241.     {
  242.         return $this->specialties;
  243.     }
  244.     /**
  245.      * @param Specialties|null $specialties
  246.      * @return $this
  247.      */
  248.     public function setSpecialties(?Specialties $specialties): self
  249.     {
  250.         $this->specialties $specialties;
  251.         return $this;
  252.     }
  253.     /**
  254.      * @return Collection<int, ShopCart>
  255.      */
  256.     public function getShopCartItems(): Collection
  257.     {
  258.         return $this->shopCartItems;
  259.     }
  260.     /**
  261.      * @param ShopCart $shopCartItem
  262.      * @return $this
  263.      */
  264.     public function addShopCartItem(ShopCart $shopCartItem): self
  265.     {
  266.         if (!$this->shopCartItems->contains($shopCartItem)) {
  267.             $this->shopCartItems->add($shopCartItem);
  268.             $shopCartItem->setUser($this);
  269.         }
  270.         return $this;
  271.     }
  272.     /**
  273.      * @param ShopCart $shopCartItem
  274.      * @return $this
  275.      */
  276.     public function removeShopCartItem(ShopCart $shopCartItem): self
  277.     {
  278.         if ($this->shopCartItems->removeElement($shopCartItem)) {
  279.             // set the owning side to null (unless already changed)
  280.             if ($shopCartItem->getUser() === $this) {
  281.                 $shopCartItem->setUser(null);
  282.             }
  283.         }
  284.         return $this;
  285.     }
  286.     /**
  287.      * @return Collection<int, Product>
  288.      */
  289.     public function getProducts(): Collection
  290.     {
  291.         return $this->products;
  292.     }
  293.     /**
  294.      * @param Product $product
  295.      * @return $this
  296.      */
  297.     public function addProduct(Product $product): self
  298.     {
  299.         if (!$this->products->contains($product)) {
  300.             $this->products->add($product);
  301.             $product->setSeller($this);
  302.         }
  303.         return $this;
  304.     }
  305.     /**
  306.      * @param Product $product
  307.      * @return $this
  308.      */
  309.     public function removeProduct(Product $product): self
  310.     {
  311.         if ($this->products->removeElement($product)) {
  312.             // set the owning side to null (unless already changed)
  313.             if ($product->getSeller() === $this) {
  314.                 $product->setSeller(null);
  315.             }
  316.         }
  317.         return $this;
  318.     }
  319.     /**
  320.      * @return Collection<int, Order>
  321.      */
  322.     public function getOrders(): Collection
  323.     {
  324.         return $this->orders;
  325.     }
  326.     /**
  327.      * @param Order $orders
  328.      * @return $this
  329.      */
  330.     public function addOrders(Order $orders): self
  331.     {
  332.         if (!$this->orders->contains($orders)) {
  333.             $this->orders->add($orders);
  334.             $orders->setUser($this);
  335.         }
  336.         return $this;
  337.     }
  338.     /**
  339.      * @param Order $orders
  340.      * @return $this
  341.      */
  342.     public function removeOrders(Order $orders): self
  343.     {
  344.         if ($this->orders->removeElement($orders)) {
  345.             if ($orders->getUser() === $this) {
  346.                 $orders->setUser(null);
  347.             }
  348.         }
  349.         return $this;
  350.     }
  351.     /**
  352.      * @return array|string[]
  353.      */
  354.     public function getRoles(): array
  355.     {
  356.         $roles $this->roles->map(function (Roles $role) {
  357.             return $role->getName();
  358.         })->toArray();
  359.         $roles[] = Roles::USER_ROLE_BUYER;
  360.         return array_unique($roles);
  361.     }
  362.     public function addRoles(Roles $roles): static
  363.     {
  364.         if (!$this->roles->contains($roles)) {
  365.             $this->roles->add($roles);
  366.             $roles->addUser($this);
  367.         }
  368.         return $this;
  369.     }
  370.     public function removeRoles(Roles $roles): static
  371.     {
  372.         if ($this->roles->removeElement($roles)) {
  373.             $roles->removeUser($this);
  374.         }
  375.         return $this;
  376.     }
  377.     /**
  378.      * @return Collection<int, Comment>
  379.      */
  380.     public function getComments(): Collection
  381.     {
  382.         return $this->comments;
  383.     }
  384.     public function addComment(Comment $comment): static
  385.     {
  386.         if (!$this->comments->contains($comment)) {
  387.             $this->comments->add($comment);
  388.             $comment->setUser($this);
  389.         }
  390.         return $this;
  391.     }
  392.     public function removeComment(Comment $comment): static
  393.     {
  394.         if ($this->comments->removeElement($comment)) {
  395.             // set the owning side to null (unless already changed)
  396.             if ($comment->getUser() === $this) {
  397.                 $comment->setUser(null);
  398.             }
  399.         }
  400.         return $this;
  401.     }
  402.     /**
  403.      * Есть ли у пользователя роль "Продавец"
  404.      *
  405.      * @return bool
  406.      */
  407.     public function isSeller(): bool
  408.     {
  409.         return in_array(Roles::USER_ROLE_SELLER$this->getRoles());
  410.     }
  411.     /**
  412.      * Есть ли у пользователя роль "Админ"
  413.      *
  414.      * @return bool
  415.      */
  416.     public function isAdmin(): bool
  417.     {
  418.         return in_array(Roles::USER_ROLE_ADMIN$this->getRoles());
  419.     }
  420.     /**
  421.      * Есть ли у пользователя роль "Модератор"
  422.      *
  423.      * @return bool
  424.      */
  425.     public function isModerator(): bool
  426.     {
  427.         return in_array(Roles::USER_ROLE_MODERATOR$this->getRoles());
  428.     }
  429.     /**
  430.      * Статус пользователя "Заблокирован"
  431.      *
  432.      * @return bool
  433.      */
  434.     public function isBlocked(): bool
  435.     {
  436.         return $this->getStatus() === self::STATUS_USER_BLOCKED;
  437.     }
  438. }