add sms sending feat

This commit is contained in:
Nyan Lin Paing
2026-08-23 20:44:52 +07:00
parent 41c9454334
commit da9cd9bbe0
17 changed files with 492 additions and 9 deletions
@@ -4,6 +4,7 @@ namespace Modules\Booking\Actions;
use Modules\Booking\Data\AssignDriverData;
use Modules\Booking\Enums\BookingStatus;
use Modules\Booking\Events\DriverAssigned;
use Modules\Booking\Exceptions\DriverAssignmentNotAllowedException;
use Modules\Booking\Models\Booking;
@@ -21,6 +22,12 @@ class AssignDriverAction
throw DriverAssignmentNotAllowedException::notConfirmed($booking);
}
if ($booking->travel_date->lt(today())) {
throw DriverAssignmentNotAllowedException::travelDateInPast($booking);
}
$isFirstAssignment = $booking->driver_name === null;
$booking->update([
'driver_name' => $data->driverName,
'driver_phone' => $data->driverPhone,
@@ -28,6 +35,13 @@ class AssignDriverAction
'car_model' => $data->carModel,
]);
// Guards against a double-submit of the same form resulting in two
// identical SMS notifications to the passenger — a genuine
// reassignment always changes at least one of these columns.
if ($booking->wasChanged(['driver_name', 'driver_phone', 'car_plate_number', 'car_model'])) {
DriverAssigned::dispatch($booking, $isFirstAssignment);
}
return $booking;
}
}