Пример #1
0
 public function onActionComplete(ActionEvent $event)
 {
     if ($event->getProgress() === null) {
         return;
     }
     $exp = $event->getProgress() ? 2 : -2;
     $this->em->getRepository('AcmeUserBundle:User')->increaseExp($event->getUser(), $exp);
 }
Пример #2
0
 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();
 }