diff --git a/app/Http/Controllers/ShippingController.php b/app/Http/Controllers/ShippingController.php index 287c54e..dd8a4a4 100644 --- a/app/Http/Controllers/ShippingController.php +++ b/app/Http/Controllers/ShippingController.php @@ -23,6 +23,7 @@ class ShippingController extends Controller */ public function createShipment(Request $request, Order $order) { + Log::info('Initiating shipment creation', ['order_uuid' => $order->uuid]); // Guard 1: Verify packing completed with valid dimensions if (! $this->validatePackingGate($order)) { return response()->json([ @@ -60,7 +61,7 @@ class ShippingController extends Controller // Guard 4: Idempotency - if already shipped, return existing shipment if ($order->courier_waybill_id) { - Log::info('Shipment already exists, returning existing', ['order_id' => $order->id]); + Log::info('Shipment already exists, returning existing', ['order_uuid' => $order->uuid]); return response()->json([ 'success' => true, @@ -90,7 +91,7 @@ class ShippingController extends Controller ]); Log::info('Shipment created with courier', [ - 'order_id' => $order->id, + 'order_uuid' => $order->uuid, 'waybill_id' => $shipmentData['waybill_id'], 'tracking_number' => $shipmentData['tracking_number'], ]); @@ -120,7 +121,7 @@ class ShippingController extends Controller ]); } catch (\Exception $e) { Log::error('Failed to create shipment', [ - 'order_id' => $order->id, + 'order_uuid' => $order->uuid, 'error' => $e->getMessage(), ]); diff --git a/app/Listeners/CreateShipmentOnReadyToShip.php b/app/Listeners/CreateShipmentOnReadyToShip.php new file mode 100644 index 0000000..9a63036 --- /dev/null +++ b/app/Listeners/CreateShipmentOnReadyToShip.php @@ -0,0 +1,46 @@ + $event->order->uuid, + ]); + + try { + // Create a mock request object for the controller + $request = new \Illuminate\Http\Request(); + + // Call the shipping controller to create shipment + $this->shippingController->createShipment($request, $event->order); + + Log::info('Shipment created successfully from webhook', [ + 'order_uuid' => $event->order->uuid, + ]); + } catch (\Exception $e) { + Log::error('Failed to create shipment from Ready to Ship intent', [ + 'order_uuid' => $event->order->uuid, + 'error' => $e->getMessage(), + ]); + } + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index db1d45a..027e148 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -13,8 +13,10 @@ use App\Events\ParcelInTransit; use App\Events\ProofApproved; use App\Events\ProofRevisionRequested; use App\Events\ProofUploaded; +use App\Events\ReadyToShipIntent; use App\Events\ShipmentCreated; use App\Events\ShipmentCreationFailed; +use App\Listeners\CreateShipmentOnReadyToShip; use App\Listeners\NotifySlackOnOrderCreated; use App\Listeners\NotifySlackOnOrderPacked; use App\Listeners\NotifySlackOnParcelCollected; @@ -42,8 +44,13 @@ class EventServiceProvider extends ServiceProvider // Packing events OrderPacked::class => [ NotifySlackOnOrderPacked::class, + ],Ready to Ship intent (from Trello webhook) + ReadyToShipIntent::class => [ + CreateShipmentOnReadyToShip::class, ], + // + // Shipment events ShipmentCreated::class => [ NotifySlackOnShipmentCreated::class,