<?php
namespace App\Entity\System;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="subscription_customer")
*
* @ORM\Entity(repositoryClass="App\Repository\System\SubscriptionCustomerRepository")
*/
class SubscriptionCustomer
{
/**
* @var int
*
* @ORM\Id
*
* @ORM\GeneratedValue(strategy="AUTO")
*
* @ORM\Column(type="integer", name="id")
*/
private $id;
/**
* @var Customer
*
* @ORM\ManyToOne(targetEntity="App\Entity\System\Customer")
*
* @ORM\JoinColumn(referencedColumnName="id_customer", name="id_customer")
*/
private $customer;
/**
* @var SubscriptionStatus
*
* @ORM\ManyToOne(targetEntity="App\Entity\System\SubscriptionStatus")
*/
private $subscriptionStatus;
/**
* @var SubscriptionData
*
* @ORM\ManyToOne(targetEntity="App\Entity\System\SubscriptionData", inversedBy="subscriptionCustomers")
*/
private $subscriptionData;
/**
* @var string|null
*
* @ORM\Column(type="string", length=512, name="request", nullable=true)
*/
private $request;
/**
* @var \DateTime
*
* @ORM\Column(name="date_add", type="datetime")
*/
private $dateAdd;
/**
* @var \DateTime
*
* @ORM\Column(name="date_upd", type="datetime")
*/
private $dateUpd;
/**
* @var \DateTime
*
* @ORM\Column(name="date_start", type="datetime", nullable=true)
*/
private $dateStart;
/**
* @var \DateTime
*
* @ORM\Column(name="date_due", type="datetime", nullable=true)
*/
private $dateDue;
/**
* @var int|null
*
* @ORM\Column(name="number_attempts", columnDefinition="smallint(3)", type="integer", options={"default" : 0}, nullable=true)
*/
private $numberAttempts;
/**
* @var SubscriptionCustomerType
*
* @ORM\ManyToOne(targetEntity="App\Entity\System\SubscriptionCustomerType")
*/
private $subscriptionCustomerType;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\System\SubscriptionLine", inversedBy="subscriptionCustomers")
*
* @ORM\JoinColumn(referencedColumnName="id_subscription_lines", name="subscription_line_id")
*/
private SubscriptionLine $subscriptionLine;
/**
* @ORM\Column(type="string", length=64, name="internal_migration_status", nullable=true)
*/
private ?string $internalMigrationStatus;
public function __construct()
{
$this->dateAdd = new \DateTime();
$this->dateUpd = new \DateTime();
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @return Customer
*/
public function getCustomer(): Customer
{
return $this->customer;
}
/**
* @param Customer $customer
*
* @return SubscriptionCustomer
*/
public function setCustomer(Customer $customer): self
{
$this->customer = $customer;
return $this;
}
/**
* @return SubscriptionData
*/
public function getSubscriptionData(): SubscriptionData
{
return $this->subscriptionData;
}
/**
* @param SubscriptionData $subscriptionData
*
* @return SubscriptionCustomer
*/
public function setSubscriptionData(SubscriptionData $subscriptionData): self
{
$this->subscriptionData = $subscriptionData;
return $this;
}
/**
* @param SubscriptionStatus $subscriptionStatus
*
* @return SubscriptionCustomer
*/
public function setSubscriptionStatus(SubscriptionStatus $subscriptionStatus): self
{
$this->subscriptionStatus = $subscriptionStatus;
return $this;
}
/**
* @return SubscriptionStatus
*/
public function getSubscriptionStatus(): SubscriptionStatus
{
return $this->subscriptionStatus;
}
/**
* @return string|null
*/
public function getRequest(): ?string
{
return $this->request;
}
/**
* @param string|null $request
*
* @return SubscriptionCustomer
*/
public function setRequest(?string $request = null): self
{
$this->request = $request;
return $this;
}
/**
* @param \DateTime|null $dateDue
*
* @return SubscriptionCustomer
*/
public function setDateDue(?\DateTime $dateDue): self
{
$this->dateDue = $dateDue;
return $this;
}
/**
* @param \DateTime $dateStart
*
* @return SubscriptionCustomer
*/
public function setDateStart(\DateTime $dateStart): self
{
$this->dateStart = $dateStart;
return $this;
}
/**
* @param \DateTime $dateUpd
*
* @return SubscriptionCustomer
*/
public function setDateUpd(\DateTime $dateUpd): self
{
$this->dateUpd = $dateUpd;
return $this;
}
/**
* @return SubscriptionCustomer
*/
public function setDateAdd(): self
{
$this->dateAdd = new \DateTime();
return $this;
}
/**
* @return SubscriptionCustomerType
*/
public function getSubscriptionCustomerType(): SubscriptionCustomerType
{
return $this->subscriptionCustomerType;
}
/**
* @param SubscriptionCustomerType $subscriptionCustomerType
*
* @return SubscriptionCustomer
*/
public function setSubscriptionCustomerType(SubscriptionCustomerType $subscriptionCustomerType): self
{
$this->subscriptionCustomerType = $subscriptionCustomerType;
return $this;
}
public function setNumberAttempts(int $numberAttempts): self
{
$this->numberAttempts = $numberAttempts;
return $this;
}
public function setNumberOfAttempts(bool $increase): self
{
if (true === $increase) {
$this->numberAttempts++;
} else {
$this->numberAttempts = 0;
}
return $this;
}
/**
* @return int|null
*/
public function getNumberAttempts(): ?int
{
return $this->numberAttempts;
}
/**
* @return \DateTime|null
*/
public function getDateDue(): ?\DateTime
{
return $this->dateDue;
}
public function getDateAdd(): \DateTime
{
return $this->dateAdd;
}
public function getDateUpd(): \DateTime
{
return $this->dateUpd;
}
public function getDateStart(): ?\DateTime
{
return $this->dateStart;
}
public function getSubscriptionLine(): SubscriptionLine
{
return $this->subscriptionLine;
}
public function setSubscriptionLine(SubscriptionLine $subscriptionLine): SubscriptionCustomer
{
$this->subscriptionLine = $subscriptionLine;
return $this;
}
public function getInternalMigrationStatus(): ?string
{
return $this->internalMigrationStatus;
}
public function setInternalMigrationStatus(?string $internalMigrationStatus): SubscriptionCustomer
{
$this->internalMigrationStatus = $internalMigrationStatus;
return $this;
}
}