<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Coupons
*
* @ORM\Table(name="coupons")
* @ORM\Entity(repositoryClass="App\Repository\CouponRepository")
*/
class Coupon
{
/**
* @var int
*
* @ORM\Column(name="coupon_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \App\Entity\MarketingRule
*
* @ORM\ManyToOne(targetEntity="App\Entity\MarketingRule", inversedBy="coupons")
* @ORM\JoinColumn(name="marketing_rule_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $marketingRule;
/**
* @var string
*
* @ORM\Column(name="coupon_code", type="string", length=32, nullable=false)
*/
private $code;
/**
* @var int
*
* @ORM\Column(name="uses_per_coupon", type="integer", nullable=false, options={"default"="1"})
*/
private $usesPerCoupon = '1';
/**
* @var int
*
* @ORM\Column(name="uses_per_user", type="integer", nullable=false)
*/
private $usesPerUser = '0';
/**
* @var int
*
* @ORM\Column(name="used", type="integer", nullable=false)
*/
private $used = '0';
/**
* @var int
*
* @ORM\Column(name="active", type="boolean", nullable=false)
*/
private $active = '0';
/**
* @var \DateTime
*
* @ORM\Column(name="date_created", type="datetime", nullable=true)
*/
private $createdAt;
/**
* @var \DateTime
*
* @ORM\Column(name="date_modified", type="datetime", nullable=true)
*/
private $modifiedAt;
public function getId(): int {
return $this->id;
}
public function getMarketingRule(): \App\Entity\MarketingRule {
return $this->marketingRule;
}
public function getCode(): string {
return $this->code;
}
public function getUsesPerCoupon(): int {
return $this->usesPerCoupon;
}
public function getUsesPerUser(): int {
return $this->usesPerUser;
}
public function getUsed(): int {
return $this->used;
}
public function getActive(): int {
return $this->active;
}
public function getCreatedAt(): \DateTime {
return $this->createdAt;
}
public function getModifiedAt(): \DateTime {
return $this->modifiedAt;
}
public function setId(int $id): void {
$this->id = $id;
}
public function setMarketingRule(\App\Entity\MarketingRule $marketingRule): void {
$this->marketingRule = $marketingRule;
}
public function setCode(string $code): void {
$this->code = $code;
}
public function setUsesPerCoupon(int $usesPerCoupon): void {
$this->usesPerCoupon = $usesPerCoupon;
}
public function setUsesPerUser(int $usesPerUser): void {
$this->usesPerUser = $usesPerUser;
}
public function setUsed(int $used): void {
$this->used = $used;
}
public function setActive(int $active): void {
$this->active = $active;
}
public function setCreatedAt(\DateTime $createdAt): void {
$this->createdAt = $createdAt;
}
public function setModifiedAt(\DateTime $modifiedAt): void {
$this->modifiedAt = $modifiedAt;
}
public function isUsed(){
return !empty($this->used);
}
public function toArray() {
return [
'id' => $this->getId(),
'code' => $this->getCode()
];
}
/**
* @ORM\PrePersist()
*/
public function prePersist(\Doctrine\ORM\Event\LifecycleEventArgs $args) {
$this->setCreatedAt(new \DateTime());
}
/**
* @ORM\PreUpdate()
*/
public function preUpdate(\Doctrine\ORM\Event\LifecycleEventArgs $args) {
$this->setUpdatedAt(new \DateTime());
}
}