mirror of
https://github.com/pacnpal/thrillwiki_laravel.git
synced 2025-12-20 06:11:09 -05:00
Refactor Park model, update routes for parks management, and enhance database migrations for park areas and locations
This commit is contained in:
@@ -6,7 +6,7 @@ use App\Models\Park;
|
||||
use App\Enums\ParkStatus;
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
use Illuminate\Contracts\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class ParkListComponent extends Component
|
||||
{
|
||||
@@ -17,6 +17,7 @@ class ParkListComponent extends Component
|
||||
public string $sort = 'name';
|
||||
public string $direction = 'asc';
|
||||
public ?string $operator = null;
|
||||
public string $viewMode = 'grid';
|
||||
|
||||
/** @var array<string, string> */
|
||||
public array $sortOptions = [
|
||||
@@ -33,6 +34,7 @@ class ParkListComponent extends Component
|
||||
'sort' => ['except' => 'name'],
|
||||
'direction' => ['except' => 'asc'],
|
||||
'operator' => ['except' => ''],
|
||||
'viewMode' => ['except' => 'grid'],
|
||||
];
|
||||
|
||||
public function mount(): void
|
||||
@@ -55,6 +57,11 @@ class ParkListComponent extends Component
|
||||
$this->resetPage('parks-page');
|
||||
}
|
||||
|
||||
public function updatedViewMode(): void
|
||||
{
|
||||
// No need to reset page when changing view mode
|
||||
}
|
||||
|
||||
public function sortBy(string $field): void
|
||||
{
|
||||
if ($this->sort === $field) {
|
||||
@@ -84,10 +91,12 @@ class ParkListComponent extends Component
|
||||
public function render()
|
||||
{
|
||||
$query = Park::query()
|
||||
->with(['operator'])
|
||||
->with(['operator', 'location'])
|
||||
->when($this->search, function (Builder $query) {
|
||||
$query->where('name', 'like', '%' . $this->search . '%')
|
||||
->orWhere('description', 'like', '%' . $this->search . '%');
|
||||
$query->where(function (Builder $q) {
|
||||
$q->where('name', 'like', '%' . $this->search . '%')
|
||||
->orWhere('description', 'like', '%' . $this->search . '%');
|
||||
});
|
||||
})
|
||||
->when($this->status, function (Builder $query) {
|
||||
$query->where('status', $this->status);
|
||||
@@ -119,6 +128,7 @@ class ParkListComponent extends Component
|
||||
'parks' => $query->paginate(12, pageName: 'parks-page'),
|
||||
'statusOptions' => $this->getStatusOptions(),
|
||||
'operatorOptions' => $this->getOperatorOptions(),
|
||||
'viewMode' => $this->viewMode,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\ParkStatus;
|
||||
use App\Traits\HasLocation;
|
||||
use App\Traits\HasSlugHistory;
|
||||
use App\Traits\HasParkStatistics;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
@@ -12,7 +13,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
class Park extends Model
|
||||
{
|
||||
use HasFactory, HasSlugHistory, HasParkStatistics;
|
||||
use HasFactory, HasSlugHistory, HasParkStatistics, HasLocation;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
|
||||
Reference in New Issue
Block a user