63 lines
No EOL
2 KiB
PHP
63 lines
No EOL
2 KiB
PHP
<?php
|
|
|
|
namespace App\Repositories;
|
|
|
|
use PDF;
|
|
use Storage;
|
|
use App\Models\ShoppingOrder;
|
|
use App\Services\Invoice;
|
|
use App\Services\MyPDFMerger;
|
|
|
|
class InvoiceRepository extends BaseRepository {
|
|
|
|
public function __construct(ShoppingOrder $model)
|
|
{
|
|
$this->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_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();
|
|
Invoice::makeNextInvoiceNumber();
|
|
return true;
|
|
//return $pdf->stream('invoice.pdf');
|
|
//return $this->output($path.$dir, $filename);
|
|
}
|
|
} |