115 lines
3.3 KiB
PHP
115 lines
3.3 KiB
PHP
<?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;
|
|
|
|
use Catalyst\APIBundle\Access\Generator as ACLGenerator;
|
|
|
|
class VehicleController extends APIController
|
|
{
|
|
protected $acl_gen;
|
|
|
|
public function __construct(ACLGenerator $acl_gen)
|
|
{
|
|
$this->acl_gen = $acl_gen;
|
|
}
|
|
|
|
public function getManufacturers(EntityManagerInterface $em)
|
|
{
|
|
$this->denyAccessUnlessGranted('vmanufacturer.list', null, 'No access.');
|
|
|
|
$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 getByManufacturer($mfg_id, EntityManagerInterface $em)
|
|
{
|
|
$this->denyAccessUnlessGranted('vehicle.list', null, 'No access.');
|
|
|
|
$mfg = $this->em->getRepository(VehicleManufacturer::class)->find($mfg_id);
|
|
|
|
// manufacturer not found
|
|
if ($mfg == null)
|
|
{
|
|
return new APIResponse(false, 'No vehicle manufacturer found with that Id.', null, 404);
|
|
}
|
|
|
|
// get all vehicles from manufacturer
|
|
$vehicles = $mfg->getVehicles();
|
|
foreach($vehicles as $vehicle)
|
|
{
|
|
$make_data[] = [
|
|
'id' => $vehicle->getID(),
|
|
'mfg_id' => $vehicle->getManufacturer()->getID(),
|
|
'make' => $vehicle->getMake(),
|
|
'model' => $vehicle->getModelYearFormatted(),
|
|
];
|
|
}
|
|
|
|
// TODO: need to add manufacturer details
|
|
|
|
return new APIResponse(true, 'Vehicles loaded.', $data);
|
|
}
|
|
|
|
public function list(EntityManagerInterface $em)
|
|
{
|
|
$this->denyAccessUnlessGranted('vehicle.list', null, 'No access.');
|
|
|
|
// get manufacturers
|
|
$mfgs = $em->getRepository(VehicleManufacturer::class)->findBy([], ['name' => 'ASC']);
|
|
|
|
// get vehicles
|
|
$vehicles = $em->getRepository(Vehicle::class)->findBy([], ['manufacturer' => 'ASC', 'make' => 'ASC']);
|
|
|
|
// process manufacturer results
|
|
$mfg_data = [];
|
|
foreach($mfgs as $mfg)
|
|
{
|
|
$mfg_data[] = [
|
|
'id' => $mfg->getID(),
|
|
'name' => $mfg->getName(),
|
|
];
|
|
}
|
|
|
|
// process vehicle results
|
|
$make_data = [];
|
|
foreach($vehicles as $vehicle)
|
|
{
|
|
$make_data[] = [
|
|
'id' => $vehicle->getID(),
|
|
'mfg_id' => $vehicle->getManufacturer()->getID(),
|
|
'make' => $vehicle->getMake(),
|
|
'model' => $vehicle->getModelYearFormatted(),
|
|
];
|
|
}
|
|
|
|
$data = [
|
|
'manufacturers' => $mfg_data,
|
|
'vehicles' => $make_data,
|
|
];
|
|
|
|
return new APIResponse(true, 'Vehicles loaded.', $data);
|
|
}
|
|
}
|