144 lines
4.8 KiB
PHP
144 lines
4.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\File;
|
|
use App\Models\ShoppingOrder;
|
|
use App\Models\UserCredit;
|
|
use App\Services\Credit;
|
|
use App\Services\Invoice;
|
|
use App\Services\PDFMerger;
|
|
use Auth;
|
|
use Response;
|
|
use Storage;
|
|
|
|
class FileController extends Controller
|
|
{
|
|
/**
|
|
* Create a new controller instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct() {}
|
|
|
|
private function isPermission($user_id)
|
|
{
|
|
|
|
if (Auth::user()->isAdmin() || $user_id == Auth::user()->id) {
|
|
return true;
|
|
}
|
|
abort(404);
|
|
|
|
}
|
|
|
|
public function show($id = null, $disk = null, $do = 'file')
|
|
{
|
|
$path = '';
|
|
$filename = '';
|
|
|
|
if ($disk === 'user') {
|
|
$file = File::findOrFail($id);
|
|
$this->isPermission($file->user_id);
|
|
$path = Storage::disk($disk)->path($file->dir.$file->filename);
|
|
if (file_exists($path)) {
|
|
return Response::file($path);
|
|
}
|
|
}
|
|
|
|
if ($disk === 'invoice') {
|
|
$shopping_order = ShoppingOrder::findOrFail($id);
|
|
$this->isPermission($shopping_order->auth_user_id);
|
|
$filename = Invoice::getFilename($shopping_order);
|
|
$path = Invoice::getDownloadPath($shopping_order);
|
|
}
|
|
|
|
if ($disk === 'delivery') {
|
|
$shopping_order = ShoppingOrder::findOrFail($id);
|
|
$this->isPermission($shopping_order->auth_user_id);
|
|
$filename = Invoice::getDeliveryFilename($shopping_order);
|
|
$path = Invoice::getDownloadPathDelivery($shopping_order);
|
|
}
|
|
|
|
if ($disk === 'cancellation') {
|
|
$shopping_order = ShoppingOrder::findOrFail($id);
|
|
$this->isPermission($shopping_order->auth_user_id);
|
|
$filename = Invoice::getCancellationFilename($shopping_order);
|
|
$path = Invoice::getCancellationDownloadPath($shopping_order);
|
|
}
|
|
|
|
if ($disk === 'invoice_delivery') {
|
|
$shopping_order = ShoppingOrder::findOrFail($id);
|
|
$this->isPermission($shopping_order->auth_user_id);
|
|
|
|
$ifilename = Invoice::getFilename($shopping_order);
|
|
$ipath = Invoice::getDownloadPath($shopping_order, true);
|
|
$dfilename = Invoice::getDeliveryFilename($shopping_order);
|
|
$dpath = Invoice::getDownloadPathDelivery($shopping_order, true);
|
|
|
|
$oMerger = new PDFMerger;
|
|
$oMerger->init();
|
|
|
|
$oMerger->addPDF($ipath);
|
|
$oMerger->addPDF($dpath);
|
|
$filename = str_replace('Rechnung-', 'Rechnung-Lieferschein-', $ifilename);
|
|
$oMerger->setFileName($filename);
|
|
$oMerger->merge();
|
|
$file = $oMerger->output();
|
|
|
|
return Response::make($file, 200)
|
|
->header('Content-Type', 'application/pdf')
|
|
->header('Content-disposition', 'attachment; filename="'.$filename.'"');
|
|
}
|
|
|
|
if ($disk === 'credit') {
|
|
$UserCredit = UserCredit::findOrFail($id);
|
|
$this->isPermission($UserCredit->auth_user_id);
|
|
$filename = Credit::getFilename($UserCredit);
|
|
$path = Credit::getDownloadPath($UserCredit);
|
|
}
|
|
|
|
if (! Storage::disk('public')->exists($path)) {
|
|
return Response::make('File no found.', 404);
|
|
}
|
|
|
|
$file = Storage::disk('public')->get($path);
|
|
$mime = Storage::disk('public')->mimeType($path);
|
|
|
|
if ($do === 'download') {
|
|
return Response::make($file, 200)
|
|
->header('Content-Type', $mime)
|
|
->header('Content-disposition', 'attachment; filename="'.$filename.'"');
|
|
/* $full_path = Invoice::getDownloadPath($shopping_order, true);
|
|
$he
|
|
if (file_exists($full_path)) {
|
|
return Response::download($full_path, $filename);
|
|
}*/
|
|
}
|
|
if ($do === 'stream') {
|
|
return Response::make($file, 200)
|
|
->header('Content-Type', $mime)
|
|
->header('Content-disposition', 'filename="'.$filename.'"');
|
|
}
|
|
|
|
if ($do === 'file') {
|
|
return Response::make($file, 200)
|
|
->header('Content-Type', $mime)
|
|
->header('Content-disposition', 'filename="'.$filename.'"');
|
|
}
|
|
if ($do === 'image') {
|
|
return Response::make($file, 200)
|
|
->header('Content-Type', $mime);
|
|
}
|
|
if ($do === 'pdf') {
|
|
$path = storage_path().'/app/public/'.$path;
|
|
$headers = [
|
|
'Content-Type:'.$mime,
|
|
// 'Content-Length: ' . $file->size
|
|
// 'Content-Disposition: ' . $stream . '; filename=' . $file->original_name
|
|
];
|
|
|
|
return Response::download($path, $filename, $headers);
|
|
}
|
|
|
|
}
|
|
}
|