/** * Define o cargo imediatamente superior e o papel herdado. * * Se já existe um cargo pai retira o papel correspondente ao cargo filho. Se não existe, adiciona o papel * correspondente ao cargo filho. A referência do pai anterior deve ser guardada para ser salva no banco. * * @param \AdministrativeStructure\Entity\Job $parent * @return Self */ public function setParent(Job $parent) { $this->initRole(); if (isset($this->parent) && $parent->getJobId() !== $this->parent->getJobId()) { $this->parentBuffer = $this->parent; $this->parentBuffer->removeChildren(new ArrayCollection([$this])); } $parent->addChildren(new ArrayCollection([$this])); $this->parent = $parent; return $this; }