model = $model; } public function create($request = []) { //need invoice $data $invoice_number = isset($request['invoice_number']) ? $request['invoice_number'] : Invoice::getInvoiceNumber(); $invoice_date = isset($request['invoice_date']) ? $request['invoice_date'] : $this->model->created_at->format("d.m.Y"); $invoice_send_mail = isset($request['invoice_send_mail']) ? true: false; $invoice_number = Invoice::createInvoiceNumber($invoice_number, $invoice_date); $data = [ 'shopping_order' => $this->model, 'invoice_date' => $invoice_date, 'invoice_number' => $invoice_number, ]; $pdf = PDF::loadView('pdf.invoice', $data); $pdf->setPaper('A4', 'portrait'); $dir = Invoice::getInvoiceStorageDir($invoice_date); if(!Storage::disk('public')->exists( $dir )){ Storage::disk('public')->makeDirectory($dir); //creates directory } $path = Storage::disk('public')->getAdapter()->getPathPrefix(); $filename = Invoice::makeInvoiceFilename($invoice_number); $pdf->save($path.$dir.$filename); $pdfMerger = new MyPDFMerger(); $pdfMerger->addPDF($path.$dir.$filename); $file = $pdfMerger->myMerge('string', $filename, 'template_invoice_de'); Storage::disk('public')->put($dir.$filename, $file); $data_file = [ 'filename' => $filename, 'dir' => $dir, 'disk' => 'public', 'invoice_number' => $invoice_number, 'invoice_date' => $invoice_date, ]; $this->model->invoice = $data_file; $this->model->save(); if($invoice_send_mail){ Invoice::sendInvoiceMail($this->model); } Invoice::makeNextInvoiceNumber(); return true; //return $pdf->stream('invoice.pdf'); //return $this->output($path.$dir, $filename); } }