64 lines
1.5 KiB
PHP
64 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Medium;
|
|
use App\Services\FileStorageService;
|
|
use Illuminate\Http\Request;
|
|
use Inertia\Inertia;
|
|
|
|
class MediumController extends Controller
|
|
{
|
|
protected FileStorageService $fileStorageService;
|
|
|
|
public function __construct(FileStorageService $fileStorageService)
|
|
{
|
|
$this->fileStorageService = $fileStorageService;
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
$medium = Medium::latest()->paginate(15);
|
|
return Inertia::admin('Medium', [
|
|
'medium' => $medium
|
|
]);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'file' => 'required|max:20240',
|
|
]);
|
|
|
|
$file = $request->file('file');
|
|
|
|
$fileRecord = $this->fileStorageService->storeFile($file, 'public', 'media');
|
|
|
|
return response()->json($fileRecord);
|
|
}
|
|
|
|
public function destroy(Medium $media)
|
|
{
|
|
$this->fileStorageService->deleteMedium($media);
|
|
$media->delete();
|
|
return redirect()->back()->with('success', 'فایل مورد نظر با موفقیت حذف شد.');
|
|
}
|
|
|
|
public function getMedium()
|
|
{
|
|
$medium = Medium::latest()->paginate(15);
|
|
return response()->json($medium);
|
|
}
|
|
|
|
public function download(Medium $media)
|
|
{
|
|
return $this->fileStorageService->downloadFile($media);
|
|
}
|
|
|
|
public function serve(Medium $media)
|
|
{
|
|
return $this->fileStorageService->serveFile($media);
|
|
}
|
|
}
|