Example #1
0
 public function earnAchieveAction()
 {
     $user = $this->getUser();
     $achievement = $this->getDoctrine()->getRepository('diceBattleBundle:Achievement')->findOneById(2);
     $earnedAchievement = new EarnedAchievement();
     $currentDate = new \DateTime();
     $earnedAchievement->setDateEarned($currentDate);
     $user->addEarnedAchievement($earnedAchievement);
     $achievement->addEarnedAchievement($earnedAchievement);
     $em = $this->getDoctrine()->getManager();
     $em->flush();
     return new Response("You've earned " . $achievement->getAchieveName() . " achieve");
 }
 private function resolveInCodeGroup($user, $groupCode)
 {
     $userGroupName = $groupCode . 'UserAchievements';
     $globalGroupName = $groupCode . 'Achievements';
     foreach ($this->{$userGroupName} as $userGroupItem) {
         $userGroupItemTire = $userGroupItem->getAchieveTier();
         foreach ($this->{$globalGroupName} as $i => $globalGroupItem) {
             $globalGroupItemTire = $globalGroupItem->getAchieveTier();
             if ($userGroupItemTire == $globalGroupItemTire) {
                 unset($this->{$globalGroupName}[$i]);
             }
         }
     }
     foreach ($this->{$globalGroupName} as $globalGroupItem) {
         $requirement = $globalGroupItem->getAchieveRequirement();
         $getUserStatMethod = 'get' . ucfirst($groupCode);
         if ($user->{$getUserStatMethod}() >= $requirement) {
             $currentDate = new \DateTime();
             $earnedAchievement = new EarnedAchievement();
             $earnedAchievement->setDateEarned($currentDate);
             $user->addEarnedAchievement($earnedAchievement);
             $globalGroupItem->addEarnedAchievement($earnedAchievement);
             $this->session->getFlashBag()->add('notice', $globalGroupItem->getAchieveName());
         }
     }
     return $user;
 }