diff --git a/app/Http/Controllers/Admin/Data/LootTableController.php b/app/Http/Controllers/Admin/Data/LootTableController.php index beef8e7075..d39a57894a 100644 --- a/app/Http/Controllers/Admin/Data/LootTableController.php +++ b/app/Http/Controllers/Admin/Data/LootTableController.php @@ -29,8 +29,40 @@ class LootTableController extends Controller { public function getIndex(Request $request) { $query = LootTable::query(); - if ($request->get('name')) { - $query->where('name', 'LIKE', '%'.$request->get('name').'%'); + $data = $request->only(['name', 'namespec', 'sort']); + if (isset($data['name'])) { + if (isset($data['namespec']) && $data['namespec'] == 'display-name') { + $query->where('display_name', 'LIKE', '%'.$request->get('name').'%'); + } elseif (isset($data['namespec']) && $data['namespec'] == 'both') { + $query->where('name', 'LIKE', '%'.$request->get('name').'%')->orWhere('display_name', 'LIKE', '%'.$request->get('name').'%'); + } else { + $query->where('name', 'LIKE', '%'.$request->get('name').'%'); + } + } + + if (isset($data['sort'])) { + switch ($data['sort']) { + case 'alpha': + $query->sortAlphabetical(); + break; + case 'alpha-reverse': + $query->sortAlphabetical(true); + break; + case 'alpha-dn': + $query->sortAlphabeticalDisplayName(); + break; + case 'alpha-dn-reverse': + $query->sortAlphabeticalDisplayName(true); + break; + case 'newest': + $query->sortNewest(); + break; + case 'oldest': + $query->sortNewest(true); + break; + } + } else { + $query->sortNewest(true); } return view('admin.loot_tables.loot_tables', [ diff --git a/app/Models/Loot/LootTable.php b/app/Models/Loot/LootTable.php index a249e5625d..f196750170 100644 --- a/app/Models/Loot/LootTable.php +++ b/app/Models/Loot/LootTable.php @@ -55,6 +55,48 @@ public function loot() { return $this->hasMany(Loot::class, 'loot_table_id'); } + /********************************************************************************************** + + SCOPES + + **********************************************************************************************/ + + /** + * Scope a query to sort sales in alphabetical order, by name. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @param bool $reverse + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeSortAlphabetical($query, $reverse = false) { + return $query->orderBy('name', $reverse ? 'DESC' : 'ASC'); + } + + /** + * Scope a query to sort sales in alphabetical order, by display name. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @param bool $reverse + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function sortAlphabeticalDisplayName($query, $reverse = false) { + return $query->orderBy('display_name', $reverse ? 'DESC' : 'ASC'); + } + + /** + * Scope a query to sort sales by newest first. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @param mixed $reverse + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeSortNewest($query, $reverse = false) { + return $query->orderBy('id', $reverse ? 'ASC' : 'DESC'); + } + /********************************************************************************************** ACCESSORS diff --git a/resources/views/admin/loot_tables/loot_tables.blade.php b/resources/views/admin/loot_tables/loot_tables.blade.php index 8fc817d330..68d397a7ed 100644 --- a/resources/views/admin/loot_tables/loot_tables.blade.php +++ b/resources/views/admin/loot_tables/loot_tables.blade.php @@ -14,14 +14,39 @@