public function postIndex() { // Parse the Job IDs $selected_classes = Input::get('classes'); foreach (ClassJob::get_id_abbr_list(true) as $abbr => $id) { if (in_array($abbr, $selected_classes)) { $job_ids[] = $id; } } if (empty($job_ids)) { $job_ids[] = 1; } // All Leves $query = Leve::with(array('classjob', 'item', 'item.name', 'item.recipe', 'item.vendors'))->where('item_id', '>', 0)->orderBy('classjob_id')->orderBy('level')->orderBy('xp')->orderBy('gil'); // Job IDs $query->whereIn('classjob_id', $job_ids); // Level Range $min = Input::get('min_level'); $max = Input::get('max_level'); // Invert if needed if ($min > $max) { list($max, $min) = array($min, $max); } $query->whereBetween('level', array($min, $max)); // Triple Only if (Input::get('triple_only') == 'true') { $query->where('triple', 1); } // Types $query->whereIn('type', Input::get('types')); // Text Searches if (Input::get('leve_name')) { $query->where('name', 'like', '%' . Input::get('leve_name') . '%'); } $leve_records = $query->remember(Config::get('site.cache_length'))->get(); $location_search = strtolower(Input::get('leve_location')); $item_search = strtolower(Input::get('leve_item')); $rewards = LeveReward::with('item')->whereBetween('level', array($min, $max))->whereIn('classjob_id', $job_ids)->get(); $leve_rewards = array(); foreach ($leve_records as $k => $row) { if ($item_search && !preg_match('/' . $item_search . '/', strtolower($row->item->name->term))) { unset($leve_records[$k]); continue; } // TODO this can be moved into the query itself now, most likely if ($location_search) { if (!preg_match('/' . $location_search . '/', strtolower($row->location)) && !preg_match('/' . $location_search . '/', strtolower($row->major_location)) && !preg_match('/' . $location_search . '/', strtolower($row->minor_location))) { unset($leve_records[$k]); continue; } } foreach ($rewards as $reward) { if ($reward->classjob_id == $row->classjob_id && $reward->level == $row->level) { $leve_rewards[$row->id][] = $reward; } } } return View::make('leve.rows')->with('leves', $leve_records)->with('leve_rewards', $leve_rewards); }
public function getIndex() { $job_ids = Config::get('site.job_ids.crafting'); $job_ids[] = Config::get('site.job_ids.fishing'); $type_to_icon = array('Field' => 'leaf', 'Courier' => 'envelope', 'Reverse Courier' => 'plane', 'Town' => 'home'); // All Leves $all_leves = Leve::with(array('classjob', 'classjob.en_abbr', 'item', 'item.name', 'item.recipe', 'item.vendors'))->where('item_id', '>', 0)->orderBy('classjob_id')->orderBy('level')->orderBy('triple', 'desc')->orderBy('xp', 'desc')->orderBy('gil', 'desc')->get(); $leves = array(); foreach ($all_leves as $leve) { $leves[$leve->classjob->en_abbr->term][$leve->level][] = $leve; } $rewards = LeveReward::with('item')->orderBy('classjob_id')->orderBy('level')->orderBy('item_id')->orderBy('amount')->get(); $leve_rewards = array(); foreach ($rewards as $reward) { if ($reward->item_id) { $leve_rewards[$reward->classjob_id][$reward->level][$reward->item_id]['item'] = $reward->item; $leve_rewards[$reward->classjob_id][$reward->level][$reward->item_id]['amounts'][] = $reward->amount; } } return View::make('levequests.index')->with('crafting_job_list', ClassJob::with('name', 'en_name', 'en_abbr')->whereIn('id', $job_ids)->get())->with('crafting_job_ids', $job_ids)->with('leves', $leves)->with('rewards', $leve_rewards)->with('type_to_icon', $type_to_icon)->with('opening_level', 1)->with('opening_class', 'CRP'); }