*/ class LeadRepository extends BaseRepository implements LeadRepositoryInterface { public function __construct(Lead $model) { parent::__construct($model); } /** * @param array $filters * @return LengthAwarePaginator */ public function paginate(array $filters = [], int $perPage = 15): LengthAwarePaginator { $query = $this->model->newQuery(); if (! empty($filters['status'])) { $query->where('status', $filters['status']); } if (! empty($filters['source'])) { $query->where('source', $filters['source']); } if (isset($filters['is_read'])) { $query->where('is_read', filter_var($filters['is_read'], FILTER_VALIDATE_BOOLEAN)); } if (! empty($filters['search'])) { $query->where(function ($q) use ($filters) { $q->where('name', 'like', '%'.$filters['search'].'%') ->orWhere('phone', 'like', '%'.$filters['search'].'%'); }); } return $query->latest()->paginate($perPage); } }