-
app/Models/Contact.php
Open in GitHubuse Illuminate\Database\Eloquent\Model; class Contact extends Model { // public function scopeFilter($query, array $filters) { $query->when($filters['search'] ?? null, function ($query, $search) { $query->where(function ($query) use ($search) { $query->where('first_name', 'like', '%'.$search.'%') ->orWhere('last_name', 'like', '%'.$search.'%') ->orWhere('email', 'like', '%'.$search.'%') ->orWhereHas('organization', function ($query) use ($search) { $query->where('name', 'like', '%'.$search.'%'); }); }); })->when($filters['trashed'] ?? null, function ($query, $trashed) { if ($trashed === 'with') { $query->withTrashed(); } elseif ($trashed === 'only') { $query->onlyTrashed(); } }); } }
-
app/Http/Controllers/ContactsController.php
Open in GitHubuse Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Request; class ContactsController extends Controller { public function index() { return Inertia::render('Contacts/Index', [ 'filters' => Request::all('search', 'trashed'), 'contacts' => Auth::user()->account->contacts() ->with('organization') ->orderByName() ->filter(Request::only('search', 'trashed')) ->paginate(10) ->withQueryString() ->through(fn ($contact) => [ 'id' => $contact->id, 'name' => $contact->name, 'phone' => $contact->phone, 'city' => $contact->city, 'deleted_at' => $contact->deleted_at, 'organization' => $contact->organization ? $contact->organization->only('name') : null, ]), ]); } // }