feat: Implement QR code generation and ops interface scaffold
Phase 1: QR Code Generation
- Create GenerateQrCodeOnOrderCreated listener
- Generate secure random token on order creation
- Create SVG QR codes pointing to /ops/orders/{token}
- Store QR token and generation timestamp on order record
- Register listener in EventServiceProvider
Phase 2: Ops Controller & Routes
- Create OpsController with showOrder() landing page
- Implement confirmPacking() to capture dimensions via form
- Add markInspectionPassed() and flagInspectionIssue() methods
- Implement getAvailableActions() state machine for UI
- Add routes: GET /ops/orders/{token}, POST /ops/orders/{id}/pack, etc.
- Token-gated access, requires auth middleware
Next: Create Blade templates for state-driven UI
This commit is contained in:
+10
-1
@@ -10,6 +10,7 @@ use App\Http\Controllers\CartController;
|
||||
use App\Http\Controllers\OrderController;
|
||||
use App\Http\Controllers\CustomOrderController;
|
||||
use App\Http\Controllers\Auth\GoogleAuthController;
|
||||
use App\Http\Controllers\OpsController;
|
||||
use App\Http\Controllers\PackingController;
|
||||
use App\Http\Controllers\ShippingController;
|
||||
|
||||
@@ -71,7 +72,15 @@ Route::middleware('auth')->group(function () {
|
||||
Route::post('/orders/{order:uuid}/pack', [PackingController::class, 'confirmPacked'])->name('orders.pack');
|
||||
Route::post('/custom-orders/{customOrder:uuid}/pack', [PackingController::class, 'confirmPacked'])->name('custom-orders.pack');
|
||||
Route::post('/orders/{order:uuid}/ship', [ShippingController::class, 'createShipment'])->name('orders.ship');
|
||||
Route::post('/custom-orders/{customOrder:uuid}/ship', [ShippingController::class, 'createShipment'])->name('custom-orders.ship');
|
||||
|
||||
// QR-based operations (ops interface)
|
||||
Route::post('/ops/orders/{order:uuid}/pack', [OpsController::class, 'confirmPacking'])->name('ops.order.pack');
|
||||
Route::post('/ops/orders/{order:uuid}/inspection-passed', [OpsController::class, 'markInspectionPassed'])->name('ops.order.inspection-passed');
|
||||
Route::post('/ops/orders/{order:uuid}/inspection-failed', [OpsController::class, 'flagInspectionIssue'])->name('ops.order.inspection-failed');
|
||||
});
|
||||
|
||||
// QR landing page (public but token-gated)
|
||||
Route::get('/ops/orders/{token}', [OpsController::class, 'showOrder'])->name('ops.order.show' Route::post('/custom-orders/{customOrder:uuid}/ship', [ShippingController::class, 'createShipment'])->name('custom-orders.ship');
|
||||
});
|
||||
|
||||
// use Illuminate\Support\Facades\Route;
|
||||
|
||||
Reference in New Issue
Block a user