public function onActionComplete(ActionEvent $event) { if ($event->getProgress() === null) { return; } $exp = $event->getProgress() ? 2 : -2; $this->em->getRepository('AcmeUserBundle:User')->increaseExp($event->getUser(), $exp); }
public function hundredActionDone(ActionEvent $event) { $achievement = $this->em->getRepository('AcmeEdelaBundle:Achievement')->findOneBy(['tkey' => 'hundred-action-done']); if (!$achievement) { return; } if (!($userAchievement = $event->getUser()->getUserAchievements()->matching(Criteria::create()->where(Criteria::expr()->eq('achievement', $achievement)))->first())) { $userAchievement = new UserAchievement(); $userAchievement->setProgress(0)->setUser($event->getUser())->setAchievement($achievement); } $previousProgress = $userAchievement->getProgress(); if ($this->doneCount < 100) { $userAchievement->setProgress($this->doneCount); } else { $userAchievement->setProgress(100); } $this->em->persist($userAchievement); if ($userAchievement->getProgress() == 100 && $event->getProgress() && $previousProgress != $userAchievement->getProgress()) { $this->em->getRepository('AcmeUserBundle:User')->increaseExp($event->getUser(), $achievement->getExpReward()); $this->em->persist($event->getUser()); } $this->em->flush(); }