/** * @param Skill $skill * @param mixed $data */ protected function postSave(Skill $skill, $data) { SkillQuery::disableVersioning(); // calculate $calculator = new Calculator(); $calculator->calculate($skill); $calculator->getModifiedGenerationSkills()->each(function (Skill $skill) { LineageQuery::create()->filterBySkillId($skill->getId())->delete(); }); $calculator->getModifiedSkills()->each(function (Skill $skill) { $skill->save(); }); // set sequence picture if (isset($data['meta']) && isset($data['meta']['filename'])) { $module = $this->getServiceContainer()->getModuleManager()->load('gossi/trixionary'); $destpath = $module->getSequencePath($skill); $dest = new File($destpath); if ($dest->exists()) { $dest->delete(); } $file = new File($module->getUploadPath()->append($data['meta']['filename'])); $file->move($destpath); $skill->setSequencePictureUrl($module->getSequenceUrl($skill)); $skill->save(); } SkillQuery::enableVersioning(); // activity $user = $this->getServiceContainer()->getAuthManager()->getUser(); $user->newActivity(array('verb' => $this->isNew ? Activity::VERB_CREATE : Activity::VERB_AUTHOR, 'object' => $skill, 'target' => $skill->getSport())); }
public function testInsertAerialIntoHoppingTree() { $this->sample->createHoppingTree(); $treyflip = $this->sample->getTreyflip(); $unispin180 = $this->sample->getUnispin180(); // initial calculation $calculator = new Calculator(); $calculator->calculate($treyflip); // lineage for 180 unispin $this->assertEquals([1, 9, 10], $this->getLineageIds($unispin180)); // add aerial $aerial = $this->sample->createSkill(1000, 'Aerial'); $aerial->addSkillRelatedByParentId($this->sample->getHoppingSIF()); $calculator->reset(); $calculator->calculate($aerial); // assert aerial $this->assertEquals([1, 9, 10], $this->getLineageIds($aerial)); $this->assertEquals(4, $aerial->getGeneration()); $this->assertEquals(0, $aerial->getImportance()); // add aerial as parent for 180 unispin $unispin180->clearSkillsRelatedByParentId(); $unispin180->addSkillRelatedByParentId($aerial); $calculator->reset(); $calculator->calculate($unispin180); // assert 180 unispin $this->assertEquals(5, $unispin180->getGeneration()); $this->assertEquals([1, 9, 10, 1000], $this->getLineageIds($unispin180)); // assert treyflip $this->assertEquals(7, $treyflip->getGeneration()); $this->assertEquals([1, 9, 10, 1000, 12, 13], $this->getLineageIds($treyflip)); }