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 @@
Create New Loot Table
- {!! Form::open(['method' => 'GET', 'class' => '']) !!} -
-
- {!! Form::text('name', Request::get('name'), ['class' => 'form-control', 'placeholder' => 'Name']) !!} -
-
- {!! Form::submit('Search', ['class' => 'btn btn-primary']) !!} -
+ {!! Form::open(['method' => 'GET', 'class' => 'form-inline justify-content-end mb-3']) !!} +
+ {!! Form::text('name', Request::get('name'), ['class' => 'form-control', 'placeholder' => 'Name']) !!} +
+
+ {!! Form::select( + 'namespec', + [ + 'name' => 'Search for Name', + 'display-name' => 'Search for DisplayName', + 'both' => 'Search for both', + ], + Request::get('namespec') ?: 'name', + ['class' => 'form-control'], + ) !!} +
+
+ {!! Form::select( + 'sort', + [ + 'newest' => 'Created Newest', + 'oldest' => 'Created Oldest', + 'alpha' => 'Sort Alphabetically (A-Z) on Name', + 'alpha-reverse' => 'Sort Alphabetically (Z-A) on Name', + 'alpha-dn' => 'Sort Alphabetically (A-Z) on DisplayName', + 'alpha-dn-reverse' => 'Sort Alphabetically (Z-A) on DisplayName', + ], + Request::get('sort') ?: 'oldest', + ['class' => 'form-control'], + ) !!} +
+
+ {!! Form::submit('Search', ['class' => 'btn btn-primary']) !!}
{!! Form::close() !!}