lastname . ' ' . $this->firstname; } public function getTitleAttribute() { if ($this->company != '') { return $this->company; } return $this->name; } public function getFullCityAttribute() { return $this->zip . ' ' . $this->city; } public function scopeOrderByName($query) { $query->orderBy('lastname')->orderBy('firstname'); } public function sellContracts() { return $this->hasMany(SellContract::class); } public function buyContracts() { return $this->hasMany(BuyContract::class); } public function boughtCars() { return $this->hasManyThrough(Car::class, SellContract::class); } public function soldCars() { return $this->hasManyThrough(Car::class, BuyContract::class); } public function scopeFilter($query, array $filters) { $query->when($filters['search'] ?? null, function ($query, $search) { $query->where(function ($query) use ($search) { $query->where('firstname', 'like', '%' . $search . '%') ->orWhere('lastname', 'like', '%' . $search . '%') ->orWhere('company', 'like', '%' . $search . '%') ->orWhere('email', 'like', '%' . $search . '%'); }); })->when($filters['trashed'] ?? null, function ($query, $trashed) { if ($trashed === 'with') { $query->withTrashed(); } elseif ($trashed === 'only') { $query->onlyTrashed(); } }); } }