<?php
namespace App\Entity\Accounts;
use App\Repository\Accounts\UsersRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* tUsers
*
* @ORM\Entity(repositoryClass="App\Repository\Accounts\UsersRepository")
* @ORM\Table(name="otp_accounts.tUsers", uniqueConstraints={@ORM\UniqueConstraint(name="fMail", columns={"fMail"}), @ORM\UniqueConstraint(name="fLogin", columns={"fLogin"})}, indexes={@ORM\Index(name="fSource", columns={"fSource", "fActive"}), @ORM\Index(name="fSubscribePausedTo", columns={"fSubscribePausedTo"}), @ORM\Index(name="fMaildeActivated", columns={"fMaildeActivated_delete"}), @ORM\Index(name="sub", columns={"fSubscribeMode_delete", "fSubscribePromo_delete", "fSource"}), @ORM\Index(name="fMailVerify", columns={"fMailVerify"}), @ORM\Index(name="fCountry", columns={"fCountry"}), @ORM\Index(name="fPhone", columns={"fPhone"}), @ORM\Index(name="fAutoReject", columns={"fAutoReject"}), @ORM\Index(name="fIp", columns={"fIp"}), @ORM\Index(name="fName", columns={"fName"}), @ORM\Index(name="fRegDate", columns={"fRegDate"}), @ORM\Index(name="fActive", columns={"fActive", "fReject_delete"})})
*/
class Users implements UserInterface
{
/**
* @var int
*
* @ORM\Column(name="rec_id", type="integer", nullable=false, options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
public function __construct()
{
$this->regDate = new \DateTime();
$this->recoveries = new ArrayCollection();
$this->userFavorites = new ArrayCollection();
}
/**
* @ORM\OneToMany(targetEntity="App\Entity\Accounts\UserTokens", mappedBy="user", cascade={"persist", "remove"})
*/
private $tokens;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Accounts\UserRecovery", mappedBy="user", cascade={"persist", "remove"})
*/
private $recoveries;
/**
* @return Collection|UserRecovery[]
*/
public function getRecoveries(): Collection
{
return $this->recoveries;
}
public function addRecovery(UserRecovery $recovery): static
{
if (!$this->recoveries->contains($recovery)) {
$this->recoveries[] = $recovery;
$recovery->setUser($this);
}
return $this;
}
public function removeRecovery(UserRecovery $recovery): static
{
if ($this->recoveries->removeElement($recovery)) {
// Установлюємо null у властивості user, щоб уникнути циклічної залежності
if ($recovery->getUser() === $this) {
$recovery->setUser(null);
}
}
return $this;
}
/**
* @ORM\OneToMany(targetEntity="UserFavorite", mappedBy="user", cascade={"persist", "remove"})
*/
private Collection $userFavorites;
public function getUserFavorites(): Collection
{
return $this->userFavorites;
}
public function addUserFavorite(UserFavorite $userFavorite): self
{
if (!$this->userFavorites->contains($userFavorite)) {
$this->userFavorites[] = $userFavorite;
$userFavorite->setUser($this);
}
return $this;
}
public function removeUserFavorite(UserFavorite $userFavorite): self
{
if ($this->userFavorites->removeElement($userFavorite)) {
if ($userFavorite->getUser() === $this) {
$userFavorite->setUser(null);
}
}
return $this;
}
/**
* @var string
*
* @ORM\Column(name="fLogin", type="string", length=50, nullable=false, options={"comment"="логин пользователя"})
*/
private $login;
/**
* @var string
*
* @ORM\Column(name="fPasswordHash", type="string", length=255, nullable=false, options={"fixed"=true})
*/
private $passwordHash;
/**
* @var string
*
* @ORM\Column(name="fName", type="string", length=64, nullable=false)
*/
private $name;
/**
* @var \DateTime|null
*
* @ORM\Column(name="fBirthDay", type="date", nullable=true)
*/
private ?\DateTimeInterface $birthDay = null;
/**
* @var string|null
*
* @ORM\Column(name="fSex", type="string", length=0, nullable=true)
*/
private $sex;
/**
* @var int|null
*
* @ORM\Column(name="fCountry", type="integer", nullable=true, options={"default"="3550","unsigned"=true})
*/
private $country = 3550;
/**
* @var int|null
*
* @ORM\Column(name="fCity", type="integer", nullable=true, options={"unsigned"=true})
*/
private $city;
/**
* @var string|null
*
* @ORM\Column(name="fText", type="text", length=65535, nullable=true)
*/
private $text;
/**
* @var string
*
* @ORM\Column(name="fUrl", type="string", length=255, nullable=false)
*/
private $url = '';
/**
* @var string
*
* @ORM\Column(name="fImage", type="string", length=32, nullable=false)
*/
private $image = '';
/**
* @var string
*
* @ORM\Column(name="fImageSize", type="string", length=12, nullable=false, options={"comment"="Размер (w,h)"})
*/
private $imageSize = '';
/**
* @var int
*
* @ORM\Column(name="fIp", type="bigint", nullable=false)
*/
private $ip;
/**
* @var int
*
* @ORM\Column(name="fRealIp", type="bigint", nullable=false, options={"comment"="не исп"})
*/
private $realIp = '';
/**
* @var string|null
*
* @ORM\Column(name="fMail", type="string", length=80, nullable=true)
*/
private $mail;
/**
* @var string|null
*
* @ORM\Column(name="fPhone", type="string", length=64, nullable=true, options={"comment"="Номер телефона"})
*/
private $phone;
/**
* @var string|null
*
* @ORM\Column(name="fPhoneSMS", type="string", length=6, nullable=true, options={"comment"="перевірка через СМС"})
*/
private $phoneSms;
/**
* @var string|null
*
* @ORM\Column(name="fPhone2", type="string", length=16, nullable=true, options={"comment"="Номер телефона"})
*/
private $phoneAdd;
/**
* @var string|null
*
* @ORM\Column(name="fPhone2SMS", type="string", length=6, nullable=true, options={"comment"="перевірка через СМС"})
*/
private $phoneAddSms;
/**
* @var string
*
* @ORM\Column(name="fMailVerify", type="string", length=0, nullable=false, options={"default"="no","comment"="активация"})
*/
private $mailVerify = 'no';
/**
* @var string
*
* @ORM\Column(name="fMailMode", type="string", length=0, nullable=false, options={"default"="invisible","comment"="статус для форума"})
*/
private $mailMode = 'invisible';
/**
* @var \DateTime
*
* @ORM\Column(name="fRegDate", type="datetime", nullable=false, options={"default"="CURRENT_TIMESTAMP"})
*/
private $regDate = 'CURRENT_TIMESTAMP';
/**
* @var \DateTime|null
*
* @ORM\Column(name="fLastUpdate", type="datetime", nullable=true, options={"comment"="дата последней правки"})
*/
private $lastUpdate;
/**
* @var \DateTime|null
*
* @ORM\Column(name="fLoginDate", type="datetime", nullable=true)
*/
private $loginDate;
/**
* @var string|null
*
* @ORM\Column(name="fSource", type="string", length=0, nullable=true, options={"comment"="от куда регистрация"})
*/
private $source = 'otpusk';
/**
* @var float
*
* @ORM\Column(name="fRating", type="float", precision=10, scale=1, nullable=false, options={"default"="0.0"})
*/
private $rating = 5;
/**
* @var string
*
* @ORM\Column(name="fActive", type="string", length=0, nullable=false, options={"default"="yes","comment"="выключен аккаунт или нет"})
*/
private $active = 'yes';
/**
* @var string
*
* @ORM\Column(name="fSocialNotice", type="string", length=0, nullable=false, options={"default"="add_in_friends,new_messages","comment"="о чем отсылать уведомления из соцсети"})
*/
private $socialNotice = 'add_in_friends,new_messages';
/**
* @var \DateTime|null
*
* @ORM\Column(name="fAutoReject", type="datetime", nullable=true, options={"comment"="Отписка при разборе возвратов"})
*/
private $autoReject;
// ----------------
/**
* @var \DateTime|null
*
* @ORM\Column(name="fSubscribePausedTo", type="date", nullable=true, options={"comment"="Пауза рассылки до"})
*/
private $subscribePausedTo;
/**
* @var string|null
*
* @ORM\Column(name="fSubscribePausedReason", type="string", length=255, nullable=true, options={"comment"="Причина паузы рассылки"})
*/
private $subscribePausedReason;
/**
* @var string
*
* @ORM\Column(name="fSubscribeMode_delete", type="string", length=0, nullable=false, options={"default"="my","comment"="удалить, не используется"})
*/
private $subscribeModeDelete = 'my';
/**
* @var string
*
* @ORM\Column(name="fSubscribePromo_delete", type="string", length=0, nullable=false, options={"default"="otpusk,turpravda,mandria"})
*/
private $subscribePromoDelete = 'otpusk,turpravda,mandria';
/**
* @var \DateTime|null
*
* @ORM\Column(name="fSubscribeSent_delete", type="datetime", nullable=true, options={"comment"="Последняя отправка"})
*/
private $subscribeSentDelete;
/**
* @var \DateTime|null
*
* @ORM\Column(name="fSubscribeReaded_delete", type="datetime", nullable=true, options={"comment"="Последнее прочтение"})
*/
private $subscribeReadedDelete;
/**
* @var \DateTime|null
*
* @ORM\Column(name="fSubscribeJumped_delete", type="datetime", nullable=true, options={"comment"="Последний переход"})
*/
private $subscribeJumpedDelete;
/**
* @var \DateTime|null
*
* @ORM\Column(name="fSubscribeRejected_delete", type="datetime", nullable=true, options={"comment"="Отписка пользователем"})
*/
private $subscribeRejectedDelete;
/**
* @var \DateTime|null
*
* @ORM\Column(name="fSubscribeReturned_delete", type="datetime", nullable=true, options={"comment"="Последний возврат"})
*/
private $subscribeReturnedDelete;
/**
* @var bool
*
* @ORM\Column(name="fLevel_delete", type="boolean", nullable=false, options={"default"="1","comment"="удалить, поле использовалось для модерации форума"})
*/
private $levelDelete = true;
/**
* @var bool|null
*
* @ORM\Column(name="fReject_delete", type="boolean", nullable=true, options={"comment"="Фатальная отписка, автоматическая или вручную"})
*/
private $rejectDelete = '0';
/**
* @var \DateTime|null
*
* @ORM\Column(name="fMaildeActivated_delete", type="datetime", nullable=true, options={"comment"="Дата отписки из крона по возврату"})
*/
private $maildeActivatedDelete;
public function getRoles(): array
{
return ['ROLE_USER'];
}
public function getSalt(): ?string
{
return null;
}
public function eraseCredentials(): void
{
}
public function getUserIdentifier(): string
{
return $this->login;
}
public function getUsername(): string
{
return $this->name;
}
public function getPassword(): ?string
{
return $this->passwordHash;
}
public function setPassword(string $passwordHash): static
{
$this->passwordHash = $passwordHash;
return $this;
}
// ==================
public function getId(): ?int
{
return $this->id;
}
public function getLogin(): ?string
{
return $this->login;
}
public function setLogin(string $login): static
{
$this->login = $login;
return $this;
}
public function getPasswordHash(): ?string
{
return $this->passwordHash;
}
public function setPasswordHash(string $passwordHash): static
{
$this->passwordHash = $passwordHash;
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): static
{
$this->name = $name;
return $this;
}
public function getBirthDay(): ?\DateTimeInterface
{
return $this->birthDay;
}
public function setBirthDay(?\DateTimeInterface $birthDay): static
{
$this->birthDay = $birthDay;
return $this;
}
public function getSex(): ?string
{
return $this->sex;
}
public function setSex(?string $sex): static
{
$this->sex = $sex;
return $this;
}
public function getCountry(): ?int
{
return $this->country;
}
public function setCountry(?int $country): static
{
$this->country = $country;
return $this;
}
public function getCity(): ?int
{
return $this->city;
}
public function setCity(?int $city): static
{
$this->city = $city;
return $this;
}
public function getText(): ?string
{
return $this->text;
}
public function setText(?string $text): static
{
$this->text = $text;
return $this;
}
public function getUrl(): ?string
{
return $this->url;
}
public function setUrl(string $url): static
{
$this->url = $url;
return $this;
}
public function getImage(): ?string
{
return $this->image;
}
public function getImageAvatar()
{
$h = dechex($this->id);
$l = strrev(wordwrap(strrev($h), 2, '|', 1));
$l = array_reverse(explode('|', $l));
if (empty($l[0])) $l[0] = 0;
if (empty($l[1])) $l[1] = 0;
if (empty($l[2])) $l[2] = 0;
if (empty($l[3])) $l[3] = 0;
return sprintf("%02s/%02s/%02s/%02s/", $l[3], $l[2], $l[1], $l[0]) . $this->id . '.jpg';
}
public function setImage(string $image): static
{
$this->image = $image;
return $this;
}
public function getImageSize(): ?string
{
return $this->imageSize;
}
public function setImageSize(string $imageSize): static
{
$this->imageSize = $imageSize;
return $this;
}
public function getIp(): ?string
{
return $this->ip;
}
public function setIp(string $ip): static
{
$this->ip = $ip;
return $this;
}
public function getRealIp(): ?string
{
return $this->realIp;
}
public function setRealIp(string $realIp): static
{
$this->realIp = $realIp;
return $this;
}
public function getMail(): ?string
{
return $this->mail;
}
public function setMail(?string $mail): static
{
$this->mail = $mail;
return $this;
}
public function getEmail(): ?string
{
return $this->mail;
}
public function setEmail(?string $mail): static
{
$this->mail = $mail;
return $this;
}
public function getPhone(): ?string
{
return $this->phone;
}
public function setPhone(?string $phone): static
{
$this->phone = $phone;
return $this;
}
public function getPhoneSms(): ?string
{
return $this->phoneSms;
}
public function setPhoneSms(?string $phone): static
{
$this->phoneSms = $phone;
return $this;
}
public function getPhoneAdd(): ?string
{
return $this->phoneAdd;
}
public function setPhoneAdd(?string $phone): static
{
$this->phoneAdd = $phone;
return $this;
}
public function getPhoneAddSms(): ?string
{
return $this->phoneAddSms;
}
public function setPhoneAddSms(?string $phone): static
{
$this->phoneAddSms = $phone;
return $this;
}
public function getMailVerify(): ?string
{
return $this->mailVerify;
}
public function setMailVerify(string $mailVerify): static
{
$this->mailVerify = $mailVerify;
return $this;
}
public function getMailMode(): ?string
{
return $this->mailMode;
}
public function setMailMode(string $mailMode): static
{
$this->mailMode = $mailMode;
return $this;
}
public function getRegDate(): ?\DateTimeInterface
{
return $this->regDate;
}
public function setRegDate(\DateTimeInterface $regDate): static
{
$this->regDate = $regDate;
return $this;
}
public function getLastUpdate(): ?\DateTimeInterface
{
return $this->lastUpdate;
}
public function setLastUpdate(?\DateTimeInterface $lastUpdate): static
{
$this->lastUpdate = $lastUpdate;
return $this;
}
public function getLoginDate(): ?\DateTimeInterface
{
return $this->loginDate;
}
public function setLoginDate(?\DateTimeInterface $loginDate): static
{
$this->loginDate = $loginDate;
return $this;
}
public function getSubscribePausedTo(): ?\DateTimeInterface
{
return $this->subscribePausedTo;
}
public function setSubscribePausedTo(?\DateTimeInterface $subscribePausedTo): static
{
$this->subscribePausedTo = $subscribePausedTo;
return $this;
}
public function getSubscribePausedReason(): ?string
{
return $this->subscribePausedReason;
}
public function setSubscribePausedReason(?string $subscribePausedReason): static
{
$this->subscribePausedReason = $subscribePausedReason;
return $this;
}
public function getSource(): ?string
{
return $this->source;
}
public function setSource(?string $source): static
{
$this->source = $source;
return $this;
}
public function getRating(): ?float
{
return $this->rating;
}
public function setRating(float $rating): static
{
$this->rating = $rating;
return $this;
}
public function getActive(): ?string
{
return $this->active;
}
public function setActive(string $active): static
{
$this->active = $active;
return $this;
}
public function getSocialNotice(): ?string
{
return $this->socialNotice;
}
public function setSocialNotice(string $socialNotice): static
{
$this->socialNotice = $socialNotice;
return $this;
}
public function getAutoReject(): ?\DateTimeInterface
{
return $this->autoReject;
}
public function setAutoReject(?\DateTimeInterface $autoReject): static
{
$this->autoReject = $autoReject;
return $this;
}
}