diff --git a/app/Http/Controllers/PersonaController.php b/app/Http/Controllers/PersonaController.php index 83176f3..2a3f951 100644 --- a/app/Http/Controllers/PersonaController.php +++ b/app/Http/Controllers/PersonaController.php @@ -3,88 +3,99 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use Illuminate\Http\RedirectResponse; use App\Models\Persona; +use App\Http\Requests\UpdatedPersonaRequest; class PersonaController extends Controller { - public function index(Request $request) - { + public function index(Request $request){ + $personas = Persona::withTrashed()->get(); - return view('personas.index', [ - "personas" => $personas - ]); + // $personas = Persona::findOrFail(13); + //$per = Persona::where('id', 1)->first(); + //$personas = Persona::where('apellido', 'Cursos, capacitaciones y formación')->get(); + //$personas = Persona::where('apellido', 'like', '%Prod%')->get(); + + //$personas = Persona::orderBy('nombre', 'desc')->get(); + + //$personas = Persona::first(); + //$personas = Persona::last(); + /*Persona::count();*/ + + + return view('personas.index', ["personas"=>$personas]); } - public function show($id) - { - $persona = Persona::findOrFail($id); - - return view('personas.show', [ - "persona" => $persona - ]); + public function show($id){ + $persona = Persona::findOrfail($id); + return view('personas.show', ["per"=>$persona]); } - public function create() - { + public function destroy(Request $request, $id){ + $personas = Persona::findOrfail($id); + $personas->delete(); + $request->session()->flash('mensaje-success', 'La persona fue eliminada.'); + return redirect('/personas'); + } + + + public function create(){ return view('personas.new'); } - public function store(Request $request) - { - $persona = new Persona(); + public function store(Request $request){ + + $request->validate([ + 'apellido' => 'required|max:100', + 'nombre' => 'required|unique:personas,nombre|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:100', + //'dni' => 'required|numeric|digits_between:7,8', + ], + [ + 'apellido.required' => 'el campo apellido debe ser requerido', + 'apellido.max' => 'el campo apellido debe contener maximo 100 caracteres', + 'nombre.required' => 'el campo nombre es requerido', + 'nombre.unique' => 'el campo nombre no se puede repetir', + 'nombre.regex' => 'el campo nombre solo debe contener letras', + 'nombre.max' => 'el campo nombre debe contener un maximo de 100 caracteres', - $persona->fill([ + ] + ); + + $personas = new Persona(); + $personas->fill([ 'nombre' => $request->input('nombre'), 'apellido' => $request->input('apellido'), - 'dni' => $request->input('dni'), - ]); - - $persona->save(); - + ]); + $personas->save(); + $request->session()->flash('mensaje-success', 'La persona fue agregada.'); return redirect('/personas'); } - public function edit($id) - { - $persona = Persona::findOrFail($id); - - return view('personas.edit', [ - "persona" => $persona - ]); + public function edit($id){ + $persona = Persona::findOrfail($id); + //$persona = Persona::where('id',$id)->first(); + return view('personas.edit', ["per"=>$persona]); } - public function update(Request $request, $id) - { - $persona = Persona::findOrFail($id); - - $persona->fill([ + public function update(UpdatedPersonaRequest $request, $id){ + $personas = Persona::findOrfail($id); + $personas->fill([ 'nombre' => $request->input('nombre'), 'apellido' => $request->input('apellido'), - 'dni' => $request->input('dni'), ]); - - $persona->update(); - - return redirect('/personas'); + $personas->update(); + $request->session()->flash('mensaje-success', 'La persona fue modificada.'); + return redirect('/personas'); } - public function destroy($id) - { - $persona = Persona::findOrFail($id); - - $persona->delete(); - + public function restaurar(Request $request, $id){ + $personas = Persona::withTrashed()->findOrfail($id); + $personas->restore(); + $request->session()->flash('mensaje-success', 'La persona fue restaurada.'); return redirect('/personas'); } - public function restaurar(Request $request, $id) - { - $persona = Persona::withTrashed()->findOrFail($id); - - $persona->restore(); - - return redirect('/personas'); - } -} \ No newline at end of file +} diff --git a/app/Http/Requests/UpdatedPersonaRequest.php b/app/Http/Requests/UpdatedPersonaRequest.php new file mode 100644 index 0000000..0704017 --- /dev/null +++ b/app/Http/Requests/UpdatedPersonaRequest.php @@ -0,0 +1,42 @@ +|string> + */ + public function rules(): array + { + return [ + 'nombre' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:100|unique:personas,nombre,' . $this->route('persona') . ',id', + 'apellido' => 'required', + 'dni' => 'required' + ]; + } + + public function messages() { + + return [ + 'nombre.required' => 'el campo nombre es requerido', + 'nombre.regex' => 'el campo nombre solo debe contener letras', + 'nombre.max' => 'el campo nombre debe contener un maximo de 100 caracteres', + 'nombre.unique' => 'ya existe una persona con este nombre', + 'apellido.required' => 'el campo apellido es requerido', + 'dni.required' => 'el campo dni es requerido' + ]; + } +} diff --git a/app/Models/Persona.php b/app/Models/Persona.php index 63baccf..0e57248 100644 --- a/app/Models/Persona.php +++ b/app/Models/Persona.php @@ -13,7 +13,7 @@ class Persona extends Model protected $table = 'personas'; - protected $primaryKey = 'id'; + public $primaryKey = 'id'; public $timestamps = true; @@ -22,5 +22,4 @@ class Persona extends Model 'apellido', 'dni', ]; -} - +} \ No newline at end of file diff --git a/personas.sql b/personas.sql new file mode 100644 index 0000000..6ae3b53 --- /dev/null +++ b/personas.sql @@ -0,0 +1,55 @@ +-- phpMyAdmin SQL Dump +-- version 5.2.1 +-- https://www.phpmyadmin.net/ +-- +-- Servidor: 127.0.0.1:3306 +-- Tiempo de generación: 10-06-2026 a las 03:54:18 +-- Versión del servidor: 8.3.0 +-- Versión de PHP: 8.2.18 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Base de datos: `mis_turnos` +-- + +-- -------------------------------------------------------- + +-- +-- Estructura de tabla para la tabla `personas` +-- + +DROP TABLE IF EXISTS `personas`; +CREATE TABLE IF NOT EXISTS `personas` ( + `id` int NOT NULL AUTO_INCREMENT, + `nombre` varchar(100) NOT NULL, + `apellido` varchar(100) NOT NULL, + `dni` varchar(20) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + +-- +-- Volcado de datos para la tabla `personas` +-- + +INSERT INTO `personas` (`id`, `nombre`, `apellido`, `dni`, `created_at`, `updated_at`, `deleted_at`) VALUES +(3, 'Adrian', 'Tejeda', '36782848', NULL, NULL, NULL), +(4, 'Elena', 'Paz', '40687678', NULL, '2026-06-05 07:29:03', NULL), +(5, 'Raul', 'Garcia', '34562767', '2026-05-27 03:00:47', '2026-06-03 01:10:55', NULL), +(6, 'Maia', 'Torres', '43897909', '2026-06-05 07:25:35', '2026-06-05 07:29:23', NULL); +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/resources/views/compartido/errores.blade.php b/resources/views/compartido/errores.blade.php new file mode 100644 index 0000000..16ff22c --- /dev/null +++ b/resources/views/compartido/errores.blade.php @@ -0,0 +1,9 @@ +@if ($errors->any()) +
{{ session('mensaje-success') }}
+@endif \ No newline at end of file diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php new file mode 100644 index 0000000..74a1723 --- /dev/null +++ b/resources/views/layouts/admin.blade.php @@ -0,0 +1,126 @@ + + + + + + + + + +- Nombre: - -
+ + + +@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/personas/index.blade.php b/resources/views/personas/index.blade.php index d5b3c39..7883924 100644 --- a/resources/views/personas/index.blade.php +++ b/resources/views/personas/index.blade.php @@ -1,83 +1,130 @@ - - +@extends('layouts.admin') +@section('contenido') - - -| Id | +Nombre | +Apellido | +DNI | +Acciones | +
|---|---|---|---|---|
| {{ $per->id }} | +{{ $per->nombre }} | +{{ $per->apellido }} | +{{ $per->dni }} | +- - {{ $cat->apellido }} + @if($per->deleted_at == null) + - @else - - -@endif - + @endif + | +