diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index ba5418a0..356be3db 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -11,7 +11,9 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\JsonResponse; use App\Ramcar\APIResult; + use App\Entity\MobileSession; +use App\Entity\Customer; use DateTime; @@ -67,8 +69,14 @@ class APIController extends Controller // returns APIResult object $res = new APIResult(); - // inject api_key in params - $params[] = 'api_key'; + // check for api_key in query string + $api_key = $req->query->get('api_key'); + if (empty($api_key)) + { + $res->setError(true) + ->setErrorMessage('Missing API key'); + return $res; + } // check missing parameters $missing = $this->checkMissingParameters($req, $params); @@ -81,7 +89,7 @@ class APIController extends Controller } // check api key - $sess = $this->checkAPIKey($em, $req->request->get('api_key')); + $sess = $this->checkAPIKey($em, $req->query->get('api_key')); if ($sess == null) { $res->setError(true) @@ -230,7 +238,7 @@ class APIController extends Controller return $res->getReturnResponse(); } - public function getInfo() + public function getInfo(Request $req) { // check required parameters and api key $required_params = []; @@ -239,16 +247,78 @@ class APIController extends Controller if ($res->isError()) return $res->getReturnResponse(); + // if no customer found + $cust = $this->session->getCustomer(); + if ($cust == null) + { + $data = [ + 'first_name' => '', + 'last_name' => '', + ]; + $res->setData($data); + + return $res->getReturnResponse(); + } + + // send back customer details + $data = [ + 'first_name' => $cust->getFirstName(), + 'last_name' => $cust->getLastName(), + ]; + $res->setData($data); return $res->getReturnResponse(); } public function updateInfo(Request $req) { + // check required parameters and api key + $required_params = [ + 'first_name', + 'last_name', + ]; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + // create new customer if it's not there + $cust = $this->session->getCustomer(); + if ($cust == null) + { + $cust = new Customer(); + $em->persist($cust); + + $this->session->setCustomer($cust); + } + + $cust->setFirstName($req->request->get('first_name')) + ->setLastName($req->request->get('last_name')) + ->setConfirmed($this->session->isConfirmed()); + + $em->flush(); + + return $res->getReturnResponse(); } - public function getStatus() + public function getStatus(Request $req) { + // check required parameters and api key + $required_params = []; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + // set data + $data = []; + if ($this->session->isConfirmed()) + $data['status'] = 'confirmed'; + else + $data['status'] = 'unconfirmed'; + $res->setData($data); + + return $res->getReturnResponse(); } public function listVehicleManufacturers()