<?php

namespace {{ namespace }};

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;
use {{ model_namespace }}\{{ model }};

class {{ class }} extends Controller {
    private $permissao = '{{ permission }}';

    public function index(Request $request): View|RedirectResponse {
        $response = $this->checkPermissao($this->permissao, 'visualizar');
        if ($response instanceof RedirectResponse) { return $response; }
        return view('admin.{{ fullViewPath }}.index');
    }

    public function create(): View|RedirectResponse {
        $response = $this->checkPermissao($this->permissao, 'adicionar');
        if ($response instanceof RedirectResponse) { return $response; }
        return view('admin.{{ fullViewPath }}.create');
    }

    public function store(Request $request): RedirectResponse {
        $response = $this->checkPermissao($this->permissao, 'adicionar');
        if ($response instanceof RedirectResponse) { return $response; }
        return redirect()->route('admin.{{ fullViewPath }}.index');
    }

    public function edit({{ model }} ${{ refer }}): View|RedirectResponse {
        $response = $this->checkPermissao($this->permissao, 'editar');
        if ($response instanceof RedirectResponse) { return $response; }
        return view('admin.{{ fullViewPath }}.edit', compact('{{ refer }}'));
    }

    public function update(Request $request, {{ model }} ${{ refer }}): RedirectResponse {
        $response = $this->checkPermissao($this->permissao, 'editar');
        if ($response instanceof RedirectResponse) { return $response; }
        return redirect()->route('admin.{{ fullViewPath }}.index');
    }

    public function destroy(Request $request, {{ model }} ${{ refer }}): RedirectResponse {
        $response = $this->checkPermissao($this->permissao, 'excluir');
        if ($response instanceof RedirectResponse) { return $response; }
        return redirect()->route('admin.{{ fullViewPath }}.index');
    }
}
