File: /home/armgroup/libs/app/Http/Controllers/Admin/ArticleController.php
<?php
namespace App\Http\Controllers\Admin;
use App\DataTables\ArticlesDataTable;
use App\Http\Controllers\Controller;
use App\Models\Article;
use App\Models\Category;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
class ArticleController extends Controller
{
public function __construct()
{
$this->middleware('permission:manage articles');
}
public function index(ArticlesDataTable $dataTable)
{
$categories = Category::where('type', Article::class)->select('id', 'name')->get();
return $dataTable->render('admin.articles.index', compact('categories'));
}
public function create()
{
$categories = Category::where('type', Article::class)->select('id', 'name')->get();
return view('admin.articles.create', compact('categories'));
}
public function edit(Article $article)
{
Gate::authorize('checkPermission', $article->user_id);
$categories = Category::where('type', Article::class)->select('id', 'name')->get();
$selectedCategories = $article->categories()->pluck('id')->toArray();
return view('admin.articles.edit', compact('article', 'categories', 'selectedCategories'));
}
public function destroy(Article $article)
{
Gate::authorize('checkPermission', $article->user_id);
DB::transaction(function () use ($article) {
$article->categories()->detach();
$article->comments()->delete();
$article->favorites()->delete();
$article->delete();
});
$this->doneMessage("{$article->title} حذف شد");
return back();
}
}