<?php
namespace App\Entity;
use App\Entity\Model\UserModel;
use App\Entity\ReseauSociaux\Comments;
use App\Entity\ReseauSociaux\Conversation;
use App\Entity\ReseauSociaux\Espace;
use App\Entity\ReseauSociaux\Message;
use App\Entity\ReseauSociaux\Notifications;
use App\Entity\ReseauSociaux\Publication;
use App\Entity\ReseauSociaux\PostLike;
use App\Entity\ReseauSociaux\SharePost;
use Doctrine\ORM\Mapping as ORM;
use App\Repository\UserRepository;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass=UserRepository::class)
* @UniqueEntity(fields={"email"}, message="Cette adresse mail est déjà utilisée")
*/
class User extends UserModel implements UserInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"post:read", "connect:read","show:read", "publication:read", "message:read", "commentaire:read", "notif:read"})
*/
private $id;
/**
* @ORM\Column(type="string", length=10, nullable=true)
*/
private $civility;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*
* @Assert\NotBlank(message="Veuillez renseigner votre prénom")
* @Groups({"post:read","connect:read","show:read", "publication:read", "commentaire:read", "notif:read","message:read"})
*/
private $firstName;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*
* @Assert\NotBlank(message="Veuillez renseigner votre nom")
* @Groups({"post:read","connect:read","show:read", "publication:read", "commentaire:read", "notif:read","message:read"})
*/
private $lastName;
/**
* @ORM\Column(type="string", length=10)
* @Groups("show:read")
*/
private $phone;
/**
* @ORM\Column(type="date", nullable=true)
*/
private $weddingDate;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"post:read","connect:read", "publication:read", "show:read", "commentaire:read", "notif:read"})
*/
private $image;
/**
* @ORM\OneToMany(targetEntity=Command::class, mappedBy="client")
*/
private $commands;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $idStripe;
/**
* @ORM\OneToMany(targetEntity=WishList::class, mappedBy="user")
*/
private $wishLists;
/**
* @ORM\OneToMany(targetEntity=Avis::class, mappedBy="client")
*/
private $avis;
/**
* @ORM\OneToMany(targetEntity=Messaging::class, mappedBy="messageUser") *
*/
private $messagings;
/**
* @ORM\OneToMany(targetEntity=Ticket::class, mappedBy="createdBy", orphanRemoval=true)
*/
private $tickets;
/**
* @ORM\OneToMany(targetEntity=TableUser::class, mappedBy="userClient", cascade={"remove"})
*/
private $tableUsers;
/**
* @ORM\OneToMany(targetEntity=Litige::class, mappedBy="user")
*/
private $litiges;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $livraisonAdress;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $livraisonZipCode;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $livraisonCity;
/**
* @ORM\Column(type="datetime", nullable=true, options={"default": "CURRENT_TIMESTAMP"})
* @Assert\NotBlank(message="Veuillez renseigner votre date de naissance !!")
*/
private $birthAt;
/**
* @ORM\Column(type="string", length=3, nullable=true)
* @Assert\NotBlank(message="Veuillez renseigner votre nationalité !!")
*/
private $nationality;
/**
* @ORM\Column(type="string", length=3, nullable=true)
* @Assert\NotBlank(message="Veuillez renseigner votre pays de résidence !!")
*/
private $countryResidence;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $mangoId;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isValid;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $serviceAddress;
/**
* @ORM\Column(type="string", length=5, nullable=true)
*/
private $serviceZipCode;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $serviceCity;
/**
* @ORM\OneToMany(targetEntity=Annonce::class, mappedBy="users")
*/
private $annonces;
/**
* @ORM\OneToMany(targetEntity=Location::class, mappedBy="product", orphanRemoval=true)
*/
private $locations;
/**
* @ORM\OneToMany(targetEntity=Reservation::class, mappedBy="client", orphanRemoval=true)
*/
private $reservations;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups("post:read","connect:read","show:read")
*/
private $statuCon;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups("post:read","connect:read")
*/
private $etatNetwork;
/**
* @ORM\OneToMany(targetEntity=Caution::class, mappedBy="user")
*/
private $cautions;
/**
* @ORM\OneToMany(targetEntity=Message::class, mappedBy="sender")
*/
private $messages;
/**
* @ORM\OneToMany(targetEntity=Conversation::class, mappedBy="utilisateur1")
*/
private $conversations;
/**
* @ORM\OneToMany(targetEntity=Espace::class, mappedBy="propriotaire")
* @Groups("post:read")
*/
private $espaces;
/**
* @ORM\OneToMany(targetEntity=Publication::class, mappedBy="client")
*/
private $publications;
/**
* @ORM\ManyToMany(targetEntity=Espace::class, inversedBy="users")
* @Groups("post:read")
*/
private $follow;
/**
* @ORM\OneToMany(targetEntity=Comments::class, mappedBy="author")
*/
private $comments;
/**
* @ORM\OneToMany(targetEntity=Notifications::class, mappedBy="user")
*/
private $notifications;
/**
* @ORM\OneToMany(targetEntity=PostLike::class, mappedBy="user")
*/
private $likes;
/**
* @ORM\OneToMany(targetEntity=SharePost::class, mappedBy="author")
*/
private $share;
/**
* @ORM\OneToMany(targetEntity=PendingLocation::class, mappedBy="user")
*/
private $pendingLocations;
/**
* @ORM\OneToMany(targetEntity=PendingReservation::class, mappedBy="user")
*/
private $pendingReservations;
/**
* @ORM\OneToMany(targetEntity=Notification::class, mappedBy="customer")
*/
private $notificationReservation;
/**
* @ORM\Column(type="json")
* @Groups({"show:read"})
*/
protected $roles = [];
/**
* @Groups({"show:read"})
*/
public function getRoles(): array
{
$roles = $this->roles;
// guarantee every user at least has ROLE_USER
$roles[] = 'ROLE_USER';
return array_unique($roles);
}
public function setRoles(array $roles): self
{
$this->roles = $roles;
return $this;
}
public function __construct()
{
$this->commands = new ArrayCollection();
$this->wishLists = new ArrayCollection();
$this->avis = new ArrayCollection();
$this->messagings = new ArrayCollection();
$this->tickets = new ArrayCollection();
$this->tableUsers = new ArrayCollection();
$this->litiges = new ArrayCollection();
$this->isValid = false;
$this->annonces = new ArrayCollection();
$this->locations = new ArrayCollection();
$this->reservations = new ArrayCollection();
$this->cautions = new ArrayCollection();
$this->messages = new ArrayCollection();
$this->conversations = new ArrayCollection();
$this->espaces = new ArrayCollection();
$this->publications = new ArrayCollection();
$this->follow = new ArrayCollection();
$this->comments = new ArrayCollection();
$this->notifications = new ArrayCollection();
$this->likes = new ArrayCollection();
$this->share = new ArrayCollection();
$this->pendingLocations = new ArrayCollection();
$this->pendingReservations = new ArrayCollection();
$this->notificationReservation = new ArrayCollection();
}
/**
* @Groups({"show:read", "publication:read"})
*/
public function getId(): ?int
{
return $this->id;
}
public function getCivility(): ?string
{
return $this->civility;
}
public function setCivility(?string $civility): self
{
$this->civility = $civility;
return $this;
}
/**
* @Groups("show:read", "publication:read")
*/
public function getFirstName(): ?string
{
return $this->firstName;
}
public function setFirstName(?string $firstName): self
{
$this->firstName = $firstName;
return $this;
}
/**
* @Groups("show:read", "publication:read")
*/
public function getLastName(): ?string
{
return $this->lastName;
}
public function setLastName(?string $lastName): self
{
$this->lastName = $lastName;
return $this;
}
public function getPhone(): ?string
{
return $this->phone;
}
public function setPhone(?string $phone): self
{
$this->phone = $phone;
return $this;
}
public function getWeddingDate(): ?\DateTimeInterface
{
return $this->weddingDate;
}
public function setWeddingDate(?\DateTimeInterface $weddingDate): self
{
$this->weddingDate = $weddingDate;
return $this;
}
/**
* @Groups("show:read", "publication:read")
*/
public function getImage(): ?string
{
return $this->image;
}
public function setImage(?string $image): self
{
$this->image = $image;
return $this;
}
/**
* @return Collection|Command[]
*/
public function getCommands(): Collection
{
return $this->commands;
}
public function addCommand(Command $command): self
{
if (!$this->commands->contains($command)) {
$this->commands[] = $command;
$command->setClient($this);
}
return $this;
}
public function removeCommand(Command $command): self
{
if ($this->commands->contains($command)) {
$this->commands->removeElement($command);
// set the owning side to null (unless already changed)
if ($command->getClient() === $this) {
$command->setClient(null);
}
}
return $this;
}
public function getIdStripe(): ?string
{
return $this->idStripe;
}
public function setIdStripe(?string $idStripe): self
{
$this->idStripe = $idStripe;
return $this;
}
/**
* @return Collection|WishList[]
*/
public function getWishLists(): Collection
{
return $this->wishLists;
}
public function addWishList(WishList $wishList): self
{
if (!$this->wishLists->contains($wishList)) {
$this->wishLists[] = $wishList;
$wishList->setUser($this);
}
return $this;
}
public function removeWishList(WishList $wishList): self
{
if ($this->wishLists->contains($wishList)) {
$this->wishLists->removeElement($wishList);
// set the owning side to null (unless already changed)
if ($wishList->getUser() === $this) {
$wishList->setUser(null);
}
}
return $this;
}
/**
* @return Collection|Avis[]
*/
public function getAvis(): Collection
{
return $this->avis;
}
public function addAvi(Avis $avi): self
{
if (!$this->avis->contains($avi)) {
$this->avis[] = $avi;
$avi->setClient($this);
}
return $this;
}
public function removeAvi(Avis $avi): self
{
if ($this->avis->contains($avi)) {
$this->avis->removeElement($avi);
// set the owning side to null (unless already changed)
if ($avi->getClient() === $this) {
$avi->setClient(null);
}
}
return $this;
}
/**
* @return Collection|Messaging[]
*/
public function getMessagings(): Collection
{
return $this->messagings;
}
public function addMessaging(Messaging $messaging): self
{
if (!$this->messagings->contains($messaging)) {
$this->messagings[] = $messaging;
$messaging->setMessageUser($this);
}
return $this;
}
public function removeMessaging(Messaging $messaging): self
{
if ($this->messagings->contains($messaging)) {
$this->messagings->removeElement($messaging);
// set the owning side to null (unless already changed)
if ($messaging->getMessageUser() === $this) {
$messaging->setMessageUser(null);
}
}
return $this;
}
/**
* @return Collection|Ticket[]
*/
public function getTickets(): Collection
{
return $this->tickets;
}
public function addTicket(Ticket $ticket): self
{
if (!$this->tickets->contains($ticket)) {
$this->tickets[] = $ticket;
$ticket->setCreatedBy($this);
}
return $this;
}
public function removeTicket(Ticket $ticket): self
{
if ($this->tickets->contains($ticket)) {
$this->tickets->removeElement($ticket);
// set the owning side to null (unless already changed)
if ($ticket->getCreatedBy() === $this) {
$ticket->setCreatedBy(null);
}
}
return $this;
}
public function displayName()
{
return $this->firstName . ' ' . $this->lastName . ' - ' . $this->email;
}
/**
* @return Collection|TableUser[]
*/
public function getTableUsers(): Collection
{
return $this->tableUsers;
}
public function addTableUser(TableUser $tableUser): self
{
if (!$this->tableUsers->contains($tableUser)) {
$this->tableUsers[] = $tableUser;
$tableUser->setUserClient($this);
}
return $this;
}
public function removeTableUser(TableUser $tableUser): self
{
if ($this->tableUsers->contains($tableUser)) {
$this->tableUsers->removeElement($tableUser);
// set the owning side to null (unless already changed)
if ($tableUser->getUserClient() === $this) {
$tableUser->setUserClient(null);
}
}
return $this;
}
/**
* @return Collection|Litige[]
*/
public function getLitiges(): Collection
{
return $this->litiges;
}
public function addLitige(Litige $litige): self
{
if (!$this->litiges->contains($litige)) {
$this->litiges[] = $litige;
$litige->setUser($this);
}
return $this;
}
public function removeLitige(Litige $litige): self
{
if ($this->litiges->contains($litige)) {
$this->litiges->removeElement($litige);
// set the owning side to null (unless already changed)
if ($litige->getUser() === $this) {
$litige->setUser(null);
}
}
return $this;
}
public function getLivraisonAdress(): ?string
{
return $this->livraisonAdress;
}
public function setLivraisonAdress(?string $livraisonAdress): self
{
$this->livraisonAdress = $livraisonAdress;
return $this;
}
public function getLivraisonZipCode(): ?string
{
return $this->livraisonZipCode;
}
public function setLivraisonZipCode(?string $livraisonZipCode): self
{
$this->livraisonZipCode = $livraisonZipCode;
return $this;
}
public function getLivraisonCity(): ?string
{
return $this->livraisonCity;
}
public function setLivraisonCity(?string $livraisonCity): self
{
$this->livraisonCity = $livraisonCity;
return $this;
}
public function getBirthAt(): ?\DateTimeInterface
{
return $this->birthAt;
}
public function setBirthAt(?\DateTimeInterface $birthAt): self
{
$this->birthAt = $birthAt;
return $this;
}
public function getNationality(): ?string
{
return $this->nationality;
}
public function setNationality(?string $nationality): self
{
$this->nationality = $nationality;
return $this;
}
public function getCountryResidence(): ?string
{
return $this->countryResidence;
}
public function setCountryResidence(?string $countryResidence): self
{
$this->countryResidence = $countryResidence;
return $this;
}
public function getMangoId(): ?string
{
return $this->mangoId;
}
public function setMangoId(string $mangoId): self
{
$this->mangoId = $mangoId;
return $this;
}
public function getIsValid(): ?bool
{
return $this->isValid;
}
public function setIsValid(?bool $isValid): self
{
$this->isValid = $isValid;
return $this;
}
public function getServiceAddress(): ?string
{
return $this->serviceAddress;
}
public function setServiceAddress(?string $serviceAddress): self
{
$this->serviceAddress = $serviceAddress;
return $this;
}
public function getServiceZipCode(): ?string
{
return $this->serviceZipCode;
}
public function setServiceZipCode(?string $serviceZipCode): self
{
$this->serviceZipCode = $serviceZipCode;
return $this;
}
public function getServiceCity(): ?string
{
return $this->serviceCity;
}
public function setServiceCity(?string $serviceCity): self
{
$this->serviceCity = $serviceCity;
return $this;
}
/**
* @return Collection|Annonce[]
*/
public function getAnnonces(): Collection
{
return $this->annonces;
}
public function addAnnonce(Annonce $annonce): self
{
if (!$this->annonces->contains($annonce)) {
$this->annonces[] = $annonce;
$annonce->setUsers($this);
}
return $this;
}
public function removeAnnonce(Annonce $annonce): self
{
if ($this->annonces->removeElement($annonce)) {
// set the owning side to null (unless already changed)
if ($annonce->getUsers() === $this) {
$annonce->setUsers(null);
}
}
return $this;
}
/**
* @return Collection|Location[]
*/
public function getLocations(): Collection
{
return $this->locations;
}
public function addLocation(Location $location): self
{
if (!$this->locations->contains($location)) {
$this->locations[] = $location;
$location->setProduct($this);
}
return $this;
}
public function removeLocation(Location $location): self
{
if ($this->locations->removeElement($location)) {
// set the owning side to null (unless already changed)
if ($location->getProduct() === $this) {
$location->setProduct(null);
}
}
return $this;
}
/**
* @return Collection|Reservation[]
*/
public function getReservations(): Collection
{
return $this->reservations;
}
public function addReservation(Reservation $reservation): self
{
if (!$this->reservations->contains($reservation)) {
$this->reservations[] = $reservation;
$reservation->setClient($this);
}
return $this;
}
public function removeReservation(Reservation $reservation): self
{
if ($this->reservations->removeElement($reservation)) {
// set the owning side to null (unless already changed)
if ($reservation->getClient() === $this) {
$reservation->setClient(null);
}
}
return $this;
}
/*public function getStatusUser(): ?bool
{
return $this->status_User;
}*/
public function getStatuCon(): ?bool
{
return $this->statuCon;
}
public function setStatuCon(?bool $statuCon): self
{
$this->statuCon = $statuCon;
return $this;
}
public function getEtatNetwork(): ?\DateTimeInterface
{
return $this->etatNetwork;
}
public function setEtatNetwork(\DateTimeInterface $etatNetwork): self
{
$this->etatNetwork = $etatNetwork;
return $this;
}
public function __toString()
{
return $this->getFirstName();
}
/**
* @return Collection|Caution[]
*/
public function getCautions(): Collection
{
return $this->cautions;
}
public function addCaution(Caution $caution): self
{
if (!$this->cautions->contains($caution)) {
$this->cautions[] = $caution;
$caution->setUser($this);
}
return $this;
}
public function removeCaution(Caution $caution): self
{
if ($this->cautions->removeElement($caution)) {
// set the owning side to null (unless already changed)
if ($caution->getUser() === $this) {
$caution->setUser(null);
}
}
return $this;
}
/**
* @return Collection|Message[]
*/
public function getMessages(): Collection
{
return $this->messages;
}
public function addMessage(Message $message): self
{
if (!$this->messages->contains($message)) {
$this->messages[] = $message;
$message->setSender($this);
}
return $this;
}
public function removeMessage(Message $message): self
{
if ($this->messages->removeElement($message)) {
// set the owning side to null (unless already changed)
if ($message->getSender() === $this) {
$message->setSender(null);
}
}
return $this;
}
/**
* @return Collection|Conversation[]
*/
public function getConversations(): Collection
{
return $this->conversations;
}
public function addConversation(Conversation $conversation): self
{
if (!$this->conversations->contains($conversation)) {
$this->conversations[] = $conversation;
$conversation->setUtilisateur1($this);
}
return $this;
}
public function removeConversation(Conversation $conversation): self
{
if ($this->conversations->removeElement($conversation)) {
// set the owning side to null (unless already changed)
if ($conversation->getUtilisateur1() === $this) {
$conversation->setUtilisateur1(null);
}
}
return $this;
}
/**
* @return Collection|Espace[]
*/
public function getEspaces(): Collection
{
return $this->espaces;
}
public function addEspace(Espace $espace): self
{
if (!$this->espaces->contains($espace)) {
$this->espaces[] = $espace;
$espace->setPropriotaire($this);
}
return $this;
}
public function removeEspace(Espace $espace): self
{
if ($this->espaces->removeElement($espace)) {
// set the owning side to null (unless already changed)
if ($espace->getPropriotaire() === $this) {
$espace->setPropriotaire(null);
}
}
return $this;
}
/**
* @return Collection|Publication[]
*/
public function getPublications(): Collection
{
return $this->publications;
}
public function addPublication(Publication $publication): self
{
if (!$this->publications->contains($publication)) {
$this->publications[] = $publication;
$publication->setClient($this);
}
return $this;
}
public function removePublication(Publication $publication): self
{
if ($this->publications->removeElement($publication)) {
// set the owning side to null (unless already changed)
if ($publication->getClient() === $this) {
$publication->setClient(null);
}
}
return $this;
}
/**
* @return Collection|Espace[]
*/
public function getFollow(): Collection
{
return $this->follow;
}
public function addFollow(Espace $follow): self
{
if (!$this->follow->contains($follow)) {
$this->follow[] = $follow;
}
return $this;
}
public function removeFollow(Espace $follow): self
{
$this->follow->removeElement($follow);
return $this;
}
/**
* @return Collection|Comments[]
*/
public function getComments(): Collection
{
return $this->comments;
}
public function addComment(Comments $comment): self
{
if (!$this->comments->contains($comment)) {
$this->comments[] = $comment;
$comment->setAuthor($this);
}
return $this;
}
public function removeComment(Comments $comment): self
{
if ($this->comments->removeElement($comment)) {
// set the owning side to null (unless already changed)
if ($comment->getAuthor() === $this) {
$comment->setAuthor(null);
}
}
return $this;
}
/**
* @return Collection|Notifications[]
*/
public function getNotifications(): Collection
{
return $this->notifications;
}
public function addNotification(Notifications $notification): self
{
if (!$this->notifications->contains($notification)) {
$this->notifications[] = $notification;
$notification->setUser($this);
}
return $this;
}
public function removeNotification(Notifications $notification): self
{
if ($this->notifications->removeElement($notification)) {
// set the owning side to null (unless already changed)
if ($notification->getUser() === $this) {
$notification->setUser(null);
}
}
return $this;
}
/**
* @return Collection|PostLike[]
*/
public function getLikes(): Collection
{
return $this->likes;
}
public function addLike(PostLike $like): self
{
if (!$this->likes->contains($like)) {
$this->likes[] = $like;
$like->setUser($this);
}
return $this;
}
public function removeLike(PostLike $like): self
{
if ($this->likes->removeElement($like)) {
// set the owning side to null (unless already changed)
if ($like->getUser() === $this) {
$like->setUser(null);
}
}
return $this;
}
/**
* @return Collection|SharePost[]
*/
public function getShare(): Collection
{
return $this->share;
}
public function addShare(SharePost $share): self
{
if (!$this->share->contains($share)) {
$this->share[] = $share;
$share->setAuthor($this);
}
return $this;
}
public function removeShare(SharePost $share): self
{
if ($this->share->removeElement($share)) {
// set the owning side to null (unless already changed)
if ($share->getAuthor() === $this) {
$share->setAuthor(null);
}
}
return $this;
}
/**
* @return Collection<int, PendingLocation>
*/
public function getPendingLocations(): Collection
{
return $this->pendingLocations;
}
public function addPendingLocation(PendingLocation $pendingLocation): self
{
if (!$this->pendingLocations->contains($pendingLocation)) {
$this->pendingLocations[] = $pendingLocation;
$pendingLocation->setUser($this);
}
return $this;
}
public function removePendingLocation(PendingLocation $pendingLocation): self
{
if ($this->pendingLocations->removeElement($pendingLocation)) {
// set the owning side to null (unless already changed)
if ($pendingLocation->getUser() === $this) {
$pendingLocation->setUser(null);
}
}
return $this;
}
/**
* @return Collection<int, PendingReservation>
*/
public function getPendingReservations(): Collection
{
return $this->pendingReservations;
}
public function addPendingReservation(PendingReservation $pendingReservation): self
{
if (!$this->pendingReservations->contains($pendingReservation)) {
$this->pendingReservations[] = $pendingReservation;
$pendingReservation->setUser($this);
}
return $this;
}
public function removePendingReservation(PendingReservation $pendingReservation): self
{
if ($this->pendingReservations->removeElement($pendingReservation)) {
// set the owning side to null (unless already changed)
if ($pendingReservation->getUser() === $this) {
$pendingReservation->setUser(null);
}
}
return $this;
}
/**
* @return Collection<int, Notification>
*/
public function getNotificationReservation(): Collection
{
return $this->notificationReservation;
}
public function addNotificationReservation(Notification $notificationReservation): self
{
if (!$this->notificationReservation->contains($notificationReservation)) {
$this->notificationReservation[] = $notificationReservation;
$notificationReservation->setCustomer($this);
}
return $this;
}
public function removeNotificationReservation(Notification $notificationReservation): self
{
if ($this->notificationReservation->removeElement($notificationReservation)) {
// set the owning side to null (unless already changed)
if ($notificationReservation->getCustomer() === $this) {
$notificationReservation->setCustomer(null);
}
}
return $this;
}
}