<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="App\Repository\ProducerRepository")
* @ORM\Table(indexes={
* @ORM\Index(name="cuig",columns={"cuig"}),
* @ORM\Index(name="cuit",columns={"cuit"}),
* @ORM\Index(name="name",columns={"name"}),
* @ORM\Index(name="renspa",columns={"renspa"}),
* @ORM\Index(name="createdAt",columns={"created_at"}),
* @ORM\Index(name="updatedAt",columns={"updated_at"}),
* @ORM\Index(name="deletedAt",columns={"deleted_at"}),
* @ORM\Index(name="created",columns={"created"}),
* @ORM\Index(name="updated",columns={"updated"}),
* })
* })
* @ORM\HasLifecycleCallbacks
*/
class Producer {
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=36, nullable=true)
*/
private $uuid;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $firebaseId;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $cuit;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $picture;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $email;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $phone;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $businessName;
/**
* @ORM\Column(type="boolean")
*/
private $toUpdate;
/**
* @ORM\Column(type="datetime")
*/
private $created;
/**
* @ORM\Column(type="datetime")
*/
private $updated;
/**
* @ORM\ManyToOne(targetEntity="User", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity="Address", cascade={"persist"})
* @ORM\JoinColumn(name="address_id", referencedColumnName="id")
*/
private $address;
/**
* @ORM\OneToMany(targetEntity="Farm", mappedBy="producer")
*/
private $farms;
/**
* @var bool
* @ORM\Column(name="deleted", type="boolean", nullable=true)
*/
private $deleted = false;
/**
* @var bool
* @ORM\Column(name="demo", type="boolean", nullable=true)
*/
private $demo = false;
/**
* One Producer has many Animals.
* @ORM\OneToMany(targetEntity="Animal", mappedBy="producer")
*/
private $animals;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $renspa;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $cuig;
/**
* Many Producers have One Organization
* @ORM\ManyToOne(targetEntity="Organization")
* @ORM\JoinColumn(name="organization_id", referencedColumnName="id")
*/
private $organization;
/**
* @ORM\Column(type="datetime")
*/
private $createdAt;
/**
* @ORM\Column(type="datetime")
*/
private $updatedAt;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $deletedAt;
/**
* @ORM\OneToMany(targetEntity=FarmProducer::class, mappedBy="producer", orphanRemoval=true)
*/
private $farmProducers;
/**
* @ORM\Column(type="string", length=255)
*/
private $surname;
/** @ORM\PreUpdate */
public function PreUpdate()
{
$this->setUpdatedAt( new \DateTime() );
}
/** @ORM\PrePersist */
public function PrePersist()
{
$this->setCreatedAt( new \DateTime() );
$this->setUpdatedAt( new \DateTime() );
}
public function __construct() {
$this->farms = new ArrayCollection();
$this->created = new \Datetime;
$this->updated = new \Datetime;
$this->animals = new ArrayCollection();
$this->establishments = new ArrayCollection();
$this->toUpdate = false;
$this->farmProducers = new ArrayCollection();
}
public function getId(): ?int {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getUuid()
{
return $this->uuid;
}
public function setUuid($uuid): self
{
$this->uuid = $uuid;
return $this;
}
/**
* @return mixed
*/
public function getFirebaseId() {
return $this->firebaseId;
}
/**
* @param mixed $firebaseId
*/
public function setFirebaseId($firebaseId) {
$this->firebaseId = $firebaseId;
}
/**
* @return mixed
*/
public function getName() {
return $this->name;
}
/**
* @param mixed $name
*/
public function setName($name) {
$this->name = $name;
}
/**
* @return mixed
*/
public function getCuit() {
return $this->cuit;
}
/**
* @param mixed $cuit
*/
public function setCuit($cuit) {
$this->cuit = strtoupper($cuit);
}
/**
* @return mixed
*/
public function getPicture() {
return $this->picture;
}
/**
* @param mixed $picture
*/
public function setPicture($picture) {
$this->picture = $picture;
}
/**
* @return mixed
*/
public function getEmail() {
return $this->email;
}
/**
* @param mixed $email
*/
public function setEmail($email) {
$this->email = $email;
}
/**
* @return mixed
*/
public function getPhone() {
return $this->phone;
}
/**
* @param mixed $phone
*/
public function setPhone($phone) {
$this->phone = $phone;
}
/**
* @return mixed
*/
public function getBusinessName() {
return $this->businessName;
}
/**
* @param mixed $businessName
*/
public function setBusinessName($businessName): void {
$this->businessName = $businessName;
}
/**
* @return mixed
*/
public function getToUpdate() {
return $this->toUpdate;
}
/**
* @param mixed $toUpdate
*/
public function setToUpdate($toUpdate) {
$this->toUpdate = $toUpdate;
}
/**
* @return mixed
*/
public function getCreated() {
return $this->created;
}
/**
* @param mixed $created
*/
public function setCreated($created) {
$this->created = $created;
}
/**
* @return mixed
*/
public function getUpdated() {
return $this->updated;
}
/**
* @param mixed $updated
*/
public function setUpdated($updated): void {
$this->updated = $updated;
}
/**
* @return mixed
*/
public function getUser() {
return $this->user;
}
/**
* @param mixed $user
*/
public function setUser($user): void {
$this->user = $user;
}
/**
* @return mixed
*/
public function getAddress() {
return $this->address;
}
/**
* @param mixed $address
*/
public function setAddress($address): void {
$this->address = $address;
}
/**
* @return mixed
*/
public function getFarms() {
return $this->establishments; //Replace farms by establishments - #9055
}
/**
* Add Farm
*
* @param $farm
* @return Producer
*/
public function addFarm($farm = null) {
$this->farms->add($farm);
return $this;
}
/**
* Remove Farm
*
* @param $farm
*/
public function removeFarm($farm = null) {
$this->farms->removeElement($farm);
}
public function __toString() {
return $this->name ?? $this->businessName;
}
/**
* @return bool
*/
public function isDeleted(): bool {
return $this->deleted;
}
public function setDeleted(bool $deleted): self
{
$this->deleted = $deleted;
$this->deletedAt = ( $deleted ) ? new \DateTime() : null;
return $this;
}
public function getDeleted(): ?bool {
return $this->deleted;
}
public function getDemo(): ?bool
{
return $this->demo;
}
public function setDemo(?bool $demo): self
{
$this->demo = $demo;
return $this;
}
/**
* @return Collection|Animal[]
*/
public function getAnimals(): Collection
{
return $this->animals;
}
public function addAnimal(Animal $animal): self
{
if (!$this->animals->contains($animal)) {
$this->animals[] = $animal;
$animal->setProducer($this);
}
return $this;
}
public function removeAnimal(Animal $animal): self
{
if ($this->animals->removeElement($animal)) {
// set the owning side to null (unless already changed)
if ($animal->getProducer() === $this) {
$animal->setProducer(null);
}
}
return $this;
}
public function getRenspa(): ?string
{
return $this->renspa;
}
public function setRenspa(?string $renspa): self
{
$this->renspa = $renspa;
return $this;
}
public function getCuig(): ?string
{
return $this->cuig;
}
public function setCuig(?string $cuig): self
{
$this->cuig = $cuig;
return $this;
}
public function getOrganization(): ?Organization
{
return $this->organization;
}
public function setOrganization(?Organization $organization): self
{
$this->organization = $organization;
return $this;
}
public function isToUpdate(): ?bool
{
return $this->toUpdate;
}
public function isDemo(): ?bool
{
return $this->demo;
}
public function getCreatedAt(): ?\DateTime
{
return $this->createdAt;
}
public function setCreatedAt(\DateTime $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUpdatedAt(): ?\DateTime
{
return $this->updatedAt;
}
public function setUpdatedAt(\DateTime $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
public function getDeletedAt(): ?\DateTime
{
return $this->deletedAt;
}
public function setDeletedAt(?\DateTime $deletedAt): self
{
$this->deletedAt = $deletedAt;
$this->deleted = (boolean) $deletedAt;
return $this;
}
/**
* @return Collection<int, FarmProducer>
*/
public function getFarmProducers(): Collection
{
return $this->farmProducers;
}
public function addFarmProducer(FarmProducer $farmProducer): self
{
if (!$this->farmProducers->contains($farmProducer)) {
$this->farmProducers[] = $farmProducer;
$farmProducer->setProducer($this);
}
return $this;
}
public function removeFarmProducer(FarmProducer $farmProducer): self
{
if ($this->farmProducers->removeElement($farmProducer)) {
// set the owning side to null (unless already changed)
if ($farmProducer->getProducer() === $this) {
$farmProducer->setProducer(null);
}
}
return $this;
}
public function getSurname(): ?string
{
return $this->surname;
}
public function setSurname(string $surname): self
{
$this->surname = $surname;
return $this;
}
}