Add vehicle and battery apis #164

This commit is contained in:
Kendrick Chan 2018-10-25 13:35:27 +08:00
parent 959d2c6efc
commit 9fcae0f05b
4 changed files with 120 additions and 27 deletions

View file

@ -39,6 +39,7 @@ class TestCommand extends Command
// test // test
$api->get('/capi/test'); $api->get('/capi/test');
// TODO: shift this out of the bundle, since it's project specific
// warranty register // warranty register
$params = [ $params = [
]; ];
@ -47,5 +48,12 @@ class TestCommand extends Command
// warranty find // warranty find
$api->get('/capi/warranty/LJ34LJADR12SDLKJL'); $api->get('/capi/warranty/LJ34LJADR12SDLKJL');
// battery
$api->get('/capi/battery_models');
$api->get('/capi/battery_sizes');
// vehicle
$api->get('/capi/vehicle_manufacturers');
$api->get('/capi/vehicles');
} }
} }

View file

@ -6,16 +6,29 @@ capi_test:
# battery api # battery api
# find battery # battery models
capi_battery_find: capi_battery_models:
path: /capi/battery/{id} path: /capi/battery_models
controller: App\Controller\CAPI\BatteryController::find controller: App\Controller\CAPI\BatteryController::getModels
methods: [GET] methods: [GET]
# search battery # battery sizes
capi_battery_search: capi_battery_sizes:
path: /capi/battery/search path: /capi/battery_sizes
controller: App\Controller\CAPI\BatteryController::search controller: App\Controller\CAPI\BatteryController::getSizes
methods: [GET]
# vehicle api
capi_vehicle_mfgs:
path: /capi/vehicle_manufacturers
controller: App\Controller\CAPI\VehicleController::getManufacturers
methods: [GET]
capi_vehicle_list:
path: /capi/vehicles
controller: App\Controller\CAPI\VehicleController::list
methods: [GET] methods: [GET]

View file

@ -4,35 +4,52 @@ namespace App\Controller\CAPI;
use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Doctrine\ORM\Query; use Doctrine\ORM\Query;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Catalyst\APIBundle\Controller\APIController; use Catalyst\APIBundle\Controller\APIController;
use Catalyst\APIBundle\Response\APIResponse;
use App\Entity\Battery; use App\Entity\BatteryModel;
use App\Entity\BatterySize;
class BatteryController extends Controller implements APIController class BatteryController extends Controller implements APIController
{ {
public function find($serial, EntityManagerInterface $em) public function getModels(EntityManagerInterface $em)
{ {
} $models = $em->getRepository(BatteryModel::class)->findBy([], ['name' => 'ASC']);
public function register() $result = [];
{ foreach ($models as $model)
} {
$result[] = [
'id' => $model->getID(),
'name' => $model->getName(),
];
}
public function claim($serial)
{
}
public function test()
{
$data = [ $data = [
'success' => true, 'models' => $result,
]; ];
return new JsonResponse($data);
return new APIResponse(true, 'Battery models loaded.', $data);
}
public function getSizes(EntityManagerInterface $em)
{
$sizes = $em->getRepository(BatterySize::class)->findBy([], ['name' => 'ASC']);
$result = [];
foreach ($sizes as $size)
{
$result[] = [
'id' => $size->getID(),
'name' => $size->getName(),
];
}
$data = [
'sizes' => $result,
];
return new APIResponse(true, 'Battery sizes loaded.', $data);
} }
} }

View file

@ -0,0 +1,55 @@
<?php
namespace App\Controller\CAPI;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\Query;
use Doctrine\ORM\EntityManagerInterface;
use Catalyst\APIBundle\Controller\APIController;
use Catalyst\APIBundle\Response\APIResponse;
use App\Entity\Vehicle;
use App\Entity\VehicleManufacturer;
class VehicleController extends Controller implements APIController
{
public function getManufacturers(EntityManagerInterface $em)
{
$mfgs = $em->getRepository(VehicleManufacturer::class)->findBy([], ['name' => 'ASC']);
$result = [];
foreach ($mfgs as $mfg)
{
$result[] = [
'id' => $mfg->getID(),
'name' => $mfg->getName(),
];
}
$data = [
'manufacturers' => $result,
];
return new APIResponse(true, 'Vehicle manufacturers loaded.', $data);
}
public function list(EntityManagerInterface $em)
{
$vehicles = $em->getRepository(Vehicle::class)->findBy([], ['manufacturer' => 'ASC', 'make' => 'ASC']);
$result = [];
foreach ($vehicles as $v)
{
$result[] = [
'id' => $v->getID(),
'name' => $v->getMake() . ' ' . $v->getModelYearFormatted(),
];
}
$data = [
'vehicles' => $result,
];
return new APIResponse(true, 'Vehicles loaded.', $data);
}
}