feat(purchase): add filtering for multiple statuses in purchase index and order by status then date
This commit is contained in:
@@ -24,13 +24,22 @@ class PurchaseController extends Controller
|
||||
{
|
||||
public function index(Request $request, Tenant $tenant): JsonResponse
|
||||
{
|
||||
$statusParam = $request->query('status');
|
||||
$statuses = is_string($statusParam)
|
||||
? collect(explode(',', $statusParam))
|
||||
->map(fn (string $status): string => trim($status))
|
||||
->filter()
|
||||
->unique()
|
||||
->values()
|
||||
->all()
|
||||
: [];
|
||||
|
||||
return PurchaseResource::collection(
|
||||
Purchase::query()
|
||||
->where('tenant_codigo', $tenant->codigo)
|
||||
->where('user_id', $request->user()->id)
|
||||
->when($request->query('status'), function ($query, $status) {
|
||||
$query->where('status', $status);
|
||||
})
|
||||
->when($statuses !== [], fn ($query) => $query->whereIn('status', $statuses))
|
||||
->orderBy('status')
|
||||
->latest()
|
||||
->paginateFromRequest()
|
||||
)->response();
|
||||
|
||||
Reference in New Issue
Block a user