/** * Creates an ability and links it to a given competency. * * @param Competency $parent * @param Ability $ability * @param Level $level * @return \HeVinci\CompetencyBundle\Entity\Ability * @throws \LogicException if the parent competency is not a leaf node */ public function createAbility(Competency $parent, Ability $ability, Level $level) { if ($parent->getRight() - $parent->getLeft() > 1) { throw new \LogicException("Cannot associate an ability with competency '{$parent->getName()}'" . ': competency must be a leaf node'); } $link = new CompetencyAbility(); $link->setCompetency($parent); $link->setAbility($ability); $link->setLevel($level); $this->om->persist($ability); $this->om->persist($link); $this->om->flush(); return $ability; }
private function loadCompetency(Competency $competency) { return ['id' => $competency->getId(), 'name' => $competency->getName(), 'type' => 'competency_', 'paths' => [['level' => '-', 'steps' => array_map(function ($step) { return $step->getName(); }, $this->competencyRepo->getPath($competency))]]]; }
/** * @param Competency $competency */ public function setCompetency(Competency $competency) { $this->competency = $competency; $this->competencyName = $competency->getName(); }