public function getIndex()
 {
     $list = Recipes::with('item', 'item.name')->select('*', 'recipes.id AS recipe_id')->join('items AS i', 'i.id', '=', 'recipes.item_id')->join('translations AS t', 't.id', '=', 'i.name_' . Config::get('language'))->orderBy(\DB::raw('RAND()'))->paginate(10);
     $crafting_job_list = ClassJob::with('name', 'en_abbr')->whereIn('id', Config::get('site.job_ids.crafting'))->get();
     $job_list = ClassJob::get_name_abbr_list();
     $crafting_list_ids = array_keys(Session::get('list', []));
     return view('recipes.index', compact('list', 'crafting_job_list', 'job_list', 'crafting_list_ids'));
 }
 public function getIndex($advanced = false)
 {
     $crafting_job_ids = Config::get('site.job_ids.crafting');
     $error = false;
     $job_list = ClassJob::with('name', 'en_abbr', 'en_name')->whereIn('id', $crafting_job_ids)->get();
     $previous = Cookie::get('previous_crafting_load');
     return view('crafting.' . ($advanced ? 'advanced' : 'basic'), compact('error', 'job_list', 'crafting_job_ids', 'previous'));
 }
 public function getIndex()
 {
     $job_ids = Config::get('site.job_ids');
     $crafting_job_list = ClassJob::with('name', 'en_abbr', 'en_name')->whereIn('id', $job_ids['crafting'])->get();
     $gathering_job_list = ClassJob::with('name', 'en_abbr', 'en_name')->whereIn('id', $job_ids['gathering'])->get();
     $basic_melee_job_list = ClassJob::with('name', 'en_abbr', 'en_name')->whereIn('id', $job_ids['basic_melee'])->get();
     $basic_magic_job_list = ClassJob::with('name', 'en_abbr', 'en_name')->whereIn('id', $job_ids['basic_magic'])->get();
     $previous = Cookie::get('previous_equipment_load');
     $error = false;
     return view('equipment.index', compact('error', 'crafting_job_list', 'gathering_job_list', 'basic_melee_job_list', 'basic_magic_job_list', 'job_ids', 'previous'));
 }
 public function getIndex()
 {
     $account = Session::get('account');
     if (empty($account)) {
         return redirect('/account/login');
     }
     $job_ids = Config::get('site.job_ids');
     $crafting_job_list = ClassJob::with('name', 'en_abbr', 'en_name')->whereIn('id', $job_ids['crafting'])->get();
     $gathering_job_list = ClassJob::with('name', 'en_abbr', 'en_name')->whereIn('id', $job_ids['gathering'])->get();
     $melee_job_list = ClassJob::with('name', 'en_abbr', 'en_name')->whereIn('id', $job_ids['basic_melee'])->get();
     $magic_job_list = ClassJob::with('name', 'en_abbr', 'en_name')->whereIn('id', $job_ids['basic_magic'])->get();
     return view('account.index', compact('crafting_job_list', 'gathering_job_list', 'melee_job_list', 'magic_job_list'));
 }
Example #5
0
 /**
  * Gear Profile, An overview of all gear based on the parameters
  * @param  string/integer  $job    A string or integer is accepted
  * @param  integer $starting_level [description]
  * @param  integer $level_range   [description]
  * @param  array  $options         [description]
  * @return array  $equipment_list  an array of equipment slots
  */
 public static function profile($job = '', $starting_level = 1, $level_range = 1, $options = [])
 {
     // Get the job, depending on string or id
     $job = is_numeric($job) ? ClassJob::with('en_abbr')->find($job_id) : ClassJob::get_by_abbr($job);
     $job_abbr = $job->en_abbr->term;
     // Slot data
     $slots = Config::get('site.defined_slots');
     // Stat data
     $stat_ids_to_focus = Stat::get_ids(Stat::gear_focus($job_abbr));
     // Get all items
     $items = self::items($job->id, $starting_level - 10, $starting_level + $level_range, array_keys($slots), $stat_ids_to_focus, $options);
     // Sort those items into the appropriate buckets
     $equipment_list = self::organize($items, $job_abbr, $starting_level, $stat_ids_to_focus, $options);
     return $equipment_list;
 }
