public function createInvoiceEntity(Request $request) { $json = $request->cookies->get('cart'); $cart = json_decode($json, true); $invoice = new Invoice(); if ($cart && is_array($cart)) { $quantity = 0; $amount = 0; foreach ($cart as $id => $qty) { $product = $this->em->getRepository('AppBundle\\Entity\\Product')->find($id); if ($product instanceof Product && $qty > 0) { $price = $product->getSale() ? $product->getPriceSpecial() : $product->getPrice(); $item = new InvoiceItem(); $item->setProduct($product)->setPrice($price)->setQty((int) $qty); $invoice->addItem($item); $quantity += $qty; $amount += $price * $qty; } } $invoice->setQuantity($quantity)->setAmount($amount); $user = $this->tokenStorage->getToken()->getUser(); if ($user != 'anon.') { /** @var User $user */ $invoice->setCustomer($user)->setCustomerName($user->getUsername() ? $user->getUsername() : null)->setDelivery($user->getAddress() ? $user->getAddress() : null)->setPhone($user->getPhoneNumber() ? $user->getPhoneNumber() : null)->setEmail($user->getEmail() ? $user->getEmail() : null); } } return $invoice; }
/** * Add item * * @param \AppBundle\Entity\InvoiceItem $item * * @return Invoice */ public function addItem(InvoiceItem $item) { $item->setInvoice($this); $this->items[] = $item; return $this; }