<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\BlogTag;
use Illuminate\Http\Request;

class BlogTagController extends Controller
{
    public function index()
    {
        $tags = BlogTag::withCount('posts')->orderBy('name')->paginate(50);
        return view('admin.blog.tags.index', compact('tags'));
    }

    public function create()
    {
        return view('admin.blog.tags.create');
    }

    public function store(Request $request)
    {
        $data = $request->validate([
            'name' => 'required|string|max:100|unique:blog_tags,name',
            'slug' => 'nullable|string|max:150|unique:blog_tags,slug',
        ], [
            'name.required' => 'نام تگ الزامی است.',
            'name.unique'   => 'این نام تگ قبلاً ثبت شده است.',
        ]);

        BlogTag::create([
            'name' => $data['name'],
            'slug' => BlogTag::generateSlug($data['slug'] ?? $data['name']),
        ]);

        return redirect()->route('admin.blog.tags.index')->with('success', 'تگ ثبت شد.');
    }

    public function edit(BlogTag $tag)
    {
        return view('admin.blog.tags.edit', compact('tag'));
    }

    public function update(Request $request, BlogTag $tag)
    {
        $data = $request->validate([
            'name' => 'required|string|max:100|unique:blog_tags,name,' . $tag->id,
            'slug' => 'nullable|string|max:150|unique:blog_tags,slug,' . $tag->id,
        ]);

        $tag->update([
            'name' => $data['name'],
            'slug' => BlogTag::generateSlug($data['slug'] ?? $data['name'], $tag->id),
        ]);

        return redirect()->route('admin.blog.tags.index')->with('success', 'تگ ویرایش شد.');
    }

    public function destroy(BlogTag $tag)
    {
        $tag->delete();
        return back()->with('success', 'تگ حذف شد.');
    }
}
