<?php

namespace Lc\SovBundle\Model\Ticket;


use Doctrine\Common\Collections\Collection;
use Lc\SovBundle\Model\User\UserInterface;

interface TicketInterface
{
    public function getCreatedBy(): ?UserInterface;

    public function setCreatedBy(?UserInterface $createdBy);

    public function getUpdatedBy(): ?UserInterface;

    public function setUpdatedBy(?UserInterface $updatedBy);

    public function getDevAlias(): ?string;

    public function setDevAlias(?string $devAlias);

    public function getType(): ?string;

    public function setType(string $type): TicketInterface;

    public function getStatus(): ?string;

    public function setStatus(string $status);

    public function getSubject(): ?string;

    public function setSubject(string $subject): TicketInterface;

    public function getTags(): ?array;

    public function setTags(?array $tags): TicketInterface;

    public function getVisitorFirstname(): ?string;

    public function setVisitorFirstname(?string $visitorFirstname): TicketInterface;

    public function getVisitorLastname(): ?string;

    public function setVisitorLastname(?string $visitorLastname): TicketInterface;

    public function getVisitorEmail(): ?string;

    public function setVisitorEmail(?string $visitorEmail): TicketInterface;

    public function getVisitorToken(): ?string;

    public function setVisitorToken(?string $visitorToken): TicketInterface;

    /**
     * @return Collection|TicketMessageInterface[]
     */
    public function getTicketMessages(): Collection;

    public function addTicketMessage(TicketMessageInterface $ticketMessage): TicketInterface;

    public function removeTicketMessage(TicketMessageInterface $ticketMessage): TicketInterface;

    public function getUser(): ?UserInterface;

    public function setUser(?UserInterface $user): TicketInterface;

    public function getCreatedAt(): ?\DateTimeInterface;

    public function setCreatedAt(\DateTimeInterface $createdAt);

    public function getUpdatedAt(): ?\DateTimeInterface;

    public function setUpdatedAt(\DateTimeInterface $updatedAt);
}