-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathUploadController.php
114 lines (101 loc) · 3.21 KB
/
UploadController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
/**
* File name: UploadController.php
* Last modified: 2020.05.04 at 09:04:19
* Author: SmarterVision - https://codecanyon.net/user/smartervision
* Copyright (c) 2020
*
*/
namespace App\Http\Controllers;
use App\Http\Requests\UploadRequest;
use App\Repositories\UploadRepository;
use Prettus\Validator\Exceptions\ValidatorException;
class UploadController extends Controller
{
private $uploadRepository;
/**
* UploadController constructor.
* @param UploadRepository $uploadRepository
*/
public function __construct(UploadRepository $uploadRepository)
{
parent::__construct();
$this->uploadRepository = $uploadRepository;
}
public function index()
{
return view('medias.index');
}
/**
* Get images paths
* @param $id
* @param $conversion
* @param null $filename
* @return mixed
*/
public function storage($id, $conversion, $filename = null)
{
$array = explode('.', $conversion . $filename);
$extension = strtolower(end($array));
if (isset($filename)) {
return response()->file(storage_path('app/public/' . $id . '/' . $conversion . '/' . $filename));
} else {
$filename = $conversion;
return response()->file(storage_path('app/public/' . $id . '/' . $filename));
}
}
public function all(UploadRequest $request, $collection = null)
{
$allMedias = $this->uploadRepository->allMedia($collection);
if (!auth()->user()->hasRole('admin')) {
$allMedias = $allMedias->filter(function ($element) {
if (isset($element['custom_properties']['user_id'])) {
return $element['custom_properties']['user_id'] == auth()->id();
}
return false;
});
}
return $allMedias->toJson();
}
public function collectionsNames(UploadRequest $request)
{
$allMedias = $this->uploadRepository->collectionsNames();
return $this->sendResponse($allMedias, 'Get Collections Successfully');
}
/**
* @param UploadRequest $request
*/
public function store(UploadRequest $request)
{
$input = $request->all();
try {
$upload = $this->uploadRepository->create($input);
$upload->addMedia($input['file'])
->withCustomProperties(['uuid' => $input['uuid'], 'user_id' => auth()->id()])
->toMediaCollection($input['field']);
} catch (ValidatorException $e) {
return $this->sendResponse(false, $e->getMessage());
}
}
/**
* clear cache from Upload table
*/
public function clear(UploadRequest $request)
{
$input = $request->all();
if ($input['uuid']) {
$result = $this->uploadRepository->clear($input['uuid']);
return $this->sendResponse($result, 'Media deleted successfully');
}
return $this->sendResponse(false, 'Error will delete media');
}
/**
* clear all cache
* @return \Illuminate\Http\RedirectResponse
*/
public function clearAll()
{
$this->uploadRepository->clearAll();
return redirect()->back();
}
}