diff --git a/app/Http/Controllers/PersonaController.php b/app/Http/Controllers/PersonaController.php index 3d08181..db8037c 100644 --- a/app/Http/Controllers/PersonaController.php +++ b/app/Http/Controllers/PersonaController.php @@ -4,13 +4,15 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\RedirectResponse; -use App\Models\persona; +use App\Models\Persona; +use App\Http\Requests\UpdatePersonaRequest; +use App\Http\Requests\StorePersonaRequest; class PersonaController extends Controller { public function index(Request $request){ - $persona = persona::all(); + $persona = Persona::withTrashed()->get(); return view('persona.index', ["persona"=>$persona]); } @@ -32,7 +34,7 @@ public function show($id){ } - public function store(Request $request): RedirectResponse + public function store(StorePersonaRequest $request): RedirectResponse { $persona = new persona(); $persona -> fill([ @@ -51,7 +53,7 @@ public function show($id){ return redirect('/persona'); } - public function update(Request $request, $id){ + public function update(UpdatePersonaRequest $request, $id){ $persona = persona::findOrfail($id); $persona -> fill([ 'nombre' => $request->input('nombre'), @@ -61,4 +63,10 @@ public function show($id){ $persona->save(); return redirect('/persona'); } - } \ No newline at end of file + + public function restore($id){ + $persona = persona::withTrashed()->findOrfail($id); + $persona->restore(); + return redirect('/persona'); + } +} \ No newline at end of file diff --git a/app/Http/Requests/StorePersonaRequest.php b/app/Http/Requests/StorePersonaRequest.php new file mode 100644 index 0000000..70721bd --- /dev/null +++ b/app/Http/Requests/StorePersonaRequest.php @@ -0,0 +1,46 @@ +|string> + */ + public function rules(): array + { + return [ + 'nombre' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|', + 'apellido' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|', + 'dni' => 'required|numeric|digits_between:7,8|unique:persona,dni,' . $this->route('persona') . ',id_persona', + ]; + } + + 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 20 caracteres', + 'apellido.required' => 'El campo apellido es requerido', + 'apellido.regex' => 'El campo apellido solo debe contener letras', + 'apellido.max' => 'El campo apellido debe contener un maximo de 20 caracteres', + 'dni.required' => 'El campo dni es requerido', + 'dni.unique' => 'Ya existe una persona con este dni', + 'dni.numeric' => 'El campo dni debe ser un numero', + 'dni.digits_between' => 'El campo dni debe contener entre 7 y 8 digitos' + ]; + } +} diff --git a/app/Http/Requests/UpdatePersonaRequest.php b/app/Http/Requests/UpdatePersonaRequest.php new file mode 100644 index 0000000..96f0d67 --- /dev/null +++ b/app/Http/Requests/UpdatePersonaRequest.php @@ -0,0 +1,45 @@ +|string> + */ + public function rules(): array + { + return [ + 'nombre' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|', + 'apellido' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|', + 'dni' => 'required|unique:persona,dni,' . $this->route('persona') . ',id_persona|numeric|digits_between:7,8', + ]; + } + 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 20 caracteres', + 'apellido.required' => 'El campo apellido es requerido', + 'apellido.regex' => 'El campo apellido solo debe contener letras', + 'apellido.max' => 'El campo apellido debe contener un maximo de 20 caracteres', + 'dni.required' => 'El campo dni es requerido', + 'dni.unique' => 'Ya existe una persona con este dni', + 'dni.numeric' => 'El campo dni debe ser un numero', + 'dni.digits_between' => 'El campo dni debe contener entre 7 y 8 digitos' + ]; + } +} diff --git a/app/Models/persona.php b/app/Models/persona.php index d6a6aad..010a303 100644 --- a/app/Models/persona.php +++ b/app/Models/persona.php @@ -3,21 +3,24 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Model; use App\Models\persona; + class Persona extends Model { use HasFactory; + use SoftDeletes; protected $table = 'persona'; public $primaryKey = 'id_persona'; - public $timestamps = false; + public $timestamps = true; protected $fillable = [ 'nombre', - 'apellido', - 'dni', + 'apellido', + 'dni', ]; } 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..67883ed --- /dev/null +++ b/resources/views/layouts/admin.blade.php @@ -0,0 +1,111 @@ + + + + + + + + + +