getRepository(PriceTier::class)->findAll(); // get all item types $item_types = $em->getRepository(ItemType::class)->findBy([], ['name' => 'asc']); // get all the items/batteries // load only batteries upon initial loading $items = $this->getBatteries($em); $params = [ 'sets' => [ 'price_tiers' => $price_tiers, 'item_types' => $item_types, ], 'items' => $items, ]; return $this->render('item-pricing/form.html.twig', $params); } /** * @Menu(selected="item_pricing") * @IsGranted("item_pricing.update") */ public function formSubmit(Request $req, EntityManagerInterface $em) { } /** * @IsGranted("item_pricing.update") */ public function itemPrices(EntityManagerInterface $em, $pt_id, $it_id) { $pt_prices = []; // get the item type $it = $em->getRepository(ItemType::class)->find($it_id); // check if default prices are needed if ($pt_id != 0) { // get the price tier $pt = $em->getRepository(PriceTier::class)->find($pt_id); // get the items under the price tier $pt_items = $pt->getItems(); foreach ($pt_items as $pt_item) { // make item price hash $pt_prices[$pt_item->->getID()] = $pt_item->getPrice(); } } else { // get the prices from battery or service offering, depending on item type if ($it->getCode() == 'battery') { // get batteries $items = $em->getRepository(Battery::class)->findBy(['flag_active' => true]); } else { // get service offerings $items = $em->getRepository(ServiceOffering::class)->findBy([], ['name' => 'asc']); } } $data_items = []; // response return new JsonResponse([ 'items' => $data_items, ]); } protected function getBatteries(EntityManagerInterface $em) { // get the item type for battery $batt_item_type = $em->getRepository(ItemType::class)->findOneBy(['code' => 'battery']); // get all active batteries $batts = $em->getRepository(Battery::class)->findBy(['flag_active' => true]); foreach ($batts as $batt) { $batt_set[$batt->getID()] = [ 'name' => $batt->getModel()->getName() . ' ' . $batt->getSize()->getName(), 'item_type_id' => $batt_item_type->getID(), 'item_type' => $batt_item_type->getName(), 'price' => $batt->getSellingPrice(), ]; } return [ 'items' => $batt_set, ]; } protected function getServiceOfferings(EntityeManagerInterface $em) { // get the item type for service offering $service_item_type = $em->getRepository(ItemType::class)->findOneBy(['code' => 'service_offering']); // get all service offerings $services = $em->getRepository(ServiceOffering::class)->findBy([], ['name' => 'asc']); $service_set = []; foreach ($services as $service) { $service_set[$service->getID()] = [ 'name' => $service->getName(), 'item_type_id' => $service_item_type->getID(), 'item_type' => $service_item_type->getName(), 'price' => $service->getFee(), ]; } return [ 'items' => $service_set, ]; } }