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; }