Untitled
unknown
plain_text
2 years ago
5.3 kB
6
Indexable
public function generatePdf($ticketId, $dateExpires = '', $orderId = null, $code = 'invalid-code', $couponId = null, $message = '', $securityHash = null){ $model = Template::find()->where(['active' => 1])->one(); $isCoupon = false; $ticketTypeId = ProductType::find()->where(['handle' => 'ticket'])->one()->id; $couponTypeId = ProductType::find()->where(['handle' => 'coupon'])->one()->id; $productService = new Products(); $ticket = $productService->getProductById($ticketId,2); $coupon = null; // if ($ticket !== NULL && $ticket->typeId == $ticketTypeId || $ticket->typeId == $couponTypeId){ // throw new HttpException('The product with the given id does not exists, or it is not a coupon'); // } $ticketImageUrl = $ticket->ticketAsset->one()->getUrl(); if ($model === NULL){ throw new HttpException('There is no active template yet'); } $hasOrder = false; $item = null; if (isset($orderId)){ $order = Order::findOne($orderId); $lineItems = $order->lineItems; /** @var LineItem $lineItem */ foreach ($lineItems as $lineItem){ if(isset($lineItem->snapshot['productId']) && $ticketId == $lineItem->snapshot['productId']){ $hasOrder = true; $model->text = strlen($lineItem->note) > 0 ? $lineItem->note : (strlen($message) > 0 ? $message : ''); $item = $lineItem; } } }else{ $order = null; } $templateHandle = ''; if ($ticket->typeId == $ticketTypeId){ $templateHandle = 'ticket'; $coupon = Purchased::findOne($couponId); $isCoupon = false; if (isset($coupon)){ if ($coupon->securityHash !== $securityHash){ throw new ForbiddenHttpException('Odkaz, z ktorého sa pokúšate získať prístup k položke, je neplatný'); } $code = $coupon->ticket_code; } } if ($ticket->typeId == $couponTypeId){ $templateHandle = 'coupon'; $coupon = Coupon::findOne($couponId); $isCoupon = true; if (isset($coupon)){ if ($coupon->securityHash !== $securityHash){ throw new ForbiddenHttpException('Odkaz, z ktorého sa pokúšate získať prístup k položke, je neplatný'); } $code = $coupon->code; $dateExpires = $coupon->dateExpires; } } if(strlen($message) > 0) $model->text = $message; $width = $ticket->ticketAsset->one()->getWidth(); $height = $ticket->ticketAsset->one()->getHeight(); $pxmm = 25.4/48; $widthmm = $width*$pxmm; $heightmm = $height*$pxmm; $scaleFactor = $width / 500; // $body = Craft::$app->view->renderString('{% block content %} '.$model->body.' {% endblock %}',[ // 'ticket' => $ticket, // 'template' => $model, // 'code' => $code, // 'scaleFactor' => $scaleFactor, // ]); $response = $this->renderCustomTemplate("template/{$templateHandle}",[ 'ticket' => $ticket, 'template' => $model, 'code' => $code, 'scaleFactor' => $scaleFactor, 'coupon' => $coupon, ]); $body = $response->data; $html = $this->renderCustomTemplate('template/pdf',[ 'template' => $model, 'ticket' => $ticket, 'body' => $body, 'ticketImageUrl' => $ticketImageUrl, 'isCoupon' => $isCoupon, 'isGift' => false, 'hasCode' => true, 'hasOrder' => $hasOrder, 'order' => $order, 'lineItem' => $item, 'code' => $code, 'dateExpires' => $dateExpires, 'scaleFactor' => $scaleFactor, ]); $mpdf = new Mpdf([ 'fontDir' => [ Craft::getAlias('@webroot/fonts') ], 'fontdata' => [ 'montserrat' => [ 'R' => 'Montserrat-Regular.ttf', ] ], 'mode' => 'utf-8', 'format' => [$heightmm,$widthmm], 'orientation' => 'L', // 'setAutoTopMargin' => 'stretch', 'autoMarginPadding' => 0, 'bleedMargin' => 0, 'crossMarkMargin' => 0, 'cropMarkMargin' => 0, 'nonPrintMargin' => 0, 'margBuffer' => 0, 'collapseBlockMargins' => false, 'margin_left' => 0, 'margin_right' => 0, 'margin_top' => 0, 'margin_bottom' => 0, 'margin_header' => 0, 'margin_footer' => 0, ]); $mpdf->SetFont('Montserrat'); $mpdf->SetDisplayMode('fullpage'); $mpdf->WriteHTML($html->data); return $mpdf; }
Editor is loading...
Leave a Comment