<?php
namespace App\Entity\Gos;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\CartParticipantRepository")
* @ORM\HasLifecycleCallbacks
*/
class CartParticipant
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $firstName;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $lastName;
/**
* @ORM\Column(type="string", length=30, nullable=true)
*/
private $phoneNumber;
/**
* @ORM\Column(type="string", length=255)
*/
private $email;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $position;
/**
* @ORM\Column(type="string", length=8, nullable=true)
*/
private $pwz;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $correspondenceFirstName;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $correspondenceLastName;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $correspondenceAddress;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $correspondenceCity;
/**
* @var string
*
* @ORM\Column(type="string", length=9, nullable=true)
*/
private $correspondencePostalcode;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Gos\ProductCart", inversedBy="cartParticipant")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private $productCart;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Gos\ProductVariant", inversedBy="cartParticipantsPrimary")
* @ORM\JoinColumn()
*/
private $primaryProductVariant;
/**
* @ORM\ManyToMany(targetEntity="EventProductVariantGroupItem", inversedBy="cartParticipants")
* @ORM\JoinColumn()
*/
private $productVariantGroupItems;
/**
* @ORM\Column(type="datetime")
*/
private $createdAt;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $updatedAt;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $productDuplicationMessageDisplayed;
public function hasAddress()
{
if (
empty($this->correspondenceFirstName)
|| empty($this->correspondenceLastName)
|| empty($this->correspondenceAddress)
|| empty($this->correspondenceCity)
|| empty($this->correspondencePostalcode)
)
{
return false;
}
return true;
}
public function removeAllProductVariantGroupItem(): self
{
foreach ($this->getProductVariantGroupItems() as $productVariantGroupItem)
{
if ($this->productVariantGroupItems->contains($productVariantGroupItem))
{
$this->productVariantGroupItems->removeElement($productVariantGroupItem);
}
}
return $this;
}
public function hasProductVariantGroupItem($id)
{
foreach ($this->getProductVariantGroupItems() as $productVariantGroupItem)
{
if ($productVariantGroupItem->getId() == $id)
{
return true;
}
}
return false;
}
public function getGroupedProductVariantGroupItems()
{
$groupedProducts = array();
foreach ($this->getProductVariantGroupItems() as $productVariantGroupItem)
{
$group = $productVariantGroupItem->getProductVariantGroup();
$groupedProducts[$group->getId()]['group'] = $group;
$groupedProducts[$group->getId()]['items'][] = $productVariantGroupItem;
}
return $groupedProducts;
}
/** @ORM\PrePersist() */
public function prePersist()
{
$this->createdAt = new \DateTime();
}
/** @ORM\PreUpdate() */
public function preUpdate()
{
$this->updatedAt = new \DateTime();
}
public function __toString()
{
return (string)$this->email;
}
//------------------------------ setters & getters
public function __construct()
{
$this->productVariantGroupItems = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getFirstName(): ?string
{
return $this->firstName;
}
public function setFirstName(?string $firstName): self
{
$this->firstName = $firstName;
return $this;
}
public function getLastName(): ?string
{
return $this->lastName;
}
public function setLastName(?string $lastName): self
{
$this->lastName = $lastName;
return $this;
}
public function getPhoneNumber(): ?string
{
return $this->phoneNumber;
}
public function setPhoneNumber(?string $phoneNumber): self
{
$this->phoneNumber = $phoneNumber;
return $this;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
public function getPosition(): ?string
{
return $this->position;
}
public function setPosition(?string $position): self
{
$this->position = $position;
return $this;
}
public function getPwz(): ?string
{
return $this->pwz;
}
public function setPwz(?string $pwz): self
{
$this->pwz = $pwz;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
public function getProductCart(): ?ProductCart
{
return $this->productCart;
}
public function setProductCart(?ProductCart $productCart): self
{
$this->productCart = $productCart;
return $this;
}
public function getPrimaryProductVariant(): ?ProductVariant
{
return $this->primaryProductVariant;
}
public function setPrimaryProductVariant(?ProductVariant $primaryProductVariant): self
{
$this->primaryProductVariant = $primaryProductVariant;
return $this;
}
/**
* @return Collection|EventProductVariantGroupItem[]
*/
public function getProductVariantGroupItems(): Collection
{
return $this->productVariantGroupItems;
}
public function addProductVariantGroupItem(EventProductVariantGroupItem $productVariantGroupItem): self
{
if (!$this->productVariantGroupItems->contains($productVariantGroupItem)) {
$this->productVariantGroupItems[] = $productVariantGroupItem;
}
return $this;
}
public function removeProductVariantGroupItem(EventProductVariantGroupItem $productVariantGroupItem): self
{
if ($this->productVariantGroupItems->contains($productVariantGroupItem)) {
$this->productVariantGroupItems->removeElement($productVariantGroupItem);
}
return $this;
}
public function getCorrespondenceFirstName(): ?string
{
return $this->correspondenceFirstName;
}
public function setCorrespondenceFirstName(?string $correspondenceFirstName): self
{
$this->correspondenceFirstName = $correspondenceFirstName;
return $this;
}
public function getCorrespondenceLastName(): ?string
{
return $this->correspondenceLastName;
}
public function setCorrespondenceLastName(?string $correspondenceLastName): self
{
$this->correspondenceLastName = $correspondenceLastName;
return $this;
}
public function getCorrespondenceAddress(): ?string
{
return $this->correspondenceAddress;
}
public function setCorrespondenceAddress(?string $correspondenceAddress): self
{
$this->correspondenceAddress = $correspondenceAddress;
return $this;
}
public function getCorrespondenceCity(): ?string
{
return $this->correspondenceCity;
}
public function setCorrespondenceCity(?string $correspondenceCity): self
{
$this->correspondenceCity = $correspondenceCity;
return $this;
}
public function getCorrespondencePostalcode(): ?string
{
return $this->correspondencePostalcode;
}
public function setCorrespondencePostalcode(?string $correspondencePostalcode): self
{
$this->correspondencePostalcode = $correspondencePostalcode;
return $this;
}
public function getProductDuplicationMessageDisplayed(): ?bool
{
return $this->productDuplicationMessageDisplayed;
}
public function setProductDuplicationMessageDisplayed(?bool $productDuplicationMessageDisplayed): self
{
$this->productDuplicationMessageDisplayed = $productDuplicationMessageDisplayed;
return $this;
}
}