<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests\PageRedirectValidation;
use App\Models\PageRedirect;

class PageRedirectsController extends Controller
{
    public function index()
    {
        if (!auth()->user()->hasRole('admin')) {
            if (request()->expectsJson()) {
                return response()->json(['error' => 'You do not have permission to view page redirects'], 403);
            } else {
                return redirect('/')->with('error', 'You do not have access to view page redirects');
            }
        }

        if (request()->expectsJson()) {
            $page_redirects = PageRedirect::all();
            return response()->json([
                'page_redirects' => $page_redirects,
            ]);
        }

        auth()->user()->enableEditing();
        return view('page-redirects.index');
    }

    public function store(PageRedirectValidation $request, $id = null)
    {
        $page_redirect = (new PageRedirect())->savePageRedirect(request(), $id);

        return response()->json([
            'success' => 'Redirect Saved',
            'page_redirect' => $page_redirect,
        ]);
    }

    public function remove($id)
    {
        if (!auth()->user()->hasRole('admin')) {
            return response()->json(['error' => 'You do not have permission to delete page redirects'], 403);
        }

        $page_redirect = PageRedirect::findOrFail($id);
        $page_redirect->delete();

        return response()->json([
            'success' => 'Redirect Removed',
        ]);
    }
}
