diff --git a/app/Http/Controllers/Requests/UpdatedPersonaRequest.php b/app/Http/Controllers/Requests/UpdatedPersonaRequest.php new file mode 100644 index 0000000..f6193d8 --- /dev/null +++ b/app/Http/Controllers/Requests/UpdatedPersonaRequest.php @@ -0,0 +1,45 @@ +|string> + */ + public function rules(): array + { + return [ + 'apellido' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|unique:persona,apellido,' . $this->route('persona') . ',id_persona', + 'nombre' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|unique:persona,nombre,' . $this->route('persona') . ',id_persona', + 'dni' => 'required' + ]; + } + + public function messages() { + + return [ + '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', + 'apellido.unique' => 'ya existe este apellido', + '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', + 'nombre.unique' => 'ya existe este nombre', + 'dni' => 'el campo dni es requerido' + ]; + } +} diff --git a/app/Http/Controllers/personacontroller.php b/app/Http/Controllers/personacontroller.php index 9f55df8..f4ec1e9 100644 --- a/app/Http/Controllers/personacontroller.php +++ b/app/Http/Controllers/personacontroller.php @@ -5,16 +5,15 @@ 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) - { - $persona = Persona::withTrashed()-> get(); + public function index(Request $request){ - return view('personas.index',["personas"=>$persona]); + $persona = Persona::withTrashed()->get(); - // $categorias = Categorias::findOrFail(13); + // $categorias = Categorias::findOrFail(13); //$cat = Categorias::where('id_categoria', 1)->first(); //$categorias = Categorias::where('descripcion', 'Cursos, capacitaciones y formación')->get(); //$categorias = Categorias::where('descripcion', 'like', '%Prod%')->get(); @@ -24,6 +23,9 @@ class PersonaController extends Controller //$categorias = Categorias::first(); //$categorias = Categorias::last(); /*Categorias::count();*/ + + + return view('personas.index', ["persona"=>$persona]); } public function show($id){ $persona = Persona::findOrfail($id); @@ -33,6 +35,7 @@ class PersonaController extends Controller public function destroy(Request $request, $id){ $persona = Persona::findOrfail($id); $persona->delete(); + $request->session()->flash('mensaje-success', 'La persona fue eliminada.'); return redirect('/personas'); } @@ -43,13 +46,35 @@ class PersonaController extends Controller public function store(Request $request){ + $request->validate([ + 'apellido' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|unique:persona,apellido', + 'nombre' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|unique:persona,nombre', + 'dni' => 'required|numeric|digits_between:7,8', + ], + [ + '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', + 'apellido.unique' => 'ya existe este apellido', + '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', + 'nombre.unique' => 'ya existe este nombre', + 'dni' => 'el campo dni es requerido', + 'dni' => 'el campo dni debe contener solo numeros', + 'dni' => 'el campo dni debe contener un maximo de 8 caracteres', + ] + ); + + $persona = new Persona(); $persona->fill([ - 'apellido' => $request->input('apellido'), + 'apellido'=> $request->input('apellido'), 'nombre' => $request->input('nombre'), 'dni' => $request->input('dni'), ]); $persona->save(); + $request->session()->flash('mensaje-success', 'La persona fue agregada.'); return redirect('/personas'); } @@ -62,48 +87,21 @@ class PersonaController extends Controller public function update(Request $request, $id){ $persona = Persona::findOrfail($id); $persona->fill([ - 'apellido' => $request->input('apellido'), + 'apellido'=> $request->input('apellido'), 'nombre' => $request->input('nombre'), 'dni' => $request->input('dni'), ]); $persona->update(); + $request->session()->flash('mensaje-success', 'La persona fue modificada.'); return redirect('/personas'); } public function restaurar(Request $request, $id){ $persona = Persona::withTrashed()->findOrfail($id); $persona->restore(); + $request->session()->flash('mensaje-success', 'La persona fue restaurada.'); return redirect('/personas'); } -/* - - - - public function show($id){ - $categorias = Categorias::findOrfail($id); - - return view('categorias.show', ["cat"=>$categorias]); - } - - - public function edit($id){ - $categorias = Categorias::findOrfail($id); - return view('categorias.edit', ["cat"=>$categorias]); - } - - - public function update(Request $request, $id){ - $categorias = Categorias::findOrfail($id); - $categorias->fill([ - 'nombre' => $request->input('nombre'), - 'descripcion' => $request->input('descripcion'), - ]); - $categorias->update(); - return redirect('/categorias'); - } - - - */ } 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()) +
+ +
+@endif \ No newline at end of file diff --git a/resources/views/compartido/mensajes.blade.php b/resources/views/compartido/mensajes.blade.php new file mode 100644 index 0000000..8b0ba24 --- /dev/null +++ b/resources/views/compartido/mensajes.blade.php @@ -0,0 +1,3 @@ +@if (session('mensaje-success')) +

{{ 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..501b587 --- /dev/null +++ b/resources/views/layouts/admin.blade.php @@ -0,0 +1,103 @@ + + + + + + + + + + @yield('title','proyecto_taller') + + + + + + + + + + + @stack('styles') + + + + + + + + + + +
+ + @yield('contenido') +
+ + + + + + + + + + + + + + + + + + + + + @stack('scripts') + + diff --git a/resources/views/personas/edit.blade.php b/resources/views/personas/edit.blade.php index c7cfe49..14eb2c2 100644 --- a/resources/views/personas/edit.blade.php +++ b/resources/views/personas/edit.blade.php @@ -1,42 +1,80 @@ - - - - - - Editar persona - - +@extends('layouts.admin') +@section('contenido') -

Editar persona

+ +
+ +
+

Editar Persona

+
+
+
+
-
+ + @include('compartido.mensajes') + @include('compartido.errores') +
+
+
+ + + @csrf - @method('PUT') + @method('PUT') -
-
- + +
+ + +
+ + + + +
+ +
+ + +
+ +
+ + +
- -
-
- -
- -
-
- -
- -
- - Volver al listado + +
+
+ + +
+
+ + Salir +
- - \ No newline at end of file +@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/personas/index.blade.php b/resources/views/personas/index.blade.php index c105d81..74e6ea6 100644 --- a/resources/views/personas/index.blade.php +++ b/resources/views/personas/index.blade.php @@ -1,51 +1,130 @@ - - - - Personas - - -

- Nueva persona -

- +
+ +
- - +
+ +
+
+ + + @include('compartido.mensajes') + @include('compartido.errores') + + +
+ + + + + + + + + + + + + + @foreach($persona as $per) + + + + + + + + @endforeach + +
IdApellidoNombreDNIAcciones
{{ $per->id_persona }}{{ $per->apellido }}{{ $per->nombre }}{{ $per->dni }} + + @if($per->deleted_at == null) +
+ @csrf + @method('DELETE') + + + + + + + + + + + + + +
+ @else +
+ @csrf + @method('PUT') + + + +
+ + @endif +
+
+ +
+
+ +@endsection +@push('styles') + +@endpush +@push('scripts') + +@endpush diff --git a/resources/views/personas/new.blade.php b/resources/views/personas/new.blade.php index 0523b99..88da5f7 100644 --- a/resources/views/personas/new.blade.php +++ b/resources/views/personas/new.blade.php @@ -1,37 +1,75 @@ - - - - - - Nueva persona - - +@extends('layouts.admin') +@section ('contenido') -

Nueva persona

+ +
+ +
+

Nueva Persona

+
+
+
+
-
- @csrf + + @include('compartido.mensajes') + @include('compartido.errores') +
+
+
-
-
- -
+ + + @csrf + + +
+ +
+ + + + +
-
-
- -
+
+ + +
-
-
- -
+
+ + +
+
-
- - Volver al listado -
+ + +
+
+ + +
+
+ + Salir +
+
- - \ No newline at end of file +@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/personas/show.blade.php b/resources/views/personas/show.blade.php index 9f73454..c9b322e 100644 --- a/resources/views/personas/show.blade.php +++ b/resources/views/personas/show.blade.php @@ -1,37 +1,34 @@ - - - - - - Ver persona - - +@extends('layouts.admin') +@section ('contenido') +
+
+

Ver Persona

+
+
+
+
+
+
+ + +
-

Ver persona

+
+ + +
+
+ + +
+
+ +
+
+ Salir +
+
-
-
- -
- -
-
- -
- -
-
- -
- -
- Volver al listado -
- - - +@endsection \ No newline at end of file