<?php

namespace App\Http\Controllers;

use App\Models\documentoTipo;
use App\Models\Nivel;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

class documentoTipoController extends Controller
{
    public function __construct() {
    $this->middleware('can:documentoTipo.index')->only('index','show');
    $this->middleware('can:documentoTipo.create')->only('create','store');
    $this->middleware('can:documentoTipo.edit')->only('edit','update');
    $this->middleware('can:documentoTipo.destroy')->only('destroy');
    }

    public function index()
    {
        $documentoTipos=documentoTipo::all();
    return view('documento.index',compact('documentoTipos'));
    }


    public function create()
    {
        $nivels = Nivel::where('status','=','1')->get();
            return view('Documento.create',compact('nivels'));
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'slug' => 'required|unique:documento_tipos,slug',
            'extensiones' => 'required|array'
        ]);

        $documentoTipo=documentoTipo::create([
            'name' => $request->name,
            'slug' => $request->slug,
            'extensiones' => $request->extensiones
        ]);

        $documentoTipo->niveles()->sync($request->nivels ?? []);

        return redirect()->route('documentoTipo.edit',compact('documentoTipo'))->with('info','Se creó la la documentación correctamente');
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(documentoTipo $documentoTipo)
    {
        $documentoTipo->load('niveles');
        $nivels = Nivel::where('status','=','1')->get();
        return view('documento.edit',compact(['documentoTipo','nivels']));
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, documentoTipo $documentoTipo)
    {
        $documentoTipo->update([
            'name' => $request->name,
            'slug' => $request->slug,
            'extensiones' => $request->extensiones
        ]);

        $documentoTipo->niveles()->sync($request->nivels ?? []);

        return redirect()->route('documentoTipo.edit',compact('documentoTipo'))->with('info','Se modificó la la documentación correctamente');
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(documentoTipo $documentoTipo)
    {
       $documentoTipo->niveles()->detach();
       $documentoTipo->delete();

        session()->flash('swal',[
            'icon'=>'success',
            'title'=>'Eliminado!',
            'text'=>'Se han eliminado los registros correctamente'
        ]);
        return redirect()->route('documentoTipo.index');
    }
}
