Files

38 lines
1.0 KiB
PHP

<?php
namespace App\Repositories\Employee;
use App\Models\User;
use App\Repositories\BaseRepository;
class EmployeeRepository extends BaseRepository implements EmployeeRepositoryInterface
{
public function getModel(): string
{
return User::class;
}
public function filter(array $data): mixed
{
$query = $this->model->with('roles');
if (!empty($data['search'])) {
$search = $data['search'];
$query->where(function ($q) use ($search) {
$q->where('firstname', 'like', "%{$search}%")
->orWhere('lastname', 'like', "%{$search}%")
->orWhere('username', 'like', "%{$search}%")
->orWhere('email', 'like', "%{$search}%");
});
}
if (!empty($data['role'])) {
$query->whereHas('roles', fn($q) => $q->where('name', $data['role']));
}
$perPage = $data['per_page'] ?? 15;
return $query->orderBy('id', 'desc')->paginate($perPage);
}
}