<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use App\Models\personal; 
use App\Http\Requests\UpdatedPersonalRequest;

class personalController extends Controller
{
    public function index(Request $request){

        $personal = personal::withTrashed()-> get();

        return view('personal.index', ['personal'=>$personal]);
    }
      public function show($id){
        $personal = personal::findOrfail($id);
        return view('personal.show', ["per"=>$personal]);
    }

    public function destroy(Request $request, $id){
        $personal = personal::findOrfail($id);
        $personal->delete();
        $request->session()->flash('mensaje-success', 'El efectivo policial fue eliminado.');
        return redirect('/personal');
    }
    
        public function create(){
        return view('personal.new');
    }

        public function store(Request $request){
    
    $request->validate([
            'nombre' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/',
            'apellido' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/',
            'dni' => 'required|numeric|digits_between:7,8 |unique:personal,dni',
            'domicilio' => 'required||max:20',
        ],
        [
            'nombre.required' => 'el campo nombre es requerido',
            'nombre.regex' => 'el campo nombre sólo debe contener letras',
            'apellido.required' => 'el campo apellido es requerido', 
            'apellido.regex' => 'el campo apellido sólo debe contener letras',
            'dni.required' => 'el campo DNI es requerido', 
            'dni.numeric'  => 'el campo DNI sólo admite números',
            'dni.digits_between'  => 'El campo DNI sólo admite hasta 8 dígitos',
            'dni.unique' => 'el campo DNI no se puede repetir',
            'domicilio.required' => 'el campo domicilio es requerido',
            'domicilio.regex' => 'el campo domicilio sólo debe contener letras',
            'domicilio.max' => 'el campo domicilio sólo puede tener 20 caracteres',
          
        ]
        );

        $personal = new personal();
        $personal->fill([
            'nombre' => $request->input('nombre'),
            'apellido' => $request->input('apellido'),
            'dni' => $request->input('dni'),
            'domicilio' => $request->input('domicilio'),
            ]);
        $personal->save();
        $request->session()->flash('mensaje-success', 'La Efectivo policial fue agregado.');
        return redirect('/personal');
    }

    public function edit($id){
        $personal = personal::findOrfail($id);
        return view('personal.edit', ["per"=>$personal]);
    }
    
    public function update(UpdatedPersonalRequest $request, $id){
        $personal = personal::findOrfail($id);
        $personal->fill([
            'nombre' => $request->input('nombre'),
            'apellido' => $request->input('apellido'),
            'dni' => $request->input('dni'),
            'domicilio' => $request->input('domicilio'),
        ]);
        $personal->update();
        $request->session()->flash('mensaje-success', 'Los datos del Efectivo fueron modificados.');
        return redirect('/personal');
    }

     public function restaurar(Request $request, $id){
        $personal = personal::withTrashed()->findOrfail($id);
        $personal->restore();
        $request->session()->flash('mensaje-success', 'El efectivo fue restaurado.');
        return redirect('/personal');
    } 
}

