<?php
namespace App\Entity\System;
use Doctrine\ORM\Mapping as ORM;
/**
* Subscription
*
* @ORM\Table(name="subscription_data")
*
* @ORM\Entity(repositoryClass="App\Repository\System\SubscriptionDataRepository")
*/
class SubscriptionData
{
public const PACK_IDS_INDEXED_BY_SUBSCRIPTION_DATA_PRODUCT_ID = [
Product::PACK_MARKETPLACES_MONTHLY_PRODUCT_ID => Pack::PACK_MARKETPLACES,
Product::PACK_MARKETPLACES_BIANNUAL_PRODUCT_ID => Pack::PACK_MARKETPLACES,
Product::PACK_MARKETPLACES_ANNUAL_PRODUCT_ID => Pack::PACK_MARKETPLACES,
Product::PACK_ECOMMERCE_MONTHLY_PRODUCT_ID => Pack::PACK_ECOMMERCE,
Product::PACK_ECOMMERCE_BIANNUAL_PRODUCT_ID => Pack::PACK_ECOMMERCE,
Product::PACK_ECOMMERCE_ANNUAL_PRODUCT_ID => Pack::PACK_ECOMMERCE,
Product::PACK_B2B_PRODUCT_ID => Pack::PACK_B2B,
Product::NEW_PACK_ENTERPRISE_MONTHLY_PRODUCT_ID => Pack::PACK_ENTERPRISE,
Product::NEW_PACK_ENTERPRISE_BIANNUAL_PRODUCT_ID => Pack::PACK_ENTERPRISE,
Product::NEW_PACK_ENTERPRISE_ANNUAL_PRODUCT_ID => Pack::PACK_ENTERPRISE,
Product::NEW_PACK_PRO_MONTHLY_PRODUCT_ID => Pack::PACK_PRO,
Product::NEW_PACK_PRO_BIANNUAL_PRODUCT_ID => Pack::PACK_PRO,
Product::NEW_PACK_PRO_ANNUAL_PRODUCT_ID => Pack::PACK_PRO,
Product::NEW_PACK_DROPSHIP_MONTHLY_PRODUCT_ID => Pack::PACK_DROPSHIP,
Product::NEW_PACK_DROPSHIP_BIANNUAL_PRODUCT_ID => Pack::PACK_DROPSHIP,
Product::NEW_PACK_DROPSHIP_ANNUAL_PRODUCT_ID => Pack::PACK_DROPSHIP,
Product::PACK_PREMIUM_MONTHLY_PRODUCT_ID => Pack::PACK_PREMIUM,
Product::PACK_PREMIUM_BIANNUAL_PRODUCT_ID => Pack::PACK_PREMIUM,
Product::PACK_PREMIUM_ANNUAL_PRODUCT_ID => Pack::PACK_PREMIUM,
Product::PACK_BUSINESS_ANNUAL_PRODUCT_ID => Pack::PACK_BUSINESS,
Product::PACK_BUSINESS_BIANNUAL_PRODUCT_ID => Pack::PACK_BUSINESS,
Product::PACK_BUSINESS_MONTHLY_PRODUCT_ID => Pack::PACK_BUSINESS,
];
public const PERIODICITY_MONTHLY = '1M';
public const PERIODICITY_BIANNUAL = '6M';
public const PERIODICITY_ANNUAL = '12M';
/**
* @var int
*
* @ORM\Id
*
* @ORM\GeneratedValue(strategy="AUTO")
*
* @ORM\Column(type="integer", name="id")
*/
private $id;
/**
* @var Product
*
* @ORM\ManyToOne(targetEntity="App\Entity\System\Product")
*
* @ORM\JoinColumn(referencedColumnName="id_product", name="product_id")
*/
private $product;
/**
* @var SubscriptionType
*
* @ORM\ManyToOne(targetEntity="App\Entity\System\SubscriptionType")
*/
private $subscriptionType;
/**
* @var SubscriptionCustomer[]
*
* @ORM\OneToMany(targetEntity="App\Entity\System\SubscriptionCustomer", mappedBy="subscriptionData")
*/
private $subscriptionCustomers;
/**
* @var \DateTime
*
* @ORM\Column(name="date_add", type="datetime")
*/
private $dateAdd;
/**
* @var string|null
*
* @ORM\Column(name="periodicity", type="string", length=5, nullable=true)
*/
private $periodicity;
public function __construct()
{
$this->dateAdd = new \DateTime();
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
public function getProduct(): Product
{
return $this->product;
}
/**
* @return SubscriptionType
*/
public function getSubscriptionType(): SubscriptionType
{
return $this->subscriptionType;
}
/**
* @return SubscriptionCustomer[]
*/
public function getSubscriptionCustomers(): array
{
return $this->subscriptionCustomers;
}
/**
* @param Product $product
*
* @return SubscriptionData
*/
public function setProduct(Product $product): self
{
$this->product = $product;
return $this;
}
/**
* @param SubscriptionType $subscriptionType
*
* @return SubscriptionData
*/
public function setSubscriptionType(SubscriptionType $subscriptionType): self
{
$this->subscriptionType = $subscriptionType;
return $this;
}
/**
* @return string|null
*/
public function getPeriodicity(): ?string
{
return $this->periodicity;
}
/**
* @param string|null $periodicity
*
* @return SubscriptionData
*/
public function setPeriodicity(?string $periodicity): self
{
$this->periodicity = $periodicity;
return $this;
}
}