193 lines
4.4 KiB
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;
|
|
}
|
|
} |