get('cf')); $order = new \Order(); if (!$order->createFromDB($orderId)) { throw new NotFoundHttpException('Neexistujici objednavka'); } $attachment->setOrder($order); $response = new Response(); $response->headers->set('Content-Type', $attachment->getMimeType()); $response->headers->set('Content-Disposition', 'inline; filename="'.$attachment->getFilename().'"'); try { $content = $attachment->getContent(); } catch (InvoiceException $e) { throw new NotFoundHttpException($e->getMessage()); } if (!$content) { throw new \UnexpectedValueException('PDF error: server returned false'); } $response->setContent($content); return $response; } /** * @TranslatedRoute(path="/#orderView#/{id_order}/pdf/", requirements={"id_order": "\d+"}, name="kupshop_orderingbundle_pdfinvoice") */ public function orderPDF(Request $request, DataGoApi $dataGoApi, int $id_order): Response { OrderView::checkOrderOwnership($id_order, $request->get('cf')); try { $order = \Order::get($id_order); } catch (\InvalidArgumentException $e) { throw new NotFoundHttpException('Order not found'); } // Pokud ma objednavka uctenku, tak udelam redirect na uctenku if ($order->getData('transactionPrintout')) { return new RedirectResponse( path('external_pompo_pompo_orderreceiptpdf', ['orderId' => $id_order, 'cf' => $request->get('cf')]) ); } $dataGoId = sqlQueryBuilder() ->select('id_datago') ->from('datago_orders') ->where(Operator::equals(['id_order' => $id_order])) ->execute()->fetchOne(); if (!$dataGoId) { return $this->invoicePDFNotFound($request, $id_order); } $filename = 'Faktura_'.$order->order_no.'.pdf'; if (!($invoice = $dataGoApi->getOrderInvoice($dataGoId))) { return $this->invoicePDFNotFound($request, $id_order); } $response = new Response($invoice); $response->headers->set('Content-Type', 'application/pdf'); $response->headers->set('Content-Disposition', 'inline; filename="'.$filename.'"'); return $response; } private function invoicePDFNotFound(Request $request, int $orderId): RedirectResponse { $dbcfg = \Settings::getDefault(); // soubor neexistuje na FTP - pravdepodobne ho uz smazali, takze zobrazime hlasku addUserMessage( sprintf('Fakturu se nepodařilo stáhnout. Pokud fakturu potřebujete, tak nás prosím kontaktujte na e-mailu %s', $dbcfg->shop_email) ); return new RedirectResponse( path('kupshop_content_orders_order', ['id' => $orderId, 'cf' => $request->query->get('cf')]) ); } /** * @TranslatedRoute(path="/#account#/#user_cards#/") */ public function userCards(Request $request, UserCardUtil $userCardUtil, UserCardsView $view): Response { if (!Contexts::get(UserContext::class)->isActive()) { return new RedirectResponse( path('kupshop_user_login_login') ); } if ($request->get('generateCard')) { $userId = (int) Contexts::get(UserContext::class)->getActiveId(); if (count($userCardUtil->getUserCards($userId)) < 4) { $userCardUtil->generateUserCard( (int) Contexts::get(UserContext::class)->getActiveId() ); $this->addSuccessMessage(translate('generatedNewCard', 'pompo')); } return new RedirectResponse( path('external_pompo_pompo_usercards') ); } return $view->getResponse(); } #[Route('/kod/{codes}/')] public function productListByCodes(string $codes): Response { return $this->forward('\KupShop\CatalogBundle\Controller\CatalogController::productListByCodes', [ 'codes' => $codes, ]); } /** * @Route("/_pompo/sellers/") */ public function sellers(Request $request): Response { $view = new class extends View { protected $template = 'sellers.ajax.tpl'; public ?string $type = null; public ?int $productId = null; public $assortParam; public function getBodyVariables() { $vars = parent::getBodyVariables(); $vars['assortParam'] = $this->assortParam; $vars['type'] = $this->type; $vars['productId'] = $this->productId; return $vars; } }; $view->assortParam = $request->get('assortParam'); $view->type = $request->get('type'); $view->productId = $request->get('productId') ? (int) $request->get('productId') : null; return $view->getResponse(); } /** * @Route("/_pompo/export/oss/") */ public function ossExport(Request $request, OSSExport $export): Response { if (!getAdminUser()) { return new RedirectResponse( '/'.trim(Config::get()['Path']['admin'], '/').'/index.php?error=4&url='.urlencode($request->getRequestUri()) ); } return new StreamedResponse(function () use ($export) { $export->export(); }); } #[Route('/_pompo/knizniweb/feed/{type}/')] public function knizniWebXML(KnizniWebUtil $util, string $type): Response { $dbcfg = \Settings::getDefault(); $config = $dbcfg->loadValue('knizniweb') ?: []; // vycistim drive stazene soubory, ktere uz nejsou fresh a vratim ty, ktere jsou jeste aktualni $cache = $util->cleanup(); $typeEnum = KnizniWebTypeEnum::from($type); $response = new StreamedResponse(function () use ($util, $cache, $type, $typeEnum, $config) { $token = $config['tokens'][$type] ?? null; if (!empty($token)) { // zkusim vzit file z cache if (!($file = $cache[$config['tokens'][$type]] ?? false)) { // pokud neni, tak ho zkusim stahnout if (!($file = $util->getFeedFile($typeEnum, $config['tokens'][$type], false))) { // pokud se nepodari stahnout, tak zkusim vygenerovat a stahnout $file = $util->getFeedFile($typeEnum, $config['tokens'][$type]); } else { // poradilo se mi stahnout feed, tak rovnou poslu zadost na novej, at mam v dalsim runu novej $util->requestNewFeed($typeEnum); } } } else { // pokud nemam token, tak zazadam o novy feed $file = $util->getFeedFile($typeEnum, ''); } if ($file) { increaseMemoryLimit(2048); readfile($file); return; } echo 'Feed is being generated... try again in a minute'; }); $response->headers->set('Content-type', 'text/xml; charset=utf-8'); return $response; } }