Skip to content

Commit eec314d

Browse files
committed
Changed OrderAfterUpdated implementation.
1 parent 4c343e0 commit eec314d

7 files changed

+49
-17
lines changed

app/Events/OrderAfterUpdatedEvent.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class OrderAfterUpdatedEvent implements ShouldBroadcast
1818
*
1919
* @return void
2020
*/
21-
public function __construct( public Order $order, public $fields = [] )
21+
public function __construct( public Order $newOrder, public Order $prevOrder, public $fields = [] )
2222
{
2323
// ...
2424
}

app/Listeners/OrderAfterUpdatedEventListener.php

+19-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace App\Listeners;
44

5+
use App\Events\OrderAfterPaymentStatusChangedEvent;
56
use App\Events\OrderAfterUpdatedEvent;
67
use App\Jobs\ComputeDayReportJob;
78
use App\Jobs\IncreaseCashierStatsJob;
@@ -32,13 +33,25 @@ public function __construct()
3233
public function handle( OrderAfterUpdatedEvent $event )
3334
{
3435
Bus::chain( [
35-
new ProcessCashRegisterHistoryJob( $event->order ),
36-
new IncreaseCashierStatsJob( $event->order ),
37-
new ProcessCustomerOwedAndRewardsJob( $event->order ),
38-
new TrackOrderCouponsJob( $event->order ),
39-
new ResolveInstalmentJob( $event->order ),
40-
new ProcessAccountingRecordFromSale( $event->order ),
36+
new ProcessCashRegisterHistoryJob( $event->newOrder ),
37+
new IncreaseCashierStatsJob( $event->newOrder ),
38+
new ProcessCustomerOwedAndRewardsJob( $event->newOrder ),
39+
new TrackOrderCouponsJob( $event->newOrder ),
40+
new ResolveInstalmentJob( $event->newOrder ),
41+
new ProcessAccountingRecordFromSale( $event->newOrder ),
4142
new ComputeDayReportJob,
4243
] )->dispatch();
44+
45+
/**
46+
* if the order payment status has changed from the
47+
* previous order, we need to dispatch an event OrderAfterPaymentStatusChangedEvent
48+
*/
49+
if ( $event->newOrder->payment_status != $event->prevOrder->payment_status ) {
50+
event( new OrderAfterPaymentStatusChangedEvent(
51+
order: $event->newOrder,
52+
previous: $event->prevOrder->payment_status,
53+
new: $event->newOrder->payment_status
54+
) );
55+
}
4356
}
4457
}

app/Services/OrdersService.php

+24-5
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,20 @@ public function __construct(
8787
public function create( $fields, ?Order $order = null )
8888
{
8989
$isNew = ! $order instanceof Order;
90+
91+
/**
92+
* if the order is being edited, we need to
93+
* keep a reference to the previous order to be able to compare
94+
* the changes that has been made.
95+
*/
96+
if ( $order instanceof Order ) {
97+
$order->load( 'payments' );
98+
$order->load( 'products' );
99+
$order->load( 'coupons' );
100+
101+
$previousOrder = clone $order;
102+
}
103+
90104
$customer = $this->__customerIsDefined( $fields );
91105
$fields[ 'products' ] = $this->__buildOrderProducts( $fields['products'] );
92106

@@ -210,7 +224,11 @@ public function create( $fields, ?Order $order = null )
210224
*/
211225
$isNew ?
212226
event( new OrderAfterCreatedEvent( $order, $fields ) ) :
213-
event( new OrderAfterUpdatedEvent( $order, $fields ) );
227+
event( new OrderAfterUpdatedEvent(
228+
newOrder: $order,
229+
prevOrder: $previousOrder,
230+
fields: $fields
231+
) );
214232

215233
return [
216234
'status' => 'success',
@@ -2080,7 +2098,7 @@ public function addProducts( Order $order, $products )
20802098
*/
20812099
public function refreshOrder( Order $order )
20822100
{
2083-
$previousPaymentStatus = $order->payment_status;
2101+
$prevOrder = clone $order;
20842102

20852103
$products = $this->getOrderProducts( $order->id );
20862104

@@ -2152,9 +2170,10 @@ public function refreshOrder( Order $order )
21522170

21532171
$order->save();
21542172

2155-
if ( $previousPaymentStatus !== $order->payment_status ) {
2156-
OrderAfterPaymentStatusChangedEvent::dispatch( $order, $previousPaymentStatus, $order->payment_status );
2157-
}
2173+
event( new OrderAfterUpdatedEvent(
2174+
newOrder: $order,
2175+
prevOrder: $prevOrder
2176+
) );
21582177

21592178
return [
21602179
'status' => 'success',

public/build/assets/app-DJ5e57v3.js public/build/assets/app-BzEfgjsI.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)