<?php
namespace App\V4\Model\Task;
use App\Model\Compare\DateCompare;
use App\Model\SpecificField\SpecificField;
use App\Model\SpecificFieldsAwareInterface;
use App\Model\Traits\BlamableTrait;
use App\Model\Traits\ImportableObjectTrait;
use App\Model\Traits\TimeStampableCompare;
use App\V4\Model\IdSearchTrait;
use App\V4\Model\TaskSpecificField\TaskSpecificField;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Symfony\Component\Serializer\Annotation\Groups;
class TaskSearch implements SpecificFieldsAwareInterface
{
public const SPECIFIC_FIELD_CLASS_NAME = TaskSpecificField::class;
use ImportableObjectTrait;
use BlamableTrait;
use TimeStampableCompare;
use IdSearchTrait;
/**
* Objet de l'action.
*
* @var string|null
* @Groups({"task:search"})
*/
private $name;
/**
* @var array|null
* @Groups({"task:search"})
*/
private $taskType;
/**
* Mes actions.
*
* @var bool|null
* @Groups({"task:search"})
*/
private $myTasks;
/**
* @var string|null
* @Groups({"task:search"})
*/
private $taskPeriod;
/**
* @var array|null
* @Groups({"task:search"})
*/
private $managedBy;
/**
* @var DateCompare|null
* @Groups({"task:search"})
*/
private $beginAt;
/**
* @var DateCompare|null
* @Groups({"task:search"})
*/
private $updatedAt;
/**
* @var string|null
* @Groups({"task:search"})
*/
private $closed;
/**
* @var DateCompare|null
* @Groups({"task:search"})
*/
private $createdAt;
/**
* @Groups({"task:search"})
*
* @var array|null
*/
private $prospectIds = [];
/**
* @Groups({"task:search"})
*
* @var array|null
*/
private $contactIds = [];
/**
* @var array|null
* @Groups({"task:search"})
*/
private $contactsConcerned;
/**
* @var string|null
* @Groups({"task:search"})
*/
private $readState;
/**
* @var string|null
* @Groups({"task:search"})
*/
private $hitState;
/**
* section de l'action.
*
* @var string|null
* @Groups({"task:search"})
*/
private $sectionName;
/**
* @var SpecificField[]|Collection
*
* @Groups({"prospect:search"})
*/
private $specificFields;
/**
* @var string|null
*
* @Groups({"task:search"})
*/
private $fileLabel;
/**
* @var string|null
* @Groups({"task:search"})
*/
private $isDraft = 'all';
public function __construct()
{
$this->specificFields = new ArrayCollection();
}
/**
* {@inheritdoc}
*/
public function getSpecificFields(): Collection
{
return $this->specificFields;
}
/**
* {@inheritdoc}
*/
public function getSpecificFieldByFieldId(string $id): ?SpecificField
{
foreach ($this->specificFields as $specificField) {
if ($specificField->getFieldId() === $id) {
return $specificField;
}
}
return null;
}
/**
* @see ImportableObjectTrait::class
*
* @param TaskSpecificField $specificField
*
* @return $this
*/
public function addTaskSpecificField(TaskSpecificField $specificField): self
{
return $this->addSpecificField($specificField);
}
/**
* {@inheritdoc}
*/
public function addSpecificField($specificField): SpecificFieldsAwareInterface
{
$this->specificFields[] = $specificField;
return $this;
}
/**
* {@inheritdoc}
*/
public function setSpecificFields(Collection $specificFields): self
{
$this->specificFields = $specificFields;
return $this;
}
/**
* @return string|null
*/
public function getName(): ?string
{
return $this->name;
}
/**
* @param string|null $name
*
* @return TaskSearch
*/
public function setName(?string $name): TaskSearch
{
$this->name = $name;
return $this;
}
/**
* @return array|null
*/
public function getTaskType(): ?array
{
return $this->taskType;
}
/**
* @param array|null $taskType
*
* @return TaskSearch
*/
public function setTaskType(?array $taskType): TaskSearch
{
$this->taskType = $taskType;
return $this;
}
/**
* @return bool|null
*/
public function getMyTasks(): ?bool
{
return $this->myTasks;
}
/**
* @param bool|null $myTasks
*
* @return TaskSearch
*/
public function setMyTasks(?bool $myTasks): TaskSearch
{
$this->myTasks = $myTasks;
return $this;
}
/**
* @return string|null
*/
public function getTaskPeriod(): ?string
{
return $this->taskPeriod;
}
/**
* @param string|null $taskPeriod
*
* @return TaskSearch
*/
public function setTaskPeriod(?string $taskPeriod): TaskSearch
{
$this->taskPeriod = $taskPeriod;
return $this;
}
/**
* @return array|null
*/
public function getManagedBy(): ?array
{
return $this->managedBy;
}
/**
* @param array|null $managedBy
*
* @return TaskSearch
*/
public function setManagedBy(?array $managedBy): TaskSearch
{
$this->managedBy = $managedBy;
return $this;
}
/**
* @return DateCompare|null
*/
public function getBeginAt(): ?DateCompare
{
return $this->beginAt;
}
/**
* @param DateCompare|null $beginAt
*
* @return TaskSearch
*/
public function setBeginAt(?DateCompare $beginAt): TaskSearch
{
$this->beginAt = $beginAt;
return $this;
}
/**
* @return DateCompare|null
*/
public function getUpdatedAt(): ?DateCompare
{
return $this->updatedAt;
}
/**
* @param DateCompare|null $updatedAt
*
* @return TaskSearch
*/
public function setUpdatedAt(?DateCompare $updatedAt): TaskSearch
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* @return string|null
*/
public function getClosed(): ?string
{
return $this->closed;
}
/**
* @param string|null $closed
*
* @return TaskSearch
*/
public function setClosed(?string $closed): TaskSearch
{
$this->closed = $closed;
return $this;
}
/**
* @return DateCompare|null
*/
public function getCreatedAt(): ?DateCompare
{
return $this->createdAt;
}
/**
* @param DateCompare|null $createdAt
*
* @return TaskSearch
*/
public function setCreatedAt(?DateCompare $createdAt): TaskSearch
{
$this->createdAt = $createdAt;
return $this;
}
/**
* @return array|null
*/
public function getProspectIds(): ?array
{
return $this->prospectIds;
}
/**
* @param array|null $prospectIds
*
* @return TaskSearch
*/
public function setProspectIds(?array $prospectIds): TaskSearch
{
$this->prospectIds = $prospectIds;
return $this;
}
/**
* @return array|null
*/
public function getContactIds(): ?array
{
return $this->contactIds;
}
/**
* @param array|null $contactIds
*
* @return TaskSearch
*/
public function setContactIds(?array $contactIds): TaskSearch
{
$this->contactIds = $contactIds;
return $this;
}
/**
* @return array|null
*/
public function getContactsConcerned(): ?array
{
return $this->contactsConcerned;
}
/**
* @param array|null $contactsConcerned
*
* @return TaskSearch
*/
public function setContactsConcerned(?array $contactsConcerned): TaskSearch
{
$this->contactsConcerned = $contactsConcerned;
return $this;
}
/**
* @return string|null
*/
public function getReadState(): ?string
{
return $this->readState;
}
/**
* @param string|null $readState
*
* @return TaskSearch
*/
public function setReadState(?string $readState): TaskSearch
{
$this->readState = $readState;
return $this;
}
/**
* @return string|null
*/
public function getHitState(): ?string
{
return $this->hitState;
}
/**
* @param string|null $hitState
*
* @return TaskSearch
*/
public function setHitState(?string $hitState): TaskSearch
{
$this->hitState = $hitState;
return $this;
}
/**
* @return string|null
*/
public function getSectionName(): ?string
{
return $this->sectionName;
}
/**
* @param string|null $sectionName
*
* @return TaskSearch
*/
public function setSectionName(?string $sectionName): TaskSearch
{
$this->sectionName = $sectionName;
return $this;
}
public function getFileLabel(): ?string
{
return $this->fileLabel;
}
public function setFileLabel(?string $fileLabel): self
{
$this->fileLabel = $fileLabel;
return $this;
}
public function getIsDraft(): ?string
{
return $this->isDraft;
}
public function setIsDraft(?string $isDraft): self
{
$this->isDraft = $isDraft;
return $this;
}
}