getRepository(SAPBattery::class)->findBy([], ['id' => 'ASC']); $result = []; foreach ($batteries as $batt) { $result[] = [ 'id' => $batt->getID(), 'size' => $batt->getSize()->getID(), 'brand' => $batt->getBrand()->getID(), ]; } $data = [ 'batt' => $result, ]; return new APIResponse(true, 'Batteries loaded.', $data); } public function getBrands(EntityManagerInterface $em) { $brands = $em->getRepository(SAPBatteryBrand::class)->findBy([], ['name' => 'ASC']); $result = []; foreach ($brands as $brand) { $result[] = [ 'id' => $brand->getID(), 'name' => $brand->getName(), ]; } $data = [ 'brands' => $result, ]; return new APIResponse(true, 'Battery brands loaded.', $data); } public function getSizes(EntityManagerInterface $em) { $sizes = $em->getRepository(SAPBatterySize::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); } public function addBattery(Request $req, EntityManagerInterface $em) { // required parameters $params = [ 'sku', 'brand_id', 'size_id', ]; $msg = $this->checkRequiredParameters($req, $params); error_log('msg - ' . $msg); if ($msg) return new APIResponse(false, $msg); $sku = $req->request->get('sku'); $brand_id = $req->request->get('brand_id'); $size_id = $req->request->get('size_id'); // check if sku already exists $batt = $em->getRepository(SAPBattery::class)->find($sku); if ($batt != null) return new APIResponse(false, 'Battery SKU already exists.'); // check if brand exists $batt_brand = $em->getRepository(SAPBatteryBrand::class)->find($brand_id); if ($batt_brand == null) return new APIResponse(false, 'Invalid brand.'); // check if size exists $batt_size = $em->getRepository(SAPBatterySize::class)->find($size_id); if ($batt_size == null) return new APIResponse(false, 'Invalid size.'); $new_batt = new SAPBattery(); $new_batt->setID($sku) ->setBrand($batt_brand) ->setSize($batt_size); try { $em->persist($new_batt); $em->flush(); } catch (UniqueConstraintViolationException $e) { return new APIResponse(false, 'Battery SKU already exists.'); } // return the new battery data $data = [ 'battery' => $this->generateBatteryData($new_batt), ]; return new APIResponse(true, 'Battery added.', $data); } protected function generateBatteryData(SAPBattery $batt) { $data = [ 'sku' => $batt->getID(), 'brand' => $batt->getBrand()->getID(), 'size' => $batt->getSize()->getID(), ]; return $data; } }