Feuerwehr-eppingen/app/Http/Controllers/DocumentController.php

193 lines
4.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Helpers\QuickLoginHelper;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use App\Logic\Document\DocumentRepository;
use Illuminate\Support\Facades\File;
//use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request as Input;
use Illuminate\Support\Facades\Validator;
use App\Models\Document;
use Illuminate\Support\Facades\Response;
class DocumentController extends Controller
{
protected $document;
public function __construct(DocumentRepository $documentRepository)
{
$this->document = $documentRepository;
}
public function getUpload()
{
return view('pages.upload');
}
public function postUpload()
{
$form_data = Input::all();
$validator = Validator::make($form_data, Document::$rules, Document::$messages);
if($validator->fails())
{
return array(
'error' => true,
'message' => $validator->messages()->first(),
'code' => 400
);
}
$file = $form_data['file'];
$model = $form_data['model'];
$id = $form_data['model_id'];
$user_id = $form_data['user_id'];
$hash = false;
if(key_exists('hash', $form_data))
{
$hash = $form_data['hash'];
$quicklogin = QuickLoginHelper::checkForHash($hash);
if($quicklogin)
{
$model = $quicklogin->post_type;
$id = $quicklogin->post_id;
$user_id = $quicklogin->user_id;
}
else
{
$response = [
'error' => true,
'message' => 'Hash not existing or expired',
'code' => 500
];
return Response::json($response, $response['code']);
}
}
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$response = $this->document->upload($model, $id, $filename, $extension, $file, $user_id);
return Response::json($response, $response['code']);
}
public function deleteUpload()
{
$filename = Input::get('id');
if(!$filename)
{
return 0;
}
$docs = $this->document->delete( $filename );
$response = [
'status' => [
'error' => false,
'code' => 200,
'message' => 'document deleted',
'title' => ''
],
'content' => [
'json' => $docs,
],
];
return Response::json($response);
}
public function changePreviewFile(Request $request)
{
if(isset($request['model'])
&& isset($request['model_id'])
&& isset($request['filename']))
{
$model = $request['model'];
$id = $request['model_id'];
$filename = $request['filename'];
$docs = $this->document->changePreviewFile($model, $id, $filename);
$response = [
'status' => [
'error' => false,
'code' => 200,
'message' => 'preview document changed',
'title' => ''
],
'content' => [
'json' => $docs,
],
];
}
return Response::json($response);
}
public function getServerDocuments($model, $id)
{
return response()->json([
'images' => $this->document->getEntityFiles($model, $id)
]);
}
public function getServerDocumentThumb($model, $id, $filename)
{
$path = $this->document->getWebPreviewPath($model, $id);
$file = $this->document->get($path, $filename);
$mimeType = Storage::disk('upload')->mimeType($path.$filename);
$response = Response::make($file, 200);
$response->header("Content-Type", $mimeType);
return $response;
}
public function getServerDocument($model, $id, $filename)
{
$path = $this->document->getWebPath($model, $id);
$file = $this->document->get($path, $filename);
$mimeType = Storage::disk('upload')->mimeType($path.$filename);
$response = Response::make($file, 200);
$response->header("Content-Type", $mimeType);
return $response;
}
public function originalFileInfo($model, $id, $filename)
{
$doc = $this->document->getInfoByOriginalName($model, $id, $filename);
$response = [
'status' => [
'error' => false,
'code' => 200,
'message' => 'file info by original filename '.$filename,
'title' => ''
],
'content' => [
'json' => $doc,
],
];
return $response;
}
public function getServerIcons($icon)
{
$path = '/uploads/icons/';
$file = $this->document->get($path, $icon);
$mimeType = Storage::disk('upload')->mimeType($path.$icon);
$response = Response::make($file, 200);
$response->header("Content-Type", $mimeType);
return $response;
}
}