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
|
public function paginateForIndex(array $tableQuery): LengthAwarePaginator
|
||||||
{
|
{
|
||||||
|
$search = $tableQuery['search'];
|
||||||
|
$searchId = $tableQuery['search_id'] ?? '';
|
||||||
|
|
||||||
$query = Purchase::query()
|
$query = Purchase::query()
|
||||||
->with([
|
->with([
|
||||||
'supplier:id,name',
|
'supplier:id,name',
|
||||||
'createdBy.profile',
|
'createdBy.profile',
|
||||||
'pendingOwnerVerificationRequest.submittedBy.profile',
|
'pendingOwnerVerificationRequest.submittedBy.profile',
|
||||||
'items.rawMaterialPrice.rawMaterial:id,name,unit',
|
|
||||||
'media',
|
'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 {
|
->when($searchId === '' && $search !== '', function (Builder $query) use ($search): void {
|
||||||
$search = $tableQuery['search'];
|
|
||||||
$query->where(function (Builder $query) use ($search): void {
|
$query->where(function (Builder $query) use ($search): void {
|
||||||
$query->where('notes', 'like', "%{$search}%")
|
$query->where('notes', 'like', "%{$search}%")
|
||||||
->orWhereHas('supplier', fn (Builder $query) => $query->where('name', 'like', "%{$search}%"))
|
->orWhereHas('supplier', fn (Builder $query) => $query->where('name', 'like', "%{$search}%"))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user