<?php

namespace App\Http\Controllers;

use App\Page;
use Illuminate\Http\Request;

class PageController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth', ['only' => ['index', 'create', 'store', 'edit', 'update', 'destroy']]);
        $this->middleware('admin', ['only' => ['index', 'create', 'store', 'edit', 'update', 'destroy']]);
    }

    // ===== Admin Methods =====

    public function index()
    {
        $pages = Page::orderBy('title')->get();
        return view('admin.pages.index', compact('pages'));
    }

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

    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required|max:255',
            'slug' => 'required|max:255|unique:pages,slug|regex:/^[a-z0-9\-]+$/',
            'content' => 'required',
        ], [
            'slug.unique' => 'هذا الرابط مستخدم مسبقاً',
            'slug.regex' => 'الرابط يجب أن يحتوي على أحرف إنجليزية صغيرة وأرقام وشرطات فقط',
        ]);

        Page::create([
            'title' => $request->title,
            'slug' => $request->slug,
            'content' => $request->content,
            'is_active' => $request->has('is_active') ? 1 : 0,
            'position' => $request->input('position', 'none'),
        ]);

        flash('تم إنشاء الصفحة بنجاح')->success();
        return redirect('/admin/pages');
    }

    public function edit($id)
    {
        $page = Page::findOrFail($id);
        return view('admin.pages.edit', compact('page'));
    }

    public function update(Request $request, $id)
    {
        $request->validate([
            'title' => 'required|max:255',
            'content' => 'required',
        ]);

        $page = Page::findOrFail($id);
        $page->update([
            'title' => $request->title,
            'content' => $request->content,
            'is_active' => $request->has('is_active') ? 1 : 0,
            'position' => $request->input('position', 'none'),
        ]);

        flash('تم تحديث الصفحة بنجاح')->success();
        return redirect('/admin/pages');
    }

    public function destroy($id)
    {
        $page = Page::findOrFail($id);
        $page->delete();

        flash('تم حذف الصفحة بنجاح')->success();
        return redirect('/admin/pages');
    }

    // ===== Public Methods =====

    public function show($slug)
    {
        $page = Page::where('slug', $slug)->where('is_active', 1)->firstOrFail();
        return view('pages.show', compact('page'));
    }
}
