<?php
namespace App\Entity;
use App\Repository\AwardRepository;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
/**
* @ORM\Entity(repositoryClass=AwardRepository::class)
*/
class Award
{
use TimestampableEntity;
public const EXCHANGED = 'exchanged';
public const NOT_EXCHANGED = 'not_exchanged';
public const EXPIRED = 'expired';
public const STATES = [self::EXCHANGED, self::NOT_EXCHANGED];
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity=Discount::class, inversedBy="awards")
* @ORM\JoinColumn(nullable=false)
*/
private $discount;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="awards")
*/
private $user;
/**
* @ORM\Column(type="string", length=128)
*/
private $status = self::NOT_EXCHANGED;
/**
* @ORM\Column(type="datetime_immutable", nullable=true)
*/
private $exchangedAt;
/**
* @ORM\Column(type="datetime_immutable", nullable=true)
*/
private $captureAt;
public function getId(): ?int
{
return $this->id;
}
public function getDiscount(): ?Discount
{
return $this->discount;
}
public function setDiscount(?Discount $discount): self
{
$this->discount = $discount;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getStatus(): ?string
{
return $this->status;
}
public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}
public function getExchangedAt(): ?\DateTimeImmutable
{
return $this->exchangedAt;
}
public function setExchangedAt(?\DateTimeImmutable $exchangedAt): self
{
$this->exchangedAt = $exchangedAt;
return $this;
}
public function getCaptureAt(): ?\DateTimeImmutable
{
return $this->captureAt;
}
public function setCaptureAt(?\DateTimeImmutable $captureAt): self
{
$this->captureAt = $captureAt;
return $this;
}
}