feat: enhance pagination query in PurchaseService to support search functionality
This commit is contained in:
parent
1db67a9a07
commit
70531b443d
@ -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}%"))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user