126 lines
3 KiB
PHP
126 lines
3 KiB
PHP
<?php
|
|
|
|
namespace App\Controller;
|
|
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
|
|
/**
|
|
* class SmsController.
|
|
*
|
|
* @author Simon Vieille <simon@deblan.fr>
|
|
*/
|
|
class SmsController extends Controller
|
|
{
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function registerRoutes()
|
|
{
|
|
$this->app
|
|
->post('/api/sms/create', [$this, 'create'])
|
|
->bind('api_sms_create');
|
|
|
|
$this->app
|
|
->delete('/api/sms/delete/{id}', [$this, 'delete'])
|
|
->bind('api_sms_delete')
|
|
->assert('id', '\d+')
|
|
->convert('id', function ($value) {
|
|
return (int) $value;
|
|
});
|
|
|
|
$this->app
|
|
->get('/api/sms/list', [$this, 'list'])
|
|
->bind('api_sms_list');
|
|
}
|
|
|
|
/**
|
|
* Create action.
|
|
*
|
|
* @param Request $request
|
|
*
|
|
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
|
|
*
|
|
* @return \Symfony\Component\HttpFoundation\JsonResponse
|
|
*/
|
|
public function create(Request $request)
|
|
{
|
|
$app = $this->app;
|
|
|
|
if (!$app['sms.validator']->validateRequest($request)) {
|
|
return $app->abort(422, 'Invalid request.');
|
|
}
|
|
|
|
$persisted = $app['sms.factory']->createByRequest($request);
|
|
|
|
if (!$persisted) {
|
|
return $app->abort(500, 'An error occured.');
|
|
} else {
|
|
return $app->json([
|
|
'status' => true,
|
|
'code' => 201,
|
|
'message' => 'Resource created.',
|
|
], 201);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Delete action.
|
|
*
|
|
* @param Request $request
|
|
* @param int $id
|
|
*
|
|
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
|
|
*
|
|
* @return \Symfony\Component\HttpFoundation\JsonResponse
|
|
*/
|
|
public function delete(Request $request, $id)
|
|
{
|
|
$app = $this->app;
|
|
|
|
$object = $app['sms.factory']->get($id);
|
|
|
|
if (!$object) {
|
|
return $app->json([
|
|
'status' => false,
|
|
'code' => 404,
|
|
'message' => 'Resource not found.',
|
|
], 404);
|
|
}
|
|
|
|
$app['sms.factory']->remove($object);
|
|
|
|
return $app->json([
|
|
'status' => true,
|
|
'code' => 204,
|
|
'message' => 'Resource removed.',
|
|
], 204);
|
|
}
|
|
|
|
/**
|
|
* List action.
|
|
*
|
|
* @param Request $request
|
|
*
|
|
* @return \Symfony\Component\HttpFoundation\JsonResponse
|
|
*/
|
|
public function list()
|
|
{
|
|
$app = $this->app;
|
|
|
|
$objects = $app['sms.factory']->getAll()->getData();
|
|
$data = [];
|
|
|
|
foreach ($objects as $object) {
|
|
$data[] = [
|
|
'id' => $object->getId(),
|
|
'sender' => $object->getSender(),
|
|
'message' => $object->getMessage(),
|
|
'received_at' => (int) $object->getTime(),
|
|
'notified_at' => $object->getCreatedAt()->getTimestamp(),
|
|
];
|
|
}
|
|
|
|
return $app->json($data);
|
|
}
|
|
}
|