|
|
|
|
|
|
|
|
|
|
|
<?php |
|
|
|
|
|
|
|
|
|
|
|
namespace Lc\ShopBundle\Model; |
|
|
|
|
|
|
|
|
|
|
|
use App\Entity\TicketMessage; |
|
|
|
|
|
use Doctrine\Common\Collections\ArrayCollection; |
|
|
|
|
|
use Doctrine\Common\Collections\Collection; |
|
|
|
|
|
use Doctrine\ORM\Mapping as ORM; |
|
|
|
|
|
use Lc\ShopBundle\Context\FilterMerchantInterface; |
|
|
|
|
|
use Lc\ShopBundle\Context\MerchantInterface; |
|
|
|
|
|
use Lc\ShopBundle\Context\OrderShopInterface; |
|
|
|
|
|
use Gedmo\Mapping\Annotation as Gedmo; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\MappedSuperclass() |
|
|
|
|
|
*/ |
|
|
|
|
|
abstract class Ticket extends AbstractEntity implements FilterMerchantInterface |
|
|
|
|
|
{ |
|
|
|
|
|
const TYPE_PRODUCT_UNAVAILABLE = 'product-unavailable' ; |
|
|
|
|
|
const TYPE_PRODUCT_ERROR = 'product-error' ; |
|
|
|
|
|
const TYPE_TECHNICAL_PROBLEM = 'technical-problem' ; |
|
|
|
|
|
const TYPE_GENERAL_QUESTION = 'general-question' ; |
|
|
|
|
|
|
|
|
|
|
|
const TICKET_STATUS_OPEN = 'open' ; |
|
|
|
|
|
const TICKET_STATUS_BEING_PROCESSED = 'being-processed' ; |
|
|
|
|
|
const TICKET_STATUS_CLOSED = 'fermé' ; |
|
|
|
|
|
|
|
|
|
|
|
use StatusTrait; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @Gedmo\Blameable(on="create") |
|
|
|
|
|
* @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\UserInterface") |
|
|
|
|
|
* @ORM\JoinColumn(nullable=true) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $createdBy; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @Gedmo\Blameable(on="update") |
|
|
|
|
|
* @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\UserInterface") |
|
|
|
|
|
* @ORM\JoinColumn(nullable=true) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $updatedBy; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\MerchantInterface") |
|
|
|
|
|
* @ORM\JoinColumn(nullable=false) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $merchant; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\Column(type="string", length=32) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $type; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\Column(type="text", nullable=true) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $typeHelp; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\Column(type="string", length=32) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $ticketStatus; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\OrderShopInterface", inversedBy="tickets") |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $orderShop; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\Column(type="string", length=255) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $subject; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\Column(type="array", nullable=true) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $tags = []; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\Column(type="string", length=64, nullable=true) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $visitorFirstname; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\Column(type="string", length=64, nullable=true) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $visitorLastname; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\Column(type="string", length=128, nullable=true) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $visitorEmail; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\Column(type="string", length=255, nullable=true) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $visitorToken; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @ORM\OneToMany(targetEntity="Lc\ShopBundle\Context\TicketMessageInterface", mappedBy="ticket", orphanRemoval=true) |
|
|
|
|
|
*/ |
|
|
|
|
|
protected $ticketMessages; |
|
|
|
|
|
|
|
|
|
|
|
public function __construct() |
|
|
|
|
|
{ |
|
|
|
|
|
$this->ticketMessages = new ArrayCollection(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getMerchant(): ?MerchantInterface |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->merchant; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setMerchant(?MerchantInterface $merchant): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->merchant = $merchant; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getType(): ?string |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->type; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setType(string $type): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->type = $type; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getTypeHelp(): ?string |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->typeHelp; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setTypeHelp(?string $typeHelp): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->typeHelp = $typeHelp; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getTicketStatus(): ?string |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->ticketStatus; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setTicketStatus(string $ticketStatus): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->ticketStatus = $ticketStatus; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getOrderShop(): ?OrderShopInterface |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->orderShop; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setOrderShop(?OrderShopInterface $orderShop): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->orderShop = $orderShop; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getSubject(): ?string |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->subject; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setSubject(string $subject): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->subject = $subject; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getTags(): ?array |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->tags; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setTags(?array $tags): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->tags = $tags; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getVisitorFirstname(): ?string |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->visitorFirstname; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setVisitorFirstname(?string $visitorFirstname): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->visitorFirstname = $visitorFirstname; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getVisitorLastname(): ?string |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->visitorLastname; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setVisitorLastname(?string $visitorLastname): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->visitorLastname = $visitorLastname; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getVisitorEmail(): ?string |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->visitorEmail; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setVisitorEmail(?string $visitorEmail): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->visitorEmail = $visitorEmail; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function getVisitorToken(): ?string |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->visitorToken; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function setVisitorToken(?string $visitorToken): self |
|
|
|
|
|
{ |
|
|
|
|
|
$this->visitorToken = $visitorToken; |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @return Collection|TicketMessage[] |
|
|
|
|
|
*/ |
|
|
|
|
|
public function getTicketMessages(): Collection |
|
|
|
|
|
{ |
|
|
|
|
|
return $this->ticketMessages; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function addTicketMessage(TicketMessage $ticketMessage): self |
|
|
|
|
|
{ |
|
|
|
|
|
if (!$this->ticketMessages->contains($ticketMessage)) { |
|
|
|
|
|
$this->ticketMessages[] = $ticketMessage; |
|
|
|
|
|
$ticketMessage->setTicket($this); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public function removeTicketMessage(TicketMessage $ticketMessage): self |
|
|
|
|
|
{ |
|
|
|
|
|
if ($this->ticketMessages->contains($ticketMessage)) { |
|
|
|
|
|
$this->ticketMessages->removeElement($ticketMessage); |
|
|
|
|
|
// set the owning side to null (unless already changed) |
|
|
|
|
|
if ($ticketMessage->getTicket() === $this) { |
|
|
|
|
|
$ticketMessage->setTicket(null); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
} |
|
|
|
|
|
} |