Пример #1
0
 /**
  * @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()));
 }
Пример #2
0
 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));
 }