feat: enhance pagination query in PurchaseService to support search functionality
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (8.3) (push) Waiting to run
tests / ci (8.4) (push) Waiting to run
tests / ci (8.5) (push) Waiting to run

This commit is contained in:
Yoga Pangestu 2026-07-19 18:29:03 +07:00
parent 1db67a9a07
commit 70531b443d

View File

@ -35,19 +35,39 @@ public function __construct(
public function paginateForIndex(array $tableQuery): LengthAwarePaginator
{
$search = $tableQuery['search'];
$searchId = $tableQuery['search_id'] ?? '';
$query = Purchase::query()
->with([
'supplier:id,name',
'createdBy.profile',
'pendingOwnerVerificationRequest.submittedBy.profile',
'items.rawMaterialPrice.rawMaterial:id,name,unit',
'media',
])
->when(($tableQuery['search_id'] ?? '') !== '', function (Builder $query) use ($tableQuery): void {
$query->where('purchases.id', $tableQuery['search_id']);
]);
if ($searchId === '' && $search !== '') {
$query->with(['items' => function ($query) use ($search): void {
$query
->with('rawMaterialPrice.rawMaterial:id,name,unit')
->where(function ($query) use ($search): void {
$query->whereHas('rawMaterialPrice', function ($query) use ($search): void {
$query->where('variant', 'like', "%{$search}%")
->orWhereHas('rawMaterial', function ($query) use ($search): void {
$query->where('name', 'like', "%{$search}%");
});
});
});
}]);
} else {
$query->with('items.rawMaterialPrice.rawMaterial:id,name,unit');
}
$query
->when($searchId !== '', function (Builder $query) use ($searchId): void {
$query->where('purchases.id', $searchId);
})
->when(($tableQuery['search_id'] ?? '') === '' && $tableQuery['search'] !== '', function (Builder $query) use ($tableQuery): void {
$search = $tableQuery['search'];
->when($searchId === '' && $search !== '', function (Builder $query) use ($search): void {
$query->where(function (Builder $query) use ($search): void {
$query->where('notes', 'like', "%{$search}%")
->orWhereHas('supplier', fn (Builder $query) => $query->where('name', 'like', "%{$search}%"))