mivita/dev/app-bak/Http/Controllers/FileController.php
2025-10-20 17:42:08 +02:00

178 lines
5.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use Auth;
use Storage;
use Response;
use App\Models\UserCredit;
use App\Repositories\CreditRepository;
class FileController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct() {}
private function isPermissionShoppingOrder($shopping_order)
{
$user_id = $shopping_order->auth_user_id ? $shopping_order->auth_user_id : $shopping_order->member_id;
if (Auth::user()->isAdmin() || $user_id == Auth::user()->id) {
return true;
}
abort(404);
}
private function isPermissionUserCredit($user_credit)
{
if (Auth::user()->isAdmin() || $user_credit->user_id == Auth::user()->id) {
return true;
}
abort(404);
}
private function isPermissionAuth()
{
if (Auth::check()) {
return true;
}
abort(403, "Nicht autorisiert");
}
public function show($id = null, $from = null, $do = 'file')
{
$path = "";
$filename = "";
$disk = "public";
/*if($disk === 'user'){
$file = \App\Models\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 ($from === 'invoice') {
$shopping_order = \App\Models\ShoppingOrder::findOrFail($id);
if ($shopping_order->user_invoice) {
$this->isPermissionShoppingOrder($shopping_order);
$user_invoice = $shopping_order->user_invoice;
$filename = $user_invoice->filename;
$disk = $user_invoice->disk;
$path = $user_invoice->getDownloadPath();
}
}
if ($from === 'delivery') {
$shopping_order = \App\Models\ShoppingOrder::findOrFail($id);
if ($shopping_order->user_invoice) {
$this->isPermissionShoppingOrder($shopping_order);
$user_invoice = $shopping_order->user_invoice;
$filename = $user_invoice->delivery_filename;
$disk = $user_invoice->disk;
$path = $user_invoice->getDownloadPathDelivery();
}
}
if ($from === 'credit') {
$user_credit = \App\Models\UserCredit::findOrFail($id);
$this->isPermissionUserCredit($user_credit);
$filename = $user_credit->filename;
$disk = $user_credit->disk;
$path = $user_credit->getDownloadPath();
}
if ($from === 'credit_detail') {
$user_credit = \App\Models\UserCredit::findOrFail($id);
$this->isPermissionUserCredit($user_credit);
return $this->create_credit_detail($user_credit, $do);
/*
$filename = $user_credit->filename;
$disk = $user_credit->disk;
$path = $user_credit->getDownloadPath();
*/
}
if ($from === 'dc_file') {
// $this->isPermissionAuth();
$dc_file = \App\Models\DcFile::findOrFail($id);
$filename = $dc_file->filename;
$disk = 'public';
$path = $dc_file->getFile();
}
if ($from === 'dc_thumb') {
// $this->isPermissionAuth();
$dc_file = \App\Models\DcFile::findOrFail($id);
$filename = $dc_file->filename;
$disk = 'public';
$path = $dc_file->getThumb();
}
if ($from === 'dc_big') {
// $this->isPermissionAuth();
$dc_file = \App\Models\DcFile::findOrFail($id);
$filename = $dc_file->filename;
$disk = 'public';
$path = $dc_file->getBig();
}
if (!Storage::disk($disk)->exists($path)) {
return Response::make('Datei nicht gefunden.', 404);
}
if ($do === 'download') {
return Storage::disk($disk)->download($path, $filename);
}
$file = Storage::disk($disk)->get($path);
$mime = Storage::disk($disk)->mimeType($path);
if (isset($file)) {
if ($do === 'stream') {
return Storage::disk($disk)->response($path, $filename);
}
if ($do === 'file') {
return Response::make($file, 200)
->header("Content-Type", $mime)
->header("Content-Length", strlen($file))
->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 = array(
'Content-Type:' . $mime,
// 'Content-Length: ' . $file->size
// 'Content-Disposition: ' . $stream . '; filename=' . $file->original_name
);
return Response::download($path, $filename, $headers);
}
}
}
private function create_credit_detail(UserCredit $user_credit, $do)
{
$credit_repo = new CreditRepository($user_credit->user);
return $credit_repo->create_report($user_credit, $do);
//\Session()->flash('alert-success', "Gutschrift erstellt");
}
}