public function awardExperience(GameSession $session) { $ids = Input::get("ids"); $costumes = Input::get("costumes"); $nom1s = Input::get("nom1s"); $nom2s = Input::get("nom2s"); $overrides = Input::get("overrides"); $save = Input::get("save"); $missingCharacters = []; foreach ($ids as $index => $id) { $character = Character::find($id); if ($character) { $checkIn = GameSessionCheckIn::where(['session_id' => $session->id, 'character_id' => $character->id])->first(); $checkIn->costume = $costumes[$index] == "true" ? 1 : 0; $checkIn->nominated = $nom1s[$index] == "true" ? 1 : 0; $checkIn->nominated_twice = $nom2s[$index] == "true" ? 1 : 0; $checkIn->bonus = $overrides[$index]; $checkIn->total_experience = 1 + ($checkIn->costume ? 1 : 0) + ($checkIn->nominated ? 1 : 0) + ($checkIn->nominated_twice ? 1 : 0) + $checkIn->bonus; $checkIn->save(); if (!isset($save)) { $owner = $character->owner; $owner->sendMessage(null, "Experience awarded to " . $character->name, "The Storytellers have awarded your character " . $checkIn->total_experience . " Experience. You can now use the character editor to make changes to it at" . " your leisure. Remember, changes should be submitted by 6:00pm on the Wednesday" . " before a game to ensure that they have the chance to review them."); $character->awardExperience($checkIn->total_experience); $character->save(); } } else { $missingCharacters[] = $id; } } if (!isset($save)) { $session->submitted = true; $session->save(); foreach (User::listStorytellers() as $st) { $st->sendMessage(null, "Experience successfully awarded", "The action to award experience for the session on " . $session->date . " has completed." . (sizeof($missingCharacters) > 0 ? "\n\n" . sizeof($missingCharacters) . " characters were" . " not found (" . implode(",", $missingCharacters) . ")" : '')); } return Redirect::to("/dashboard"); } else { return Redirect::to("/dashboard/storyteller/session/experience/{$session->id}"); } }
public function gamesMissed() { $last_game = GameSessionCheckIn::where('character_id', $this->id)->join('sessions as session', 'session.id', '=', 'session_id')->orderBy('date', 'desc')->first(); if ($last_game) { return GameSession::where('date', '>', $last_game->date)->where('submitted', 1)->count(); } return -1; }