fix: Return available actions from getAvailableActions() method

The match statement wasn't returning the actions array, causing no actions
to display on inspection orders. Changed to directly return the match result.
This commit is contained in:
twotalesanimation
2026-01-02 21:17:51 +02:00
parent 66862df44b
commit 341421d2a0
2 changed files with 146 additions and 9 deletions
+5 -9
View File
@@ -182,23 +182,19 @@ class OpsController extends Controller
*/
private function getAvailableActions(Order $order): array
{
$actions = [];
match ($order->status) {
return match ($order->status) {
'inspection' => [
$actions['markInspectionPassed'] = true,
$actions['flagInspectionIssue'] = true,
'markInspectionPassed' => true,
'flagInspectionIssue' => true,
],
'packing' => [
$actions['confirmPacking'] = true,
'confirmPacking' => true,
],
'ready_to_ship', 'awaiting_collection', 'in_transit' => [
$actions['readOnly'] = true,
'readOnly' => true,
],
default => []
};
return $actions;
}
/**
@@ -0,0 +1,141 @@
<?php $__env->startSection('content'); ?>
<div class="container mx-auto px-4 py-8">
<!-- Header -->
<div class="mb-8">
<h1 class="text-3xl font-bold mb-2">Order <?php echo e($order->order_number); ?></h1>
<p class="text-gray-600"><?php echo e($order->uuid); ?></p>
</div>
<!-- Order Summary Card -->
<div class="bg-white rounded-lg shadow-md p-6 mb-8">
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
<div>
<p class="text-sm text-gray-600">Status</p>
<p class="text-lg font-semibold capitalize"><?php echo e(str_replace('_', ' ', $order->status)); ?></p>
</div>
<div>
<p class="text-sm text-gray-600">Order Type</p>
<p class="text-lg font-semibold"><?php echo e($order->is_custom_order ? 'Custom' : 'Standard'); ?></p>
</div>
<div>
<p class="text-sm text-gray-600">Customer</p>
<p class="text-lg font-semibold"><?php echo e($order->user->name ?? 'N/A'); ?></p>
</div>
<div>
<p class="text-sm text-gray-600">Created</p>
<p class="text-lg font-semibold"><?php echo e($order->created_at->format('M d, Y')); ?></p>
</div>
</div>
<!-- QR Code -->
<div class="border-t pt-6">
<div class="flex items-start justify-between mb-3">
<div>
<p class="text-sm text-gray-600 mb-3">Scan to access this order:</p>
</div>
<a href="<?php echo e(route('ops.order.sticker.download', $order)); ?>" class="inline-flex items-center px-3 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 text-sm">
📥 Download Sticker (A6 PDF)
</a>
</div>
<div class="inline-block bg-gray-50 p-4 rounded border">
<?php echo file_get_contents(storage_path("app/public/qr-codes/{$order->uuid}.svg")); ?>
</div>
</div>
</div>
<!-- State-Specific Actions -->
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($order->status === 'inspection'): ?>
<?php echo $__env->make('ops.actions.inspection', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?>
<?php elseif($order->status === 'packing' || $order->status === 'printing'): ?>
<?php echo $__env->make('ops.actions.packing', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?>
<?php elseif(in_array($order->status, ['ready_to_ship', 'awaiting_collection', 'in_transit'])): ?>
<?php echo $__env->make('ops.actions.read-only', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?>
<?php else: ?>
<div class="bg-yellow-50 border border-yellow-200 rounded-lg p-4">
<p class="text-yellow-800">No actions available for this order status.</p>
</div>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
<!-- Order Items -->
<div class="mt-8 bg-white rounded-lg shadow-md p-6">
<h2 class="text-2xl font-bold mb-4">Order Items</h2>
<div class="overflow-x-auto">
<table class="w-full">
<thead>
<tr class="border-b">
<th class="text-left py-3 px-4">Product</th>
<th class="text-left py-3 px-4">Type</th>
<th class="text-left py-3 px-4">Quantity</th>
<th class="text-left py-3 px-4">Amount</th>
</tr>
</thead>
<tbody>
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__empty_1 = true; $__currentLoopData = $order->items; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
<tr class="border-b hover:bg-gray-50">
<td class="py-3 px-4"><?php echo e($item->product->name ?? 'N/A'); ?></td>
<td class="py-3 px-4"><?php echo e($item->product_type ?? 'N/A'); ?></td>
<td class="py-3 px-4"><?php echo e($item->quantity); ?></td>
<td class="py-3 px-4">R<?php echo e(number_format($item->unit_price * $item->quantity, 2)); ?></td>
</tr>
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
<tr>
<td colspan="4" class="py-3 px-4 text-center text-gray-500">No items</td>
</tr>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
</tbody>
</table>
</div>
</div>
<!-- Packing Details (if available) -->
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($order->packing_completed_at): ?>
<div class="mt-8 bg-white rounded-lg shadow-md p-6">
<h2 class="text-2xl font-bold mb-4">Packing Details</h2>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
<div>
<p class="text-sm text-gray-600">Width</p>
<p class="text-lg font-semibold"><?php echo e($order->packing_width); ?> cm</p>
</div>
<div>
<p class="text-sm text-gray-600">Length</p>
<p class="text-lg font-semibold"><?php echo e($order->packing_length); ?> cm</p>
</div>
<div>
<p class="text-sm text-gray-600">Weight</p>
<p class="text-lg font-semibold"><?php echo e($order->packing_weight); ?> kg</p>
</div>
<div>
<p class="text-sm text-gray-600">Packed At</p>
<p class="text-lg font-semibold"><?php echo e($order->packing_completed_at->format('M d, H:i')); ?></p>
</div>
</div>
</div>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
<!-- Shipment Details (if available) -->
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($order->courier_waybill_id): ?>
<div class="mt-8 bg-white rounded-lg shadow-md p-6">
<h2 class="text-2xl font-bold mb-4">Shipment Details</h2>
<div class="grid grid-cols-2 md:grid-cols-3 gap-4">
<div>
<p class="text-sm text-gray-600">Waybill ID</p>
<p class="text-lg font-semibold font-mono"><?php echo e($order->courier_waybill_id); ?></p>
</div>
<div>
<p class="text-sm text-gray-600">Tracking Number</p>
<p class="text-lg font-semibold font-mono"><?php echo e($order->courier_tracking_number ?? 'N/A'); ?></p>
</div>
<div>
<p class="text-sm text-gray-600">Status</p>
<p class="text-lg font-semibold capitalize"><?php echo e(str_replace('_', ' ', $order->courier_status ?? 'pending')); ?></p>
</div>
</div>
</div>
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
</div>
<?php $__env->stopSection(); ?>
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/resources/views/ops/order-detail.blade.php ENDPATH**/ ?>