diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index d5fa3b3a..a9a23caf 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -25,6 +25,7 @@ use App\Ramcar\JOEventType; use App\Service\InvoiceCreator; use App\Service\RisingTideGateway; use App\Service\MQTTClient; +use App\Service\GeofenceTracker; use App\Entity\MobileSession; use App\Entity\Customer; @@ -766,7 +767,7 @@ class APIController extends Controller return $res->getReturnResponse(); } - public function requestJobOrder(Request $req, InvoiceCreator $ic) + public function requestJobOrder(Request $req, InvoiceCreator $ic, GeofenceTracker $geo) { // check required parameters and api key $required_params = [ @@ -793,6 +794,19 @@ class APIController extends Controller // instructions $instructions = $req->request->get('delivery_instructions', ''); + // longitude and latitude + $long = $req->request->get('long'); + $lat = $req->request->get('lat'); + + // geofence + $is_covered = $geo->isCovered($long, $lat); + if (!$is_covered) + { + $res->setError(true) + ->setErrorMessage('Location is not covered by our service.'); + return $res->getReturnResponse(); + } + $jo = new JobOrder(); $jo->setSource(TransactionOrigin::MOBILE_APP) @@ -836,9 +850,7 @@ class APIController extends Controller } $jo->setWarrantyClass($warr); - // longitude and latitude - $long = $req->request->get('long'); - $lat = $req->request->get('lat'); + // set coordinates $point = new Point($long, $lat); $jo->setCoordinates($point);