Files
portal-api/app/Repositories/Employee/EmployeeRepository.php
2026-10-20 09:58:38 +07:00

41 lines
1.1 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('fullname', 'like', "%{$search}%")
->orWhere('username', 'like', "%{$search}%")
->orWhere('email', 'like', "%{$search}%");
});
}
if (!empty($data['role'])) {
$query->whereHas('roles', fn($q) => $q->whereIn('name', (array) $data['role']));
}
if (isset($data['status']) && $data['status'] !== []) {
$query->whereIn('status', (array) $data['status']);
}
$perPage = $data['per_page'] ?? 15;
return $query->orderBy('id', 'desc')->paginate($perPage);
}
}