<?php
namespace App\V4\Model\Prospect;
use App\Model\Compare\DateCompare;
use App\Model\Compare\NumberCompare;
use App\Model\ProspectSpecificField\ProspectSpecificField;
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 Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Serializer\Annotation\SerializedName;
class ProspectSearch implements SpecificFieldsAwareInterface
{
public const SPECIFIC_FIELD_CLASS_NAME = ProspectSpecificField::class;
use ImportableObjectTrait;
use BlamableTrait;
use TimeStampableCompare;
use IdSearchTrait;
/**
* Raison sociale.
*
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $name;
/**
* @var bool|null
*
* @Groups({"prospect:search"})
*/
private $tasksLinked;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $customerCode;
/**
* @todo refacto ce devrait etre section tout court
*
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $sectionName;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $groupName;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $companyMail;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $workforce;
/**
* Type de prospect.
*
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $type;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $sheetType;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $origin;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $potential;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $naf;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $tva;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $structureType;
/**
* @var array|null
*
* @SerializedName("company.legalForm.id")
*
* @Groups({"prospect:search"})
*/
private $legalForm;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $siret;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $webSite;
/**
* @var NumberCompare|null
*
* @Groups({"prospect:search"})
*/
private $socialCapital;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $fax;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $managedBy;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $myAccounts;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $phone;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $nameComplement;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $addressComplement;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $cedex;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $address;
/**
* @var string[]|null
*
* @Groups({"prospect:search"})
*/
private $departments;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $zip;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $city;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $country;
/**
* @todo refacto non fonctionnel
*
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $devisState;
/**
* @var DateCompare|null
*
* @Groups({"prospect:search"})
*/
private $creationYear;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $lat;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $lng;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $distance;
/**
* @var NumberCompare|null
*
* @Groups({"prospect:search"})
*/
private $turnOver;
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $taskIds = [];
/**
* @var array|null
*
* @Groups({"prospect:search"})
*/
private $quoteIds = [];
/**
* @var bool|null
*
* @Groups({"prospect:search"})
*/
private $isReverse = false;
/**
* @var bool|null
*
* @Groups({"prospect:search"})
*/
private $justLabelAndId = false;
/**
* @var SpecificField[]|Collection
*
* @Groups({"prospect:search"})
*/
private $specificFields;
/**
* @var bool|null
*
* @Groups({"prospect:search"})
*/
private $hasSubscription = null;
/**
* @var string|null
*
* @Groups({"prospect:search"})
*/
private $fileLabel;
public function __construct()
{
$this->specificFields = new ArrayCollection();
}
/**
* @todo refacto voir si on laisse name et fullname ou si on change les viewOrder
*
* @Groups({"prospect:search"})
*
* @return string|null
*/
public function getFullname(): ?string
{
return $this->name;
}
/**
* {@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 ProspectSpecificField $specificField
*
* @return $this
*/
public function addProspectSpecificField(ProspectSpecificField $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 ProspectSearch
*/
public function setName(?string $name): ProspectSearch
{
$this->name = $name;
return $this;
}
/**
* @return bool
*/
public function isTasksLinked(): ?bool
{
return $this->tasksLinked;
}
/**
* @param bool|null $tasksLinked
*
* @return ProspectSearch
*/
public function setTasksLinked(?bool $tasksLinked): ProspectSearch
{
$this->tasksLinked = $tasksLinked;
return $this;
}
/**
* @return string|null
*/
public function getCustomerCode(): ?string
{
return $this->customerCode;
}
/**
* @param string|null $customerCode
*
* @return ProspectSearch
*/
public function setCustomerCode(?string $customerCode): ProspectSearch
{
$this->customerCode = $customerCode;
return $this;
}
/**
* @return array|null
*/
public function getSectionName(): ?array
{
return $this->sectionName;
}
/**
* @param array|null $sectionName
*
* @return ProspectSearch
*/
public function setSectionName(?array $sectionName): self
{
$this->sectionName = $sectionName;
return $this;
}
/**
* @return string|null
*/
public function getGroupName(): ?string
{
return $this->groupName;
}
/**
* @param string|null $groupName
*
* @return ProspectSearch
*/
public function setGroupName(?string $groupName): ProspectSearch
{
$this->groupName = $groupName;
return $this;
}
/**
* @return string|null
*/
public function getCompanyMail(): ?string
{
return $this->companyMail;
}
/**
* @param string|null $companyMail
*
* @return ProspectSearch
*/
public function setCompanyMail(?string $companyMail): ProspectSearch
{
$this->companyMail = $companyMail;
return $this;
}
/**
* @return array|null
*/
public function getType(): ?array
{
return $this->type;
}
/**
* @param array|null $type
*
* @return ProspectSearch
*/
public function setType(?array $type): ProspectSearch
{
$this->type = $type;
return $this;
}
/**
* @return array|null
*/
public function getOrigin(): ?array
{
return $this->origin;
}
/**
* @param array|null $origin
*
* @return ProspectSearch
*/
public function setOrigin(?array $origin): ProspectSearch
{
$this->origin = $origin;
return $this;
}
/**
* @return array|null
*/
public function getNaf(): ?array
{
return $this->naf;
}
/**
* @param array|null $naf
*
* @return ProspectSearch
*/
public function setNaf(?array $naf): ProspectSearch
{
$this->naf = $naf;
return $this;
}
/**
* @return array|null
*/
public function getStructureType(): ?array
{
return $this->structureType;
}
/**
* @param array|null $structureType
*
* @return ProspectSearch
*/
public function setStructureType(?array $structureType): ProspectSearch
{
$this->structureType = $structureType;
return $this;
}
/**
* @return array|null
*/
public function getLegalForm(): ?array
{
return $this->legalForm;
}
/**
* @param array|null $legalForm
*
* @return ProspectSearch
*/
public function setLegalForm(?array $legalForm): ProspectSearch
{
$this->legalForm = $legalForm;
return $this;
}
/**
* @return array|null
*/
public function getManagedBy(): ?array
{
return $this->managedBy;
}
/**
* @param array|null $managedBy
*
* @return ProspectSearch
*/
public function setManagedBy(?array $managedBy): ProspectSearch
{
$this->managedBy = $managedBy;
return $this;
}
/**
* @return string|null
*/
public function getMyAccounts(): ?string
{
return $this->myAccounts;
}
/**
* @param string|null $myAccounts
*
* @return ProspectSearch
*/
public function setMyAccounts(?string $myAccounts): ProspectSearch
{
$this->myAccounts = $myAccounts;
return $this;
}
/**
* @return string|null
*/
public function getPhone(): ?string
{
return $this->phone;
}
/**
* @param string|null $phone
*
* @return ProspectSearch
*/
public function setPhone(?string $phone): ProspectSearch
{
$this->phone = $phone;
return $this;
}
/**
* @return string|null
*/
public function getNameComplement(): ?string
{
return $this->nameComplement;
}
/**
* @param string|null $nameComplement
*
* @return ProspectSearch
*/
public function setNameComplement(?string $nameComplement): ProspectSearch
{
$this->nameComplement = $nameComplement;
return $this;
}
/**
* @return string[]|null
*/
public function getDepartments(): ?array
{
return $this->departments;
}
/**
* @param string[]|null $departments
*
* @return ProspectSearch
*/
public function setDepartments(?array $departments): ProspectSearch
{
$this->departments = $departments;
return $this;
}
/**
* @return string|null
*/
public function getZip(): ?string
{
return $this->zip;
}
/**
* @param string|null $zip
*
* @return ProspectSearch
*/
public function setZip(?string $zip): ProspectSearch
{
$this->zip = $zip;
return $this;
}
/**
* @return string|null
*/
public function getCity(): ?string
{
return $this->city;
}
/**
* @param string|null $city
*
* @return ProspectSearch
*/
public function setCity(?string $city): ProspectSearch
{
$this->city = $city;
return $this;
}
/**
* @return array|null
*/
public function getCountry(): ?array
{
return $this->country;
}
/**
* @param array|null $country
*
* @return ProspectSearch
*/
public function setCountry(?array $country): ProspectSearch
{
$this->country = $country;
return $this;
}
/**
* @return array|null
*/
public function getDevisState(): ?array
{
return $this->devisState;
}
/**
* @param array|null $devisState
*
* @return ProspectSearch
*/
public function setDevisState(?array $devisState): ProspectSearch
{
$this->devisState = $devisState;
return $this;
}
/**
* @return DateCompare|null
*/
public function getCreationYear(): ?DateCompare
{
return $this->creationYear;
}
/**
* @param DateCompare|null $creationYear
*
* @return ProspectSearch
*/
public function setCreationYear(?DateCompare $creationYear): ProspectSearch
{
$this->creationYear = $creationYear;
return $this;
}
/**
* @return string|null
*/
public function getLat(): ?string
{
return $this->lat;
}
/**
* @param string|null $lat
*
* @return ProspectSearch
*/
public function setLat(?string $lat): ProspectSearch
{
$this->lat = $lat;
return $this;
}
/**
* @return string|null
*/
public function getLng(): ?string
{
return $this->lng;
}
/**
* @param string|null $lng
*
* @return ProspectSearch
*/
public function setLng(?string $lng): ProspectSearch
{
$this->lng = $lng;
return $this;
}
/**
* @return string|null
*/
public function getDistance(): ?string
{
return $this->distance;
}
/**
* @param string|null $distance
*
* @return ProspectSearch
*/
public function setDistance(?string $distance): ProspectSearch
{
$this->distance = $distance;
return $this;
}
/**
* @return NumberCompare|null
*/
public function getTurnOver(): ?NumberCompare
{
return $this->turnOver;
}
/**
* @param NumberCompare|null $turnOver
*
* @return ProspectSearch
*/
public function setTurnOver(?NumberCompare $turnOver): ProspectSearch
{
$this->turnOver = $turnOver;
return $this;
}
/**
* @return array|null
*/
public function getTaskIds(): ?array
{
return $this->taskIds;
}
/**
* @param array|null $taskIds
*
* @return ProspectSearch
*/
public function setTaskIds(?array $taskIds): ProspectSearch
{
$this->taskIds = $taskIds;
return $this;
}
/**
* @return array|null
*/
public function getQuoteIds(): ?array
{
return $this->quoteIds;
}
/**
* @param array|null $quoteIds
*
* @return ProspectSearch
*/
public function setQuoteIds(?array $quoteIds): ProspectSearch
{
$this->quoteIds = $quoteIds;
return $this;
}
/**
* @return bool|null
*/
public function getIsReverse(): ?bool
{
return $this->isReverse;
}
/**
* @param bool|null $isReverse
*
* @return ProspectSearch
*/
public function setIsReverse(?bool $isReverse): ProspectSearch
{
$this->isReverse = $isReverse;
return $this;
}
/**
* @return DateCompare|null
*/
public function getCreatedAt(): ?DateCompare
{
return $this->createdAt;
}
/**
* @param DateCompare|null $createdAt
*
* @return ProspectSearch
*/
public function setCreatedAt(?DateCompare $createdAt): ProspectSearch
{
$this->createdAt = $createdAt;
return $this;
}
/**
* @return DateCompare|null
*/
public function getUpdatedAt(): ?DateCompare
{
return $this->updatedAt;
}
/**
* @param DateCompare|null $updatedAt
*
* @return ProspectSearch
*/
public function setUpdatedAt(?DateCompare $updatedAt): ProspectSearch
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* @return string
*/
public function getSiret(): ?string
{
return $this->siret;
}
/**
* @param string|null $siret
*
* @return ProspectSearch
*/
public function setSiret(?string $siret): ProspectSearch
{
$this->siret = $siret;
return $this;
}
/**
* @return string|null
*/
public function getFax(): ?string
{
return $this->fax;
}
/**
* @param string|null $fax
*
* @return ProspectSearch
*/
public function setFax(?string $fax): ProspectSearch
{
$this->fax = $fax;
return $this;
}
/**
* @return string|null
*/
public function getWebSite(): ?string
{
return $this->webSite;
}
/**
* @param string|null $webSite
*
* @return ProspectSearch
*/
public function setWebSite(?string $webSite): ProspectSearch
{
$this->webSite = $webSite;
return $this;
}
/**
* @return NumberCompare|null
*/
public function getSocialCapital(): ?NumberCompare
{
return $this->socialCapital;
}
/**
* @param NumberCompare|null $socialCapital
*
* @return ProspectSearch
*/
public function setSocialCapital(?NumberCompare $socialCapital): ProspectSearch
{
$this->socialCapital = $socialCapital;
return $this;
}
/**
* @return string|null
*/
public function getCedex(): ?string
{
return $this->cedex;
}
/**
* @param string|null $cedex
*
* @return ProspectSearch
*/
public function setCedex(?string $cedex): ProspectSearch
{
$this->cedex = $cedex;
return $this;
}
/**
* @return string|null
*/
public function getAddress(): ?string
{
return $this->address;
}
/**
* @param string|null $address
*
* @return ProspectSearch
*/
public function setAddress(?string $address): ProspectSearch
{
$this->address = $address;
return $this;
}
/**
* @return array|null
*/
public function getTva(): ?array
{
return $this->tva;
}
/**
* @param array|null $tva
*
* @return ProspectSearch
*/
public function setTva(?array $tva): ProspectSearch
{
$this->tva = $tva;
return $this;
}
/**
* @return array|null
*/
public function getWorkforce(): ?array
{
return $this->workforce;
}
/**
* @param array|null $workforce
*
* @return ProspectSearch
*/
public function setWorkforce(?array $workforce): ProspectSearch
{
$this->workforce = $workforce;
return $this;
}
/**
* @return string|null
*/
public function getAddressComplement(): ?string
{
return $this->addressComplement;
}
/**
* @param string|null $addressComplement
*
* @return ProspectSearch
*/
public function setAddressComplement(?string $addressComplement): ProspectSearch
{
$this->addressComplement = $addressComplement;
return $this;
}
/**
* @return array|null
*/
public function getSheetType(): ?array
{
return $this->sheetType;
}
/**
* @param array|null $sheetType
*
* @return ProspectSearch
*/
public function setSheetType(?array $sheetType): ProspectSearch
{
$this->sheetType = $sheetType;
return $this;
}
/**
* @return bool|null
*/
public function getJustLabelAndId(): ?bool
{
return $this->justLabelAndId;
}
/**
* @param bool|null $justLabelAndId
*
* @return ProspectSearch
*/
public function setJustLabelAndId(?bool $justLabelAndId): ProspectSearch
{
$this->justLabelAndId = $justLabelAndId;
return $this;
}
/**
* @return array|null
*/
public function getPotential(): ?array
{
return $this->potential;
}
/**
* @param array|null $potential
*
* @return ProspectSearch
*/
public function setPotential(?array $potential): ProspectSearch
{
$this->potential = $potential;
return $this;
}
/**
* @return bool|null
*/
public function getHasSubscription(): ?bool
{
return $this->hasSubscription;
}
/**
* @param bool|null $hasSubscription
*
* @return self
*/
public function setHasSubscription(?bool $hasSubscription): self
{
$this->hasSubscription = $hasSubscription;
return $this;
}
public function getFileLabel(): ?string
{
return $this->fileLabel;
}
public function setFileLabel(?string $fileLabel): self
{
$this->fileLabel = $fileLabel;
return $this;
}
}