createsDocument = $createsDocument; $this->createsFile = $createsFile; } /** * @param $transaction * @param $purchaseOrder * @param $supplier * @param $document_type * @return void * @throws \App\Classes\Exceptions\MalformedRequestException */ public function execute($transaction, $purchaseOrder, $supplier, $document_type, $voucherRedemption = null) { $lowercaseDocumentType = strtolower($document_type); $order_pdf = LaravelMpdf::loadView('pages.pdfs.' . $lowercaseDocumentType, ['transaction' => $transaction, 'po_order_transaction' => $purchaseOrder, 'supplier' => $supplier, 'voucher_redemption' => $voucherRedemption]); if($purchaseOrder->booking->service_id === 4) { $purchaseOrderDocuments = $purchaseOrder->booking->documents()->where('document_type', DocumentType::ECOMMERCE_PURCHASE_ORDER)->get(); $oMerger = PDFMerger::init(); $saveDirectory = storage_path('app/documents'); if (!file_exists($saveDirectory)) { mkdir($saveDirectory, 0755, true); } $order_pdf->save(storage_path('app/documents/temp.pdf')); $oMerger->addPDF(storage_path('app/documents/temp.pdf'), 'all'); $filesystemDriver = Storage::getDefaultDriver(); foreach ($purchaseOrderDocuments as $document){ $localFilePath = storage_path('app/documents/' . $document->files()->first()->file->file_info->original->file); $oMerger->addPDF($localFilePath, 'all'); if($filesystemDriver === 's3'){ $filePathForS3 = 'documents/'.$document->files()->first()->file->file_info->original->file; Storage::disk('s3')->put($filePathForS3, file_get_contents($localFilePath)); } } $oMerger->merge(); $order_pdf = $oMerger; } $document_object = new DocumentObject( $document_type, [chunk_split('data:application/pdf;base64,' . base64_encode($order_pdf->output()))], '', ApprovalStatus::COMPLETED, $lowercaseDocumentType . 's' ); /** @var Document $document */ $document = $this->createsDocument->execute($purchaseOrder->booking, $document_object); $this->createsFile->execute($document, $document_object); } }