/** * @param ShoppingList $shoppingList */ protected function saveToStorage(ShoppingList $shoppingList) { /** @var ProductDataStorage $storage */ $storage = $this->get('orob2b_product.service.product_data_storage'); $data = [ProductDataStorage::ENTITY_DATA_KEY => ['accountUser' => $shoppingList->getAccountUser()->getId(), 'account' => $shoppingList->getAccount()->getId()]]; foreach ($shoppingList->getLineItems() as $lineItem) { $data[ProductDataStorage::ENTITY_ITEMS_DATA_KEY][] = [ProductDataStorage::PRODUCT_SKU_KEY => $lineItem->getProduct()->getSku(), ProductDataStorage::PRODUCT_QUANTITY_KEY => $lineItem->getQuantity(), 'comment' => $lineItem->getNotes(), 'productUnit' => $lineItem->getUnit()->getCode(), 'productUnitCode' => $lineItem->getUnit()->getCode()]; } $storage->set($data); }
/** * "Success" form handler * * @param ShoppingList $entity * @return bool */ protected function onSuccess(ShoppingList $entity) { $rfpRequest = new RFPRequest(); $rfpRequest->setFirstName($this->user->getFirstName())->setLastName($this->user->getLastName())->setEmail($this->user->getEmail())->setPhone('')->setRole('')->setBody('')->setCompany($this->user->getOrganization() ? $this->user->getOrganization()->getName() : '')->setAccountUser($this->user)->setAccount($this->user->getAccount())->setStatus($this->requestStatus); foreach ($entity->getLineItems() as $shoppingListLineItem) { $requestProduct = new RequestProduct(); $requestProduct->setProduct($shoppingListLineItem->getProduct()); $requestProductItem = new RequestProductItem(); $requestProductItem->setQuantity($shoppingListLineItem->getQuantity())->setProductUnit($shoppingListLineItem->getUnit()); $requestProduct->addRequestProductItem($requestProductItem); $rfpRequest->addRequestProduct($requestProduct); } try { $this->manager->persist($rfpRequest); $this->manager->flush(); $this->rfpRequest = $rfpRequest; } catch (DBALException $e) { $this->exception = $e; return false; } return true; }