<?php
namespace App\Http\Controllers;

use App\Models\AccessControl;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AccessControlController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {

        if (Auth::user()->role == 'super_admin') {
            $accessControls = AccessControl::latest()->paginate(10);
            return view('admin.access_controls.index', compact('accessControls'));
        } else {
            return redirect()->back()->with('error', 'Only Access super admin');
        }

    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        if (Auth::user()->role == 'super_admin') {
            return view('admin.access_controls.create');
        } else {
            return redirect()->back()->with('error', 'Only Access super admin');
        }
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {

        $request->validate([
            'type'       => 'required|in:ip,country',
            'value'      => 'required|string|max:255',
            'is_allowed' => 'required|boolean',
        ]);

        AccessControl::create($request->all());

        return redirect()->route('access-controls.index')
            ->with('success', 'Access rule created successfully.');
    }

   
    public function edit(string $id)
    {
        if (Auth::user()->role == 'super_admin') {
            $accessControl = AccessControl::findOrFail($id);
            return view('admin.access_controls.edit', compact('accessControl'));
        } else {
            return redirect()->back()->with('error', 'Only Access super admin');
        }
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id)
    {
        $request->validate([
            'type'       => 'required|in:ip,country',
            'value'      => 'required|string|max:255',
            'is_allowed' => 'required|boolean',
        ]);

        $accessControl = AccessControl::findOrFail($id);
        $accessControl->update($request->all());

        return redirect()->route('access-controls.index')
            ->with('success', 'Access rule updated successfully.');
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id)
    {

        if (Auth::user()->role == 'super_admin') {
            $accessControl = AccessControl::findOrFail($id);
            $accessControl = AccessControl::findOrFail($id);
            $accessControl->delete();

            return redirect()->route('access-controls.index')
                ->with('success', 'Access rule deleted successfully.');
        } else {
            return redirect()->back()->with('error', 'Only Access super admin');
        }
    }
}
