|
|
|
@ -2,7 +2,8 @@
|
|
|
|
|
|
|
|
|
|
use ExceptionHandle\HttpNotFoundError;
|
|
|
|
|
use ExceptionHandle\PDOError;
|
|
|
|
|
use ExceptionHandle\TypeErrorMethod;
|
|
|
|
|
use ExceptionHandle\TypeErrorParameters;
|
|
|
|
|
use Gateway\GatewayForm;
|
|
|
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
|
|
|
use Slim\Factory\AppFactory;
|
|
|
|
@ -30,32 +31,67 @@ $errorMiddleware = $app->addErrorMiddleware(true, true, true);
|
|
|
|
|
* Add a route for the API
|
|
|
|
|
*/
|
|
|
|
|
$app->get('/', function (Request $request, Response $response) {
|
|
|
|
|
throw new HttpNotFoundError($request);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$app->get('/getForm', function(Request $request, Response $response){
|
|
|
|
|
try{
|
|
|
|
|
$response->getBody()->write(json_encode((new GatewayForm)->getForm(), JSON_UNESCAPED_UNICODE));
|
|
|
|
|
}catch (PDOException $e){
|
|
|
|
|
throw new PDOError($request,$e->getMessage(),$e);
|
|
|
|
|
}
|
|
|
|
|
return $response->withHeader('Content-type', 'application/json')->withStatus(200);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$app->put('/insertForm', function(Request $request, Response $response){
|
|
|
|
|
$parameters = $request->getQueryParams();
|
|
|
|
|
if (empty($parameters['method'])){
|
|
|
|
|
throw new TypeErrorMethod($request);
|
|
|
|
|
}else{
|
|
|
|
|
$method = $parameters['method'];
|
|
|
|
|
}
|
|
|
|
|
unset($parameters['method']);
|
|
|
|
|
$listGateway = array("\\Gateway\\GatewayForm", "\\Gateway\\GatewayKeyword", "\\Gateway\\GatewayQuestion");
|
|
|
|
|
$ok = false;
|
|
|
|
|
foreach ($listGateway as $gateway){
|
|
|
|
|
try {
|
|
|
|
|
if (method_exists($gateway, $method)) {
|
|
|
|
|
$ok = true;
|
|
|
|
|
$rep = ((new $gateway)->$method($parameters));
|
|
|
|
|
$response->getBody()->write(json_encode($rep, JSON_UNESCAPED_UNICODE));
|
|
|
|
|
if (empty($parameters['title']) || empty($parameters['description'])){
|
|
|
|
|
throw new TypeErrorParameters($request);
|
|
|
|
|
}
|
|
|
|
|
try{
|
|
|
|
|
(new GatewayForm)->insertForm($parameters['title'],$parameters['description']);
|
|
|
|
|
}catch (PDOException $e){
|
|
|
|
|
throw new PDOError($request,$e->getMessage(),$e);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$app->put('/deleteForm', function(Request $request, Response $response){
|
|
|
|
|
$parameters = $request->getQueryParams();
|
|
|
|
|
if (empty($parameters['id'])){
|
|
|
|
|
throw new TypeErrorParameters($request);
|
|
|
|
|
}
|
|
|
|
|
if (!$ok){
|
|
|
|
|
throw new HttpNotFoundError($request);
|
|
|
|
|
try{
|
|
|
|
|
(new GatewayForm)->deleteForm($parameters['id']);
|
|
|
|
|
}catch (PDOException $e){
|
|
|
|
|
throw new PDOError($request,$e->getMessage(),$e);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$app->get('/selectForDeleteAndInsert', function(Request $request, Response $response){
|
|
|
|
|
$parameters = $request->getQueryParams();
|
|
|
|
|
if (empty($parameters['id']) || empty($parameters['response'])){
|
|
|
|
|
throw new TypeErrorParameters($request);
|
|
|
|
|
}
|
|
|
|
|
try{
|
|
|
|
|
$response->getBody()->write(json_encode((new GatewayForm)->selectForDeleteAndInsert($parameters['id'],$parameters['response']), JSON_UNESCAPED_UNICODE));
|
|
|
|
|
}catch (PDOException $e){
|
|
|
|
|
throw new PDOError($request,$e->getMessage(),$e);
|
|
|
|
|
}
|
|
|
|
|
return $response->withHeader('Content-type', 'application/json')->withStatus(200);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$app->put('/assignKeywordToQuestion', function(Request $request, Response $response){
|
|
|
|
|
$parameters = $request->getQueryParams();
|
|
|
|
|
if (empty($parameters['keyword']) || empty($parameters['id']) || empty($parameters['response'])){
|
|
|
|
|
throw new TypeErrorParameters($request);
|
|
|
|
|
}
|
|
|
|
|
try{
|
|
|
|
|
(new GatewayForm)->assignKeywordToQuestion($parameters['keyword'],$parameters['id'],$parameters['response']);
|
|
|
|
|
}catch (PDOException $e){
|
|
|
|
|
throw new PDOError($request,$e->getMessage(),$e);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Run app
|
|
|
|
|
$app->run();
|
|
|
|
|