177 lines
No EOL
5.5 KiB
PHP
177 lines
No EOL
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(404);
|
|
}
|
|
|
|
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");
|
|
|
|
}
|
|
} |