public function buildRulebook($owner = -1) { //Build rulebook or retrieve it from the cache. $out = Cache::remember('rulebook', 24 * 60, function () { $baseRulebook = []; $baseRulebook['sects'] = $this->expandSects(RulebookSect::get()); $baseRulebook['clans'] = $this->expandClans(RulebookClan::get()); $baseRulebook['rituals'] = $this->sortByGroups(RulebookRitual::whereNull('owner')->get(), "rituals"); $baseRulebook['backgrounds'] = $this->sortByGroups(RulebookBackground::orderBy('name')->get(), "backgrounds"); $baseRulebook['disciplines'] = $this->expandDisciplines(RulebookDiscipline::orderBy('name')->get()); $baseRulebook['natures'] = RulebookNature::get(); $baseRulebook['abilities'] = $this->sortByGroups(RulebookAbility::where('owner', null)->orderBy('name')->get(), "abilities"); $baseRulebook["paths"] = $this->expandPaths(RulebookPath::get()); $baseRulebook["derangements"] = RulebookDerangement::get(); $baseRulebook['merits'] = $this->sortByGroups(RulebookMerit::orderBy("cost")->get(), "merits"); $baseRulebook['flaws'] = $this->sortByGroups(RulebookFlaw::orderBy("cost")->get(), "flaws"); return $baseRulebook; }); if ($owner != -1) { $out['custom_abilities'] = RulebookAbility::where('owner', $owner)->get(); $out['elder_powers'] = RulebookElderPower::where('owner_id', $owner)->get(); $out['combo_disciplines'] = RulebookComboDiscipline::where('owner_id', $owner)->get(); $out['custom_rituals'] = RulebookRitual::where('owner', $owner)->get(); } return Response::json($out); }
function getDataSet($val) { $all_backgrounds = RulebookBackground::all()->lists('name'); $all_abilities = RulebookAbility::where('isCustom', false)->get()->lists('name'); $extractor = null; $labelSet = []; switch ($val) { case "Generation": $labelSet = ["8th", "9th", "10th", "11th", "12th", "13th", "14th", "15th"]; $extractor = function ($character) { if ($character->hasFlaw("Fourteenth Generation")) { return 15; } elseif ($character->hasFlaw("Fifteenth Generation")) { return 14; } else { return 13 - $character->getBackgroundDots("Generation"); } }; break; case "Courage": $labelSet = [1, 2, 3, 4, 5]; $extractor = function ($character) { return @$character->path()->first()->virtue4; }; break; case "Morality": $labelSet = [1, 2, 3, 4, 5]; $extractor = function ($character) { return @$character->path()->first()->virtue3; }; break; case "Self-Control/Instinct": $labelSet = [1, 2, 3, 4, 5]; $extractor = function ($character) { return @$character->path()->first()->virtue2; }; break; case "Conscience/Conviction": $labelSet = [1, 2, 3, 4, 5]; $extractor = function ($character) { return @$character->path()->first()->virtue1; }; break; case "Physical Traits": $labelSet = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]; $extractor = function ($character) { return $character->attributes()->first()->physicals; }; break; case "Mental Traits": $labelSet = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]; $extractor = function ($character) { return $character->attributes()->first()->mentals; }; break; case "Social Traits": $labelSet = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]; $extractor = function ($character) { return $character->attributes()->first()->socials; }; break; case "Current Experience": $labelSet = []; for ($i = 0; $i <= 100; $i++) { $labelSet[] = $i; } $extractor = function ($character) { return $character->cachedExperience(); }; break; case "Total Experience": $labelSet = []; for ($i = 0; $i <= 100; $i++) { $labelSet[] = $i; } $extractor = function ($character) { return $character->experience; }; break; case "Experience Spent": $labelSet = []; for ($i = 0; $i <= 100; $i++) { $labelSet[] = $i; } $extractor = function ($character) { return $character->getExperienceCost($character->activeVersion()); }; break; case "Total Influence": $labelSet = []; for ($i = 0; $i <= 14 * 5; $i++) { $labelSet[] = $i; } $extractor = function ($character) { $influences = ["Bureaucracy", "Church", "Finance", "Health", "High Society", "Industry", "Media", "Neighborhood", "Occult", "Police", "Politics", "Transportation", "Underworld", "University"]; $total = 0; foreach ($influences as $i) { $total += $character->getBackgroundDots($i); } return $total; }; break; default: if (in_array($val, $all_backgrounds)) { $labelSet = [0, 1, 2, 3, 4, 5]; $extractor = function ($character) use($val) { return $character->getBackgroundDots($val); }; } else { if (in_array($val, $all_abilities)) { $labelSet = [0, 1, 2, 3, 4, 5]; $extractor = function ($character) use($val) { return $character->getAbilityDots($val); }; } } break; } return ["labels" => $labelSet, "extractor" => $extractor]; /*$dataSet = []; foreach(Character::activeCharacters()->get() as $c) { $charData = call_user_func($extractor, $c); $dataSet[] = ["name" => $c->name, "value" => $charData]; } return ["labels" => $labelSet, "data" => $dataSet];*/ }