<?php
namespace App\Entity;
use App\Repository\ProductRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=ProductRepository::class)
*/
class Product
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $product_name;
/**
* @ORM\Column(type="string", length=255)
*/
private $product_description_short;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $product_description_long;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $product_image;
/**
* @ORM\Column(type="boolean")
*/
private $is_public;
/**
* @ORM\Column(type="boolean")
*/
private $is_active;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $reg_by;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $reg_datetime;
/**
* @ORM\OneToMany(targetEntity=Cart::class, mappedBy="product")
*/
private $carts;
/**
* @ORM\OneToMany(targetEntity=Addon::class, mappedBy="product")
*/
private $addons;
/**
* @ORM\OneToMany(targetEntity=SubscriptionPlanPrice::class, mappedBy="product")
*/
private $subscriptionPlanPrices;
/**
* @ORM\ManyToMany(targetEntity=SubscriptionPlan::class, inversedBy="products")
*/
private $subscription_plan;
/**
* @ORM\OneToMany(targetEntity=Subscription::class, mappedBy="product")
*/
private $subscriptions;
/**
* @ORM\OneToMany(targetEntity=ServiceState::class, mappedBy="product")
*/
private $serviceStates;
public function __construct()
{
$this->carts = new ArrayCollection();
$this->addons = new ArrayCollection();
$this->subscription_plan = new ArrayCollection();
$this->subscriptions = new ArrayCollection();
$this->serviceStates = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getProductName(): ?string
{
return $this->product_name;
}
public function setProductName(string $product_name): self
{
$this->product_name = $product_name;
return $this;
}
public function getProductDescriptionShort(): ?string
{
return $this->product_description_short;
}
public function setProductDescriptionShort(string $product_description_short): self
{
$this->product_description_short = $product_description_short;
return $this;
}
public function getProductDescriptionLong(): ?string
{
return $this->product_description_long;
}
public function setProductDescriptionLong(?string $product_description_long): self
{
$this->product_description_long = $product_description_long;
return $this;
}
public function getProductImage(): ?string
{
return $this->product_image;
}
public function setProductImage(?string $product_image): self
{
$this->product_image = $product_image;
return $this;
}
public function isIsPublic(): ?bool
{
return $this->is_public;
}
public function setIsPublic(bool $is_public): self
{
$this->is_public = $is_public;
return $this;
}
public function isIsActive(): ?bool
{
return $this->is_active;
}
public function setIsActive(bool $is_active): self
{
$this->is_active = $is_active;
return $this;
}
public function getRegBy(): ?int
{
return $this->reg_by;
}
public function setRegBy(?int $reg_by): self
{
$this->reg_by = $reg_by;
return $this;
}
public function getRegDatetime(): ?\DateTimeInterface
{
return $this->reg_datetime;
}
public function setRegDatetime(?\DateTimeInterface $reg_datetime): self
{
$this->reg_datetime = $reg_datetime;
return $this;
}
/**
* @return Collection<int, Cart>
*/
public function getCarts(): Collection
{
return $this->carts;
}
public function addCart(Cart $cart): self
{
if (!$this->carts->contains($cart)) {
$this->carts[] = $cart;
$cart->setProduct($this);
}
return $this;
}
public function removeCart(Cart $cart): self
{
if ($this->carts->removeElement($cart)) {
// set the owning side to null (unless already changed)
if ($cart->getProduct() === $this) {
$cart->setProduct(null);
}
}
return $this;
}
/**
* @return Collection<int, Addon>
*/
public function getAddons(): Collection
{
return $this->addons;
}
public function addAddon(Addon $addon): self
{
if (!$this->addons->contains($addon)) {
$this->addons[] = $addon;
$addon->setProduct($this);
}
return $this;
}
public function removeAddon(Addon $addon): self
{
if ($this->addons->removeElement($addon)) {
// set the owning side to null (unless already changed)
if ($addon->getProduct() === $this) {
$addon->setProduct(null);
}
}
return $this;
}
/**
* @return Collection<int, SubscriptionPlanPrice>
*/
public function getSubscriptionPlanPrices(): Collection
{
return $this->subscriptionPlanPrices;
}
public function addSubscriptionPlanPrice(SubscriptionPlanPrice $subscriptionPlanPrice): self
{
if (!$this->subscriptionPlanPrices->contains($subscriptionPlanPrice)) {
$this->subscriptionPlanPrices[] = $subscriptionPlanPrice;
$subscriptionPlanPrice->setProduct($this);
}
return $this;
}
public function removeSubscriptionPlanPrice(SubscriptionPlanPrice $subscriptionPlanPrice): self
{
if ($this->subscriptionPlanPrices->removeElement($subscriptionPlanPrice)) {
// set the owning side to null (unless already changed)
if ($subscriptionPlanPrice->getProduct() === $this) {
$subscriptionPlanPrice->setProduct(null);
}
}
return $this;
}
/**
* @return Collection<int, SubscriptionPlan>
*/
public function getSubscriptionPlan(): Collection
{
return $this->subscription_plan;
}
public function addSubscriptionPlan(SubscriptionPlan $subscriptionPlan): self
{
if (!$this->subscription_plan->contains($subscriptionPlan)) {
$this->subscription_plan[] = $subscriptionPlan;
}
return $this;
}
public function removeSubscriptionPlan(SubscriptionPlan $subscriptionPlan): self
{
$this->subscription_plan->removeElement($subscriptionPlan);
return $this;
}
public function __toString()
{
return $this->getProductName();
}
/**
* @return Collection<int, Subscription>
*/
public function getSubscriptions(): Collection
{
return $this->subscriptions;
}
public function addSubscription(Subscription $subscription): self
{
if (!$this->subscriptions->contains($subscription)) {
$this->subscriptions[] = $subscription;
$subscription->setProduct($this);
}
return $this;
}
public function removeSubscription(Subscription $subscription): self
{
if ($this->subscriptions->removeElement($subscription)) {
// set the owning side to null (unless already changed)
if ($subscription->getProduct() === $this) {
$subscription->setProduct(null);
}
}
return $this;
}
/**
* @return Collection<int, ServiceState>
*/
public function getServiceStates(): Collection
{
return $this->serviceStates;
}
public function addServiceState(ServiceState $serviceState): self
{
if (!$this->serviceStates->contains($serviceState)) {
$this->serviceStates[] = $serviceState;
$serviceState->setProduct($this);
}
return $this;
}
public function removeServiceState(ServiceState $serviceState): self
{
if ($this->serviceStates->removeElement($serviceState)) {
// set the owning side to null (unless already changed)
if ($serviceState->getProduct() === $this) {
$serviceState->setProduct(null);
}
}
return $this;
}
}