<?php
namespace JanusHercules\IntegratedExternalPartnerCustomers\Domain\Entity;
use App\Entity\ExternalPartner\IntegratedExternalPartnerCustomer;
use DateTime;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
#[ORM\Table(name: 'weclapp_contracts')]
class WeclappContract
{
public function __construct(
string $id,
WeclappParty $weclappParty,
IntegratedExternalPartnerCustomer $customer,
string $name,
int $contractNumber,
DateTime $createdAt,
int $extensionMonths,
DateTime $startDate,
DateTime $endDate,
string $status
) {
$this->id = $id;
$this->weclappParty = $weclappParty;
$this->name = $name;
$this->integratedExternalPartnerCustomer = $customer;
$this->contractNumber = $contractNumber;
$this->createdAt = $createdAt;
$this->extensionMonths = $extensionMonths;
$this->startDate = $startDate;
$this->endDate = $endDate;
$this->status = $status;
}
#[ORM\Id]
#[ORM\Column(
type: Types::STRING
)]
private string $id; // yes, all weclapp IDs are seemingly numeric, but the API defines them as type string
public function getId(): string
{
return $this->id;
}
#[ORM\ManyToOne(
targetEntity: WeclappParty::class,
cascade : ['persist']
)]
#[ORM\JoinColumn(
name : 'weclapp_parties_id',
referencedColumnName: 'id',
onDelete : 'CASCADE'
)]
private WeclappParty $weclappParty;
public function getWeclappParty(): WeclappParty
{
return $this->weclappParty;
}
public function setWeclappParty(WeclappParty $weclappParty): void
{
$this->weclappParty = $weclappParty;
}
#[ORM\ManyToOne(
targetEntity: IntegratedExternalPartnerCustomer::class,
cascade : ['persist']
)]
#[ORM\JoinColumn(
name : 'integrated_external_partner_customers_id',
referencedColumnName: 'id',
onDelete : 'CASCADE'
)]
private IntegratedExternalPartnerCustomer $integratedExternalPartnerCustomer;
public function getIntegratedExternalPartnerCustomer(): IntegratedExternalPartnerCustomer
{
return $this->integratedExternalPartnerCustomer;
}
public function setIntegratedExternalPartnerCustomer(IntegratedExternalPartnerCustomer $integratedExternalPartnerCustomer): void
{
$this->integratedExternalPartnerCustomer = $integratedExternalPartnerCustomer;
}
public function setExtensionMonths(int $extensionMonths): void
{
$this->extensionMonths = $extensionMonths;
}
#[ORM\Column(
type: Types::STRING
)]
private string $name;
public function getName(): string
{
return $this->name;
}
public function setName(string $name): void
{
$this->name = $name;
}
#[ORM\Column(
type: Types::INTEGER
)]
private int $contractNumber;
public function getContractNumber(): int
{
return $this->contractNumber;
}
public function setContractNumber(int $contractNumber): void
{
$this->contractNumber = $contractNumber;
}
#[ORM\Column(
type : Types::DATETIME_MUTABLE,
nullable: false
)]
private DateTime $createdAt;
public function setCreatedAt(DateTime $createdAt): void
{
$this->createdAt = $createdAt;
}
public function getCreatedAt(): DateTime
{
return $this->createdAt;
}
#[ORM\Column(
type : Types::DATETIME_MUTABLE,
nullable: false
)]
private DateTime $startDate;
public function setStartDate(DateTime $startDate): void
{
$this->startDate = $startDate;
}
public function getStartDate(): DateTime
{
return $this->startDate;
}
#[ORM\Column(
type : Types::DATETIME_MUTABLE,
nullable: false
)]
private DateTime $endDate;
public function setEndDate(DateTime $endDate): void
{
$this->endDate = $endDate;
}
public function getEndDate(): DateTime
{
return $this->endDate;
}
#[ORM\Column(
type: Types::INTEGER
)]
private int $extensionMonths;
public function getExtensionMonths(): int
{
return $this->extensionMonths;
}
#[ORM\Column(
type: Types::STRING
)]
private string $status;
public function getStatus(): string
{
return $this->status;
}
public function setStatus(string $status): void
{
$this->status = $status;
}
}