src/Entity/Core/AbstractOrganization.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Core;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use App\Entity\PersonTrait\CoordinatesTrait;
  6. use App\Form\Type\AbstractOrganizationType;
  7. use Symfony\Component\PropertyAccess\PropertyAccessor;
  8. use Symfony\Component\Validator\Constraints as Assert;
  9. use JMS\Serializer\Annotation as Serializer;
  10. use Symfony\Component\Serializer\Annotation\MaxDepth;
  11. /**
  12.  * Organization.
  13.  *
  14.  * IMPORTANT : serialization is handle by YML
  15.  * to prevent rules from CoordinatesTrait being applied to private infos (trainee, trainer)
  16.  *
  17.  * @see Resources/config/serializer/Entity.Organization.yml
  18.  * NO SERIALIZATION INFO IN ANNOTATIONS !!!
  19.  *
  20.  * @ORM\Table(name="organization")
  21.  * @ORM\Entity
  22.  * @ORM\InheritanceType("SINGLE_TABLE")
  23.  * @ORM\DiscriminatorColumn(name="type", type="string")
  24.  */
  25. abstract class AbstractOrganization
  26. {
  27.     /**
  28.      * @var boolean addressType
  29.      *
  30.      * @ORM\Column(name="address_type", type="integer", nullable=true)
  31.      * @Serializer\Exclude
  32.      */
  33.     protected $addresstype;
  34.     /**
  35.      * @var string address
  36.      *
  37.      * @ORM\Column(name="address", type="string", length=512, nullable=true)
  38.      * @Serializer\Groups({"api"})
  39.      */
  40.     protected $address;
  41.     /**
  42.      * @var string zip
  43.      *
  44.      * @ORM\Column(name="zip", type="string", length=32, nullable=true)
  45.      * @Serializer\Groups({"api"})
  46.      */
  47.     protected $zip;
  48.     /**
  49.      * @var string city
  50.      *
  51.      * @ORM\Column(name="city", type="string", length=128, nullable=true)
  52.      * @Serializer\Groups({"api"})
  53.      */
  54.     protected $city;
  55.     /**
  56.      * @var string
  57.      * @Assert\Email(message="Vous devez renseigner un email valide.")
  58.      * @ORM\Column(name="email", type="string", length=128, nullable=true)
  59.      * @Serializer\Groups({"api"})
  60.      */
  61.     protected $email;
  62.     /**
  63.      * @var string
  64.      *
  65.      * @ORM\Column(name="phone_number", type="string", length=255, nullable=true)
  66.      * @Serializer\Groups({"api"})
  67.      */
  68.     protected $phonenumber;
  69.     /**
  70.      * @var string
  71.      *
  72.      * @ORM\Column(name="fax_number", type="string", length=255, nullable=true)
  73.      * @Serializer\Groups({"api"})
  74.      */
  75.     protected $faxnumber;
  76.     /**
  77.      * @var string
  78.      * @ORM\Column(name="website", type="string", length=512, nullable=true)
  79.      * @Serializer\Groups({"api"})
  80.      */
  81.     protected $website;
  82.     /**
  83.      * Copy coordinates from another entity.
  84.      *
  85.      * @param CoordinatesTrait $entity
  86.      * @param bool             $force  override existing data
  87.      */
  88.     public function copyCoordinates($entity$force true)
  89.     {
  90.         $propertyAccessor = new PropertyAccessor();
  91.         foreach (array('addresstype''address''zip''city''email''phonenumber''faxnumber''website') as $property) {
  92.             $thisValue $propertyAccessor->getValue($this$property);
  93.             if ($force || ! $thisValue) {
  94.                 $propertyAccessor->setValue($this$property$propertyAccessor->getValue($entity$property));
  95.             }
  96.         }
  97.     }
  98.     /*
  99.      * @param boolean $addressType
  100.      */
  101.     public function setAddresstype($addressType)
  102.     {
  103.         $this->addresstype $addressType;
  104.     }
  105.     /**
  106.      * @return boolean
  107.      */
  108.     public function getAddresstype()
  109.     {
  110.         return $this->addresstype;
  111.     }
  112.     /**
  113.      * @param string $address
  114.      */
  115.     public function setAddress($address)
  116.     {
  117.         $this->address $address;
  118.     }
  119.     /**
  120.      * @return string
  121.      */
  122.     public function getAddress()
  123.     {
  124.         return $this->address;
  125.     }
  126.     /**
  127.      * @param string $zip
  128.      */
  129.     public function setZip($zip)
  130.     {
  131.         $this->zip $zip;
  132.     }
  133.     /**
  134.      * @return string
  135.      */
  136.     public function getZip()
  137.     {
  138.         return $this->zip;
  139.     }
  140.     /**
  141.      * @param string $city
  142.      */
  143.     public function setCity($city)
  144.     {
  145.         $this->city $city;
  146.     }
  147.     /**
  148.      * @return string
  149.      */
  150.     public function getCity()
  151.     {
  152.         return $this->city;
  153.     }
  154.     /**
  155.      * @return mixed
  156.      */
  157.     public function getEmail()
  158.     {
  159.         return $this->email;
  160.     }
  161.     /**
  162.      * @param mixed $email
  163.      */
  164.     public function setEmail($email)
  165.     {
  166.         $this->email $email;
  167.     }
  168.     /**
  169.      * @param string $phoneNumber
  170.      */
  171.     public function setPhonenumber($phoneNumber)
  172.     {
  173.         $this->phonenumber $phoneNumber;
  174.     }
  175.     /**
  176.      * @return string
  177.      */
  178.     public function getPhonenumber()
  179.     {
  180.         return $this->phonenumber;
  181.     }
  182.     /**
  183.      * @return string
  184.      */
  185.     public function getFaxnumber()
  186.     {
  187.         return $this->faxnumber;
  188.     }
  189.     /**
  190.      * @param string $faxNumber
  191.      */
  192.     public function setFaxnumber($faxNumber)
  193.     {
  194.         $this->faxnumber $faxNumber;
  195.     }
  196.     /**
  197.      * @param string $website
  198.      */
  199.     public function setWebsite($website)
  200.     {
  201.         $this->website $website;
  202.     }
  203.     /**
  204.      * @return string
  205.      */
  206.     public function getWebsite()
  207.     {
  208.         return $this->website;
  209.     }
  210.     /**
  211.      * Return the full address.
  212.      *
  213.      * @return string
  214.      */
  215.     public function getFullAddress()
  216.     {
  217.         $lines = array();
  218.         if ($this->getAddress()) {
  219.             $lines[] = $this->getAddress();
  220.         }
  221.         if ($this->getCity()) {
  222.             $lines[] = ($this->getZip() ? $this->getZip() . ' ' '') . $this->getCity();
  223.         }
  224.         return implode("\n"$lines);
  225.     }
  226.     /**
  227.      * @var int
  228.      *
  229.      * @ORM\Column(name="id", type="integer")
  230.      * @ORM\Id
  231.      * @ORM\GeneratedValue(strategy="AUTO")
  232.      * @Serializer\Groups({"Default", "api"})
  233.      */
  234.     protected $id;
  235.     /**
  236.      * @var string
  237.      *
  238.      * @ORM\Column(name="name", type="string", length=255)
  239.      * @Serializer\Groups({"Default", "api"})
  240.      */
  241.     protected $name;
  242.     /**
  243.      * @var string
  244.      *
  245.      * @ORM\Column(name="code", type="string", length=32)
  246.      * @Serializer\Groups({"Default", "api"})
  247.      */
  248.     protected $code;
  249.     /**
  250.      * @var ArrayCollection
  251.      * @ORM\OneToMany(targetEntity="User", mappedBy="organization", cascade={"persist", "merge"})
  252.      * @Serializer\Exclude
  253.      */
  254.     private $users;
  255.     /**
  256.      * @var bool
  257.      * @ORM\Column(name="trainee_registrable", type="boolean")
  258.      * @Serializer\Groups({"api"})
  259.      */
  260.     protected $traineeRegistrable true;
  261.     /**
  262.      * @var AbstractInstitution
  263.      * @ORM\ManyToOne(targetEntity="App\Entity\Core\AbstractInstitution")
  264.      * @ORM\JoinColumn(nullable=false)
  265.      * @Serializer\Groups({"Default", "api"})
  266.      */
  267.     private $institution;
  268.     /**
  269.      * Constructor.
  270.      */
  271.     public function __construct()
  272.     {
  273.         $this->users = new ArrayCollection();
  274.     }
  275.     public function __toString()
  276.     {
  277.         return $this->name;
  278.     }
  279.     /**
  280.      * @param int $id
  281.      */
  282.     public function setId($id)
  283.     {
  284.         $this->id $id;
  285.     }
  286.     /**
  287.      * @return int
  288.      */
  289.     public function getId()
  290.     {
  291.         return $this->id;
  292.     }
  293.     /**
  294.      * @param string $code
  295.      */
  296.     public function setCode($code)
  297.     {
  298.         $this->code $code;
  299.     }
  300.     /**
  301.      * @return string
  302.      */
  303.     public function getCode()
  304.     {
  305.         return $this->code;
  306.     }
  307.     /**
  308.      * @param string $name
  309.      */
  310.     public function setName($name)
  311.     {
  312.         $this->name $name;
  313.     }
  314.     /**
  315.      * @return string
  316.      */
  317.     public function getName()
  318.     {
  319.         return $this->name;
  320.     }
  321.     /**
  322.      * @param ArrayCollection $users
  323.      */
  324.     public function setUsers($users)
  325.     {
  326.         $this->users $users;
  327.     }
  328.     /**
  329.      * @return ArrayCollection
  330.      */
  331.     public function getUsers()
  332.     {
  333.         return $this->users;
  334.     }
  335.     /**
  336.      * @return bool
  337.      */
  338.     public function getTraineeRegistrable()
  339.     {
  340.         return $this->traineeRegistrable;
  341.     }
  342.     /**
  343.      * @param bool $traineeRegistrable
  344.      */
  345.     public function setTraineeRegistrable($traineeRegistrable)
  346.     {
  347.         $this->traineeRegistrable $traineeRegistrable;
  348.     }
  349.     public static function getFormType()
  350.     {
  351.         return AbstractOrganizationType::class;
  352.     }
  353.     /**
  354.      * @return string
  355.      */
  356.     public static function getType()
  357.     {
  358.         return 'trainer';
  359.     }
  360.     /**
  361.      * @return AbstractInstitution
  362.      */
  363.     public function getInstitution()
  364.     {
  365.         return $this->institution;
  366.     }
  367.     /**
  368.      * @param AbstractInstitution $institution
  369.      */
  370.     public function setInstitution($institution)
  371.     {
  372.         $this->institution $institution;
  373.     }
  374. }