Example #6
0
 public function getIndex()
 {
     // All Quests
     $quest_records = QuestItem::with('classjob', 'classjob.en_abbr', 'item', 'item.name', 'item.recipe')->orderBy('classjob_id')->orderBy('level')->orderBy('item_id')->get();
     $quests = array();
     foreach ($quest_records as $quest) {
         if (!isset($quests[$quest->classjob->en_abbr->term])) {
             $quests[$quest->classjob->en_abbr->term] = array();
         }
         if (empty($quest->item->recipe)) {
             var_dump($quest);
             exit;
         }
         foreach ($quest->item->recipe as $r) {
             if ($r->classjob_id == $quest->classjob_id) {
                 $quest->recipe = $r;
             }
         }
         $quests[$quest->classjob->en_abbr->term][] = $quest;
     }
     $job_ids = array_merge(Config::get('site.job_ids.crafting'), Config::get('site.job_ids.gathering'));
     $job_list = ClassJob::with('name', 'en_abbr')->whereIn('id', $job_ids)->get();
     return view('pages.quests', compact('quests', 'job_ids', 'job_list'));
 }
Example #7
0
 public function getGathering($my_class = '', $supported_classes = '', $min_level = 0, $max_level = 0)
 {
     $supported_classes = explode(',', $supported_classes);
     $show_quests = in_array($my_class, $supported_classes);
     if (empty($supported_classes)) {
         exit('No supported class selected... Todo: real error');
     }
     // TODO
     $all_classes = ClassJob::get_id_abbr_list();
     foreach ($supported_classes as $k => $v) {
         if (in_array($v, array_keys($all_classes))) {
             $supported_classes[$k] = $all_classes[$v];
         } else {
             unset($supported_classes[$k]);
         }
     }
     if (empty($supported_classes)) {
         exit('No supported class recognized...');
     }
     // TODO
     $jobs = ClassJob::with('name')->whereIn('id', $supported_classes)->get();
     foreach ($jobs as $k => $v) {
         $jobs[$k] = $v->name->term;
     }
     if ($my_class != 'BTL') {
         $job = ClassJob::get_by_abbr($my_class);
     } else {
         $job = $my_class;
     }
     if (empty($job)) {
         exit('No primary class recognized...');
     }
     // TODO
     $top_query = $inner_query = $join = $where = $union = $having = '';
     $parameters = [];
     \DB::statement('SET SESSION group_concat_max_len=16384');
     if (in_array($my_class, array('MIN', 'BTN'))) {
         // Add Nodes
         $top_query .= "\n\t\t\t\t\t(\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\tCOUNT(*)\n\t\t\t\t\t\tFROM `cluster_items` AS `ci`\n\t\t\t\t\t\tJOIN `clusters` AS `c` ON `c`.`id` = `ci`.`cluster_id`\n\t\t\t\t\t\tWHERE `c`.`classjob_id` = ? AND `ci`.`item_id` = `x`.`item_id`\n\t\t\t\t\t) AS nodes,\n\t\t\t";
         $parameters[] = $job->id;
         $having = "HAVING nodes > 0";
     } else {
         // Battling or Fishing
         $join = "LEFT JOIN `cluster_items` AS `ci` ON `ci`.`item_id` = `i`.`id` " . 'LEFT JOIN `item_ui_category` AS `iuc` ON `iuc`.`id` = `i`.`itemuicategory_id` ' . 'LEFT JOIN `translations` AS `iuct` ON `iuct`.`id` = `iuc`.`name_en`';
         // FSH where the item is "seafood"
         // BTL where the item is not "seafood"
         $where = "AND `iuct`.`term` " . ($my_class == 'BTL' ? '!' : '') . "= 'Seafood'";
         $where .= " AND `ci`.`id` IS NULL";
     }
     $parameters[] = $min_level;
     $parameters[] = $max_level;
     $parameters = array_merge($parameters, $supported_classes);
     if ($my_class != 'BTL') {
         $union = "\n\t\t\t\t\tUNION\n\n\t\t\t\t\tSELECT\n\t\t\t\t\t\t`i`.`id`, t.term AS name, `i`.level, `i`.`min_price`, qi.amount AS amount, \n\t\t\t\t\t\tqi.level AS quest_level, qi.quality AS quest_quality\n\t\t\t\t\tFROM quest_items AS qi\n\t\t\t\t\tJOIN items AS i ON i.id = qi.item_id\n\t\t\t\t\tJOIN classjob AS j ON j.id = qi.classjob_id\n\t\t\t\t\tJOIN translations AS t ON t.id = i.name_" . Config::get('language') . "\n\t\t\t\t\tWHERE j.id = ?\n\t\t\t\t\t\tAND qi.level BETWEEN ? AND ?\n\t\t\t";
         $parameters[] = $job->id;
         $parameters[] = $min_level;
         $parameters[] = $max_level;
     }
     // TODO Caching
     $items = \DB::select("\n\t\t\tSELECT x.*,\n\t\t\t\t" . $top_query . "\n\t\t\t\t(\n\t\t\t\t\tSELECT COUNT(*)\n\t\t\t\t\tFROM `items_npcs_shops` AS `ins`\n\t\t\t\t\tWHERE `ins`.`item_id` = `x`.`item_id`\n\t\t\t\t) AS vendors, \n\t\t\t\t(\n\t\t\t\t\tSELECT COUNT(*)\n\t\t\t\t\tFROM `npcs_items` AS `ni`\n\t\t\t\t\tWHERE `ni`.`item_id` = `x`.`item_id`\n\t\t\t\t) AS beasts\n\t\t\tFROM (\n\t\t\t\tSELECT \n\t\t\t\t\t`i`.`id` AS `item_id`, t.term AS name, `i`.level, `i`.`min_price`, SUM(cj.amount) AS amount,\n\t\t\t\t\tNULL AS quest_level, NULL AS quest_quality\n\t\t\t\tFROM `careers` AS `c`\n\t\t\t\tJOIN `items` AS `i` ON `i`.`id` = `c`.`identifier`\n\t\t\t\tJOIN `career_classjob` AS `cj` ON `cj`.`career_id` = `c`.`id`\n\t\t\t\tJOIN translations AS t ON t.id = i.name_" . Config::get('language') . "\n\t\t\t\t" . $join . "\n\t\t\t\tWHERE\n\t\t\t\t\t`c`.`type` = 'item'\n\t\t\t\t\tAND `c`.`level` BETWEEN ? AND ?\n\t\t\t\t\tAND `cj`.`classjob_id` in (" . str_pad('', count($supported_classes) * 2 - 1, '?,') . ")\n\t\t\t\t\t" . $where . "\n\t\t\t\tGROUP BY `c`.`identifier`\n\n\t\t\t\t" . $union . "\n\t\t\t\t\n\t\t\t\tORDER BY `item_id` ASC\n\t\t\t) AS x\n\t\t\t" . $having, $parameters);
     if ($my_class != 'BTL') {
         $quest_items = [];
         // Rip out Quest Entries
         foreach ($items as $k => $result) {
             if ($result->quest_level != NULL) {
                 $quest_items[] = $result;
                 unset($items[$k]);
             }
         }
         // Put them back in, either merge or insert
         if ($show_quests) {
             foreach ($quest_items as $quest_item) {
                 foreach ($items as $k => $result) {
                     if ($quest_item->item_id == $result->item_id) {
                         // Merge
                         $original_amount = $result->amount;
                         $quest_amount = $quest_item->amount;
                         $items[$k] = $quest_item;
                         $items[$k]->amount = $original_amount;
                         $items[$k]->quest_amount = $quest_amount;
                         continue 2;
                     }
                 }
                 // If a match was found it would have continued
                 // This means at this point we add it in straight up
                 $quest_item->quest_amount = $quest_item->amount;
                 $items[] = $quest_item;
             }
         }
         // Fishing doesn't have an ilvl...
         if ($my_class != 'FSH') {
             $sortable_items = [];
             foreach ($items as $row) {
                 $sortable_items[$row->level][] = $row;
             }
             ksort($sortable_items);
             $items = [];
             foreach ($sortable_items as $rows) {
                 foreach ($rows as $row) {
                     $items[] = $row;
                 }
             }
             unset($sortable_results);
         }
     }
     return view('career.items', compact('items', 'show_quests', 'jobs', 'job', 'min_level', 'max_level'));
 }
 /**
  * The advanced leve form.  Most of the hard work is in the ajax request.
  * @return View
  */
 public function getAdvanced()
 {
     $crafting_job_ids = Config::get('site.job_ids.crafting');
     $crafting_job_ids[] = Config::get('site.job_ids.fishing');
     $crafting_job_list = ClassJob::with('name', 'en_abbr')->whereIn('id', $crafting_job_ids)->get();
     return view('levequests.advanced', compact('crafting_job_list', 'crafting_job_ids'));
 }