orderBy('id', 'desc')->get(); return view('persona.index', compact('personas')); } public function create() { return view('persona.new'); } public function store(Request $request) { $request->validate([ 'nombre' => 'required|string|max:32', 'apellido' => 'required|string|max:32', 'dni' => 'required|string|max:32|unique:persona,dni', ],[ 'nombre.required' => 'El nombre es obligatorio.', 'apellido.required' => 'El apellido es obligatorio.', 'dni.required' => 'El DNI es obligatorio.', 'dni.unique' => 'Ya existe una persona con ese DNI.', ]); Persona::create($request->only(['nombre', 'apellido', 'dni'])); return redirect()->route('persona.index')->with('mensaje-success', 'La persona fue guardada correctamente.'); } public function show($id) { $persona = Persona::findOrFail($id); return view('persona.show', compact('persona')); } public function edit($id) { $persona = Persona::findOrFail($id); return view('persona.edit', compact('persona')); } public function update(Request $request, $id) { $persona = Persona::findOrFail($id); $request->validate([ 'nombre' => 'required|string|max:32', 'apellido' => 'required|string|max:32', 'dni' => 'required|string|max:32|unique:persona,dni,' . $persona->id, ],[ 'nombre.required' => 'El nombre es obligatorio.', 'apellido.required' => 'El apellido es obligatorio.', 'dni.required' => 'El DNI es obligatorio.', 'dni.unique' => 'Ya existe una persona con ese DNI.', ]); $persona->update($request->only(['nombre', 'apellido', 'dni'])); return redirect()->route('persona.index')->with('mensaje-success', 'La persona fue actualizada correctamente.'); } public function destroy(Request $request, $id) { $persona = Persona::findOrFail($id); // Soft delete (se requiere SoftDeletes en el modelo y columna deleted_at) $persona->delete(); return redirect()->route('persona.index')->with('mensaje-success', 'La persona fue eliminada correctamente.'); } public function restaurar(Request $request, $id) { $persona = Persona::withTrashed()->findOrFail($id); if ($persona->trashed()) { $persona->restore(); return redirect()->route('persona.index')->with('mensaje-success', 'La persona fue restaurada correctamente.'); } return redirect()->route('persona.index')->with('mensaje-error', 'La persona no está eliminada.'); } }