Exemplo n.º 1
0
 public function postGamertagOwnership(OwnershipFormRequest $request)
 {
     $account = Account::where('seo', Text::seoGamertag($request->request->get('gamertag')))->first();
     $this->user->account_id = $account->id;
     $this->user->save();
     return \Redirect::action('UserCpController@getIndex')->with('flash_message', ['header' => 'Gamertag Verified!', 'close' => true, 'body' => 'You have proved ownership of <strong>' . $account->gamertag . '</strong>.']);
 }
Exemplo n.º 2
0
 public function checkForUpdate($gamertag = '')
 {
     if ($this->request->ajax() && !\Agent::isRobot()) {
         try {
             $account = Account::with('destiny.characters')->where('seo', Text::seoGamertag($gamertag))->firstOrFail();
             // We don't care about non-panda members
             if (!$account->isPandaLove()) {
                 $this->inactiveCounter = 1;
             }
             // check for 10 inactive checks
             if ($account->destiny->inactiveCounter >= $this->inactiveCounter) {
                 return response()->json(['updated' => false, 'frozen' => true, 'last_update' => 'This account hasn\'t had new data in awhile. - <a href="' . URL::action('Destiny\\ProfileController@manualUpdate', [$account->seo]) . '" class="ui  horizontal green label no_underline">Update Manually</a>']);
             }
             $char = $account->destiny->firstCharacter();
             if ($char->updated_at->diffInMinutes() >= $this->refreshRateInMinutes) {
                 // update this
                 $this->dispatch(new UpdateAccount($account));
                 return response()->json(['updated' => true, 'frozen' => false, 'last_update' => $char->getLastUpdatedRelative()]);
             }
             return response()->json(['updated' => false, 'frozen' => false, 'last_update' => $char->getLastUpdatedRelative()]);
         } catch (ModelNotFoundException $e) {
             return response()->json(['error' => 'Gamertag not found']);
         }
     }
 }
Exemplo n.º 3
0
 /**
  * @param $gamertag
  * @return \Onyx\Account|void
  */
 private function checkCacheForGamertag($gamertag)
 {
     $account = Account::where('seo', DestinyText::seoGamertag($gamertag))->first();
     if ($account instanceof Account) {
         return $account;
     }
     return false;
 }
Exemplo n.º 4
0
 public static function buildCombinedStats($games)
 {
     // combined numbers (move out of controller in future)
     $combined = [];
     $gameCount = 0;
     $timeCount = 0;
     $revives = false;
     foreach ($games as $game) {
         // Check for Trials game, and check if any non Panda are playing
         $pandaId = 0;
         if ($game->isToO()) {
             $pandaId = $game->pvp->pandaId;
         }
         foreach ($game->players as $player) {
             if (!$player->completed) {
                 continue;
             }
             if (isset($combined[$player->membershipId])) {
                 $combined[$player->membershipId]['kills'] += $player->kills;
                 $combined[$player->membershipId]['deaths'] += $player->deaths;
                 $combined[$player->membershipId]['assists'] += $player->assists;
                 $combined[$player->membershipId]['level'] += $player->level;
                 $combined[$player->membershipId]['count'] += 1;
                 $combined[$player->membershipId]['revives_given'] += $player->revives_given;
                 $combined[$player->membershipId]['revives_taken'] += $player->revives_taken;
                 if ($player->revives_given != 0) {
                     $revives = true;
                 }
                 // find players max level
                 $combined[$player->membershipId]['maxLevel'] = max($combined[$player->membershipId]['maxLevel'], $player->level);
             } else {
                 $combined[$player->membershipId] = ['kills' => $player->kills, 'deaths' => $player->deaths, 'assists' => $player->assists, 'level' => $player->level, 'count' => 1, 'maxLevel' => 0, 'class' => $player->class, 'charId' => $player->characterId, 'revives_given' => $player->revives_given, 'revives_taken' => $player->revives_taken];
                 if (isset($player->account->gamertag)) {
                     $extra = ['gamertag' => $player->account->gamertag, 'seo' => $player->account->seo, 'isPandaLove' => $player->account->isPandaLove(), 'isPandaGuest' => false];
                     // Check if this player is on PandaTeam, if so mark them as Panda
                     if ($game->isToO()) {
                         if (!$extra['isPandaLove'] && $player->team == $pandaId) {
                             $extra['isPandaLove'] = true;
                             $extra['isPandaGuest'] = true;
                         }
                     }
                     $combined[$player->membershipId] = array_merge($combined[$player->membershipId], ['player' => $extra]);
                 }
             }
         }
         $game->players = $game->players->each(function ($player) {
             $player->kd = $player->kdr();
         })->sortByDesc('kd');
         $gameCount++;
         $timeCount += $game->getRawSeconds();
     }
     foreach ($combined as $key => $user) {
         $combined[$key]['avgLevel'] = round($user['level'] / $user['count'], 1);
         $combined[$key]['kdr'] = Game::kd($user['kills'], $user['deaths']);
         $combined[$key]['kadr'] = Game::kadr($user['kills'], $user['assists'], $user['deaths']);
     }
     $combined = new Collection($combined);
     $combined = $combined->sortByDesc('kdr');
     return ['players' => $combined, 'stats' => ['games' => $gameCount, 'combinedGameTime' => Text::timeDuration($timeCount), 'revives' => $revives]];
 }
Exemplo n.º 5
0
 /**
  * @param $gamertag
  * @return mixed
  */
 private function getAccount($gamertag)
 {
     $lowercase = Text::seoGamertag($gamertag);
     return Account::where('seo', $lowercase)->first();
 }
Exemplo n.º 6
0
 public function getMinutesPlayedLastSessionAttribute($value)
 {
     return Text::timeDuration($value * 60);
 }
Exemplo n.º 7
0
 public function getRaidTuesdayCountdown()
 {
     if (Carbon::now('America/Chicago')->isSameDay(new Carbon('Tuesday 4am CST', 'America/Chicago'))) {
         $raidtuesday = new Carbon('Tuesday 4am CST', 'America/Chicago');
     } else {
         $raidtuesday = new Carbon('next Tuesday 4 AM', 'America/Chicago');
     }
     if ($raidtuesday->lt(Carbon::now('America/Chicago'))) {
         return \Response::json(['error' => false, 'msg' => 'Today is Raid Tuesday! Get your raids in!']);
     } else {
         $countdown = $raidtuesday->diffInSeconds(Carbon::now('America/Chicago'));
         $countdown = Text::timeDuration($countdown);
         return \Response::json(['error' => false, 'msg' => $countdown]);
     }
 }
Exemplo n.º 8
0
 public function setGamertagAttribute($value)
 {
     $this->attributes['gamertag'] = $value;
     $this->attributes['seo'] = Text::seoGamertag($value);
 }
Exemplo n.º 9
0
 public function getTimeTookInSecondsAttribute($value)
 {
     return Text::timeDuration($value);
 }