Add new API calls: info get, info update, status

This commit is contained in:
Kendrick Chan 2018-01-29 10:12:14 +08:00
parent fea805e385
commit b18d02f521

View file

@ -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()