Files
getgreen-backend/app/Http/Controllers/Dashboard/UsefulInfoController/Controller.php
2026-04-16 11:25:40 +05:00

84 lines
2.4 KiB
PHP
Executable File

<?php
namespace App\Http\Controllers\Dashboard\UsefulInfoController;
use App\Http\Controllers\Controller as ExController;
use App\Models\UsefulInfo;
use App\Http\Requests\Dashboard\UsefulInfoRequest\Update as UpdateRequest;
use App\Http\Requests\Dashboard\UsefulInfoRequest\Store as StoreRequest;
use App\Jobs\Dashboard\UsefulInfoJob\Store as StoreJob;
use App\Jobs\Dashboard\UsefulInfoJob\Update as UpdateJob;
use Illuminate\Support\Facades\Storage;
class Controller extends ExController
{
public function index()
{
$this->authorize('view', 'usefulinfos');
$usefulinfos = UsefulInfo::orderBy('position')->latest('id')->paginate(20);
return view('dashboard.usefulinfos.index', compact('usefulinfos'));
}
public function create()
{
$this->authorize('create', 'usefulinfos');
return view('dashboard.usefulinfos.create');
}
public function store(StoreRequest $request)
{
if ($request->hasFile('image')) {
$path = $request->file('image')->store('uploads/usefulinfos');
}
$this->dispatchSync(StoreJob::fromRequest($request, $path));
$this->info(trans('admin.messages.created'));
return redirect()->route('dashboard.usefulinfos.index');
}
public function edit(UsefulInfo $usefulinfo)
{
$this->authorize('update', 'usefulinfos');
return view('dashboard.usefulinfos.edit', compact('usefulinfo'));
}
public function update(UpdateRequest $request, UsefulInfo $usefulinfo)
{
if ($request->hasFile('image')) {
Storage::delete($usefulinfo->image);
$path = $request->file('image')->store('uploads/usefulinfos');
} else {
$path = $usefulinfo->image;
}
$this->dispatchSync(UpdateJob::fromRequest($usefulinfo, $request, $path));
$this->info(trans('admin.messages.updated'));
return redirect()->route('dashboard.usefulinfos.index');
}
public function destroy(UsefulInfo $usefulinfo)
{
$this->authorize('delete', 'usefulinfos');
// delete items files
foreach ($usefulinfo->items as $item) {
if ($item->file_url) {
Storage::delete($item->file_url);
}
$item->delete();
}
Storage::delete($usefulinfo->image);
$usefulinfo->delete();
$this->info(trans('admin.messages.deleted'));
return redirect()->back();
}
}