<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\HasLifecycleCallbacks;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\Table as Table;
/**
* ClaimComment
*
* @Table(name="claim_comments")
* @Entity()
* @HasLifecycleCallbacks
*/
class ClaimComment extends AbstractSignedEntity
{
public const TYPE_FOR_NO_ONE = 1;
public const TYPE_FOR_SALES = 2;
public const TYPE_FOR_RMA = 3;
/**
* @var string
*
* @Column(name="text", type="text", nullable=true)
*/
private $text;
/**
* @var int
*
* @Column(name="type", type="integer", nullable=true)
*/
private $type;
/**
* @var Claim
*
* @ManyToOne(targetEntity="Claim", inversedBy="comments")
* @JoinColumn(name="claim_id", referencedColumnName="id", nullable=false)
*/
private $claim;
/**
* @var User
*
* @ManyToOne(targetEntity="User")
* @JoinColumn(name="done_by", referencedColumnName="id", nullable=true)
*/
private $doneBy;
/**
* @var \DateTime
*
* @Column(name="done_time", type="datetime", nullable=true)
*/
private $doneTime;
/**
* @return string
*/
public function getText()
{
return $this->text;
}
/**
* @param string $text
*/
public function setText($text)
{
$this->text = $text;
}
/**
* @return Claim
*/
public function getClaim()
{
return $this->claim;
}
/**
* @param Claim $claim
*/
public function setClaim($claim)
{
$this->claim = $claim;
}
public function getType(): int|null
{
return $this->type;
}
public function setType(int $type): void
{
$this->type = $type;
}
public function getDoneBy(): User|null
{
return $this->doneBy;
}
public function setDoneBy(User $doneBy): void
{
$this->doneBy = $doneBy;
}
public function getDoneTime(): \DateTime|null
{
return $this->doneTime;
}
public function setDoneTime(\DateTime $doneTime): void
{
$this->doneTime = $doneTime;
}
/**
* @param User $user
* @return bool
*/
public function isDeletableByUser(User $user)
{
return !is_null($this->getCreatedBy()) && $this->getCreatedBy()->getId() == $user->getId();
}
public function isDone()
{
return $this->doneTime != null;
}
}