public function makeAll(&$demoDataHelper)
 {
     assert('$demoDataHelper instanceof DemoDataHelper');
     assert('$demoDataHelper->isSetRange("User")');
     foreach (User::getAll() as $user) {
         $gameScore = GameScore::resolveToGetByTypeAndPerson('LoginUser', $user);
         $gameScore->value = 10;
         $saved = $gameScore->save();
         assert('$saved');
         $gamePoint = GamePoint::resolveToGetByTypeAndPerson(GamePoint::TYPE_USER_ADOPTION, $user);
         $gamePoint->value = mt_rand(100, 300);
         $saved = $gamePoint->save();
         assert('$saved');
         $gameScore = GameScore::resolveToGetByTypeAndPerson('CreateAccount', $user);
         $gameScore->value = 10;
         $saved = $gameScore->save();
         assert('$saved');
         $gamePoint = GamePoint::resolveToGetByTypeAndPerson(GamePoint::TYPE_NEW_BUSINESS, $user);
         $gamePoint->value = 100;
         $saved = $gamePoint->save();
         assert('$saved');
         //Badges
         $gameBadge = new GameBadge();
         $gameBadge->type = 'LoginUser';
         $gameBadge->grade = 2;
         $gameBadge->person = $user;
         $saved = $gameBadge->save();
         assert('$saved');
         $gameBadge = new GameBadge();
         $gameBadge->type = 'CreateAccount';
         $gameBadge->grade = 3;
         $gameBadge->person = $user;
         $saved = $gameBadge->save();
         assert('$saved');
         //Levels
         $gameLevel = GameLevel::resolveByTypeAndPerson(GameLevel::TYPE_GENERAL, $user);
         $gameLevel->value = 1;
         $saved = $gameLevel->save();
         assert('$saved');
         $gameLevel = GameLevel::resolveByTypeAndPerson(GameLevel::TYPE_NEW_BUSINESS, $user);
         $gameLevel->value = 1;
         $saved = $gameLevel->save();
         assert('$saved');
     }
 }
Esempio n. 2
0
 /**
  * Called at the end of the page request.  Processes any new badges or badge grade changes for the current user.
  */
 public function resolveNewBadges()
 {
     if (!$this->enabled) {
         return;
     }
     $userBadgesByType = GameBadge::getAllByPersonIndexedByType(Yii::app()->user->userModel);
     $userPointsByType = GamePoint::getAllByPersonIndexedByType(Yii::app()->user->userModel);
     $userScoresByType = GameScore::getAllByPersonIndexedByType(Yii::app()->user->userModel);
     $badgeRulesClassNames = GameBadgeRules::getBadgeRulesData();
     foreach ($badgeRulesClassNames as $badgeRulesClassName) {
         $newBadge = false;
         $gradeChange = false;
         $badgeGrade = $badgeRulesClassName::badgeGradeUserShouldHaveByPointsAndScores($userPointsByType, $userScoresByType);
         if ($badgeGrade > 0) {
             if (isset($userBadgesByType[$badgeRulesClassName::getType()])) {
                 $gameBadge = $userBadgesByType[$badgeRulesClassName::getType()];
                 if ($badgeGrade > $gameBadge->grade) {
                     $gameBadge->grade = $badgeGrade;
                     $saved = $gameBadge->save();
                     if (!$saved) {
                         throw new NotSupportedException();
                     }
                     $gradeChange = true;
                 }
             } else {
                 $gameBadge = new GameBadge();
                 $gameBadge->type = $badgeRulesClassName::getType();
                 $gameBadge->person = Yii::app()->user->userModel;
                 $gameBadge->grade = 1;
                 $saved = $gameBadge->save();
                 if (!$saved) {
                     throw new NotSupportedException();
                 }
                 $newBadge = true;
             }
             if ($gradeChange || $newBadge) {
                 if ($gradeChange) {
                     $gradeChangeOrNewBadge = 'GradeChange';
                 } else {
                     $gradeChangeOrNewBadge = 'NewBadge';
                 }
                 GameBadge::processBonusPoints($gameBadge, Yii::app()->user->userModel, $gradeChangeOrNewBadge);
                 if ($this->modalNotificationsEnabled) {
                     $gameNotification = new GameNotification();
                     $gameNotification->user = Yii::app()->user->userModel;
                     if ($newBadge) {
                         $gameNotification->setNewBadgeByType($gameBadge->type);
                     } elseif ($gradeChange) {
                         $gameNotification->setBadgeGradeChangeByTypeAndNewGrade($gameBadge->type, $gameBadge->grade);
                     }
                     $saved = $gameNotification->save();
                     if (!$saved) {
                         throw new FailedToSaveModelException();
                     }
                 }
             }
         }
     }
 }
 public function actionGameDashboard($id)
 {
     $user = User::getById(intval($id));
     UserAccessUtil::resolveAccessingASystemUser($user);
     $title = Zurmo::t('ZurmoModule', 'Dashboard');
     $badgeData = GameBadge::getAllByPersonIndexedByType($user);
     $generalLevelData = GameLevelUtil::getStatisticsDataForAGivenLevelType($user, GameLevel::TYPE_GENERAL);
     $rankingData = GamePointUtil::getUserRankingData($user);
     $statisticsData = GameLevelUtil::getUserStatisticsData($user);
     $collectionData = GameCollection::resolvePersonAndAvailableTypes($user, GameCollection::getAvailableTypes());
     $dashboardView = new UserGameDashboardView($this, $user, $generalLevelData, $badgeData, $rankingData, $statisticsData, $collectionData);
     $view = new AjaxPageView($dashboardView);
     echo $view->render();
 }
Esempio n. 4
0
 /**
  * @depends testGetAllByPersonIndexedByType
  */
 public function testProcessBonusPoints()
 {
     Yii::app()->user->userModel = User::getByUsername('steven');
     $gamePoint = GamePoint::resolveToGetByTypeAndPerson(GamePoint::TYPE_USER_ADOPTION, Yii::app()->user->userModel);
     $this->assertEquals(GamePoint::TYPE_USER_ADOPTION, $gamePoint->type);
     $this->assertEquals(0, $gamePoint->value);
     //Testing a badge that does not give bonus points.
     $gameBadge = new GameBadge();
     $gameBadge->person = Yii::app()->user->userModel;
     $gameBadge->type = 'CreateLead';
     $gameBadge->grade = 1;
     $this->assertTrue($gameBadge->save());
     GameBadge::processBonusPoints($gameBadge, Yii::app()->user->userModel, 'NewBadge');
     //Test that bonus points were actually received.
     $gamePoint = GamePoint::resolveToGetByTypeAndPerson(GamePoint::TYPE_USER_ADOPTION, Yii::app()->user->userModel);
     $this->assertEquals(GamePoint::TYPE_USER_ADOPTION, $gamePoint->type);
     $this->assertEquals(50, $gamePoint->value);
 }
Esempio n. 5
0
 public function actionDetails($id)
 {
     $user = User::getById(intval($id));
     UserAccessUtil::resolveAccessingASystemUser($user);
     $title = Zurmo::t('UsersModule', 'Profile');
     $breadcrumbLinks = array(strval($user) => array('default/details', 'id' => $id), $title);
     AuditEvent::logAuditEvent('ZurmoModule', ZurmoModule::AUDIT_EVENT_ITEM_VIEWED, array(strval($user), 'UsersModule'), $user);
     $params = array('controllerId' => $this->getId(), 'relationModuleId' => $this->getModule()->getId(), 'relationModel' => $user, 'rankingData' => GamePointUtil::getUserRankingData($user), 'statisticsData' => GameLevelUtil::getUserStatisticsData($user), 'badgeData' => GameBadge::getAllByPersonIndexedByType($user));
     $detailsAndRelationsView = new UserDetailsAndRelationsView($this->getId(), $this->getModule()->getId(), $params);
     $view = new UsersPageView($this->resolveZurmoDefaultOrAdminView($detailsAndRelationsView, $breadcrumbLinks, 'UserBreadCrumbView'));
     echo $view->render();
 }