diff --git a/app/Http/Controllers/PersonaController.php b/app/Http/Controllers/PersonaController.php index aa2c63f..73d7dda 100644 --- a/app/Http/Controllers/PersonaController.php +++ b/app/Http/Controllers/PersonaController.php @@ -1,29 +1,72 @@ get(); return view('personas.index', compact('personas')); } + + public function show($id){ + $personas = PersonaModel::findOrfail($id); + return view('personas.show', ["per"=>$personas]); + } + + public function edit($id){ + $personas = PersonaModel::findOrfail($id); + return view('personas.edit', ["per"=>$personas]); + } + + public function update(Request $request, $id){ + $personas = PersonaModel::findOrfail($id); + + $personas->fill([ + 'nombre' => $request->input('nombre'), + 'apellido' => $request->input('apellido'), + 'dni' => $request->input('dni'), + ]); + + $personas->update(); + + return redirect('/personas'); + } + + public function destroy(Request $request, $id){ + $personas = PersonaModel::findOrfail($id); + $personas->delete(); + + return redirect('/personas'); + } + + public function create(){ + return view('personas.new'); + } + + public function store(Request $request){ + + $persona = new PersonaModel(); + + $persona->fill([ + 'nombre' => $request->input('nombre'), + 'apellido' => $request->input('apellido'), + 'dni' => $request->input('dni'), + ]); + + $persona->save(); + + return redirect('/personas'); + } + + public function restaurar(Request $request, $id){ + $personas = PersonaModel::withTrashed()->findOrfail($id); + $personas->restore(); + $request->session()->flash('mensaje-success', 'La persona fue restaurada.'); + return redirect('/personas'); + + } } - - - - /* $persona = Categoria::findOrFail(1); - $categorias = Categoria::where('id_categoria', 1)->get(); - $categorias = Categoria::where('nombre', 'Tecnología')->get(); - $categorias = Categoria::where('nombre', 'like', '%tec%')->get(); - $categorias = Categoria::orderBy('nombre', 'asc')->get(); - $categorias = Categoria::first(); - $categorias = Categoria::last(); - Categoria::count();*/ - - - diff --git a/app/Http/Requests/StorePersonaRequest.php b/app/Http/Requests/StorePersonaRequest.php new file mode 100644 index 0000000..194b69d --- /dev/null +++ b/app/Http/Requests/StorePersonaRequest.php @@ -0,0 +1,28 @@ +|string> + */ + public function rules(): array + { + return [ + // + ]; + } +} diff --git a/app/Http/Requests/UdatedPersonaRequest.php b/app/Http/Requests/UdatedPersonaRequest.php new file mode 100644 index 0000000..e68f65e --- /dev/null +++ b/app/Http/Requests/UdatedPersonaRequest.php @@ -0,0 +1,40 @@ +|string> + */ + public function rules(): array + { + return [ + 'nombre' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20|unique:personas,nombre,' . $this->route('persona') . ',id_persona', + 'descripcion' => '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 20 caracteres', + 'nombre.unique' => 'ya existe una persona con este nombre', + 'descripcion' => 'el campo descripcion es requerido' + ]; + } +} diff --git a/app/Models/PersonaModel.php b/app/Models/PersonaModel.php index f8d97f6..1b82381 100644 --- a/app/Models/PersonaModel.php +++ b/app/Models/PersonaModel.php @@ -4,12 +4,21 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; - +use Illuminate\Database\Eloquent\SoftDeletes; class PersonaModel extends Model { + use HasFactory; + use SoftDeletes; protected $table = 'persona'; // nombre de la tabla protected $primaryKey = 'id_persona'; // clave primaria - public $timestamps = false; + public $timestamps = true; + +protected $fillable = [ + 'nombre', + 'apellido', + 'dni', + + ]; } diff --git a/resources/views/compartido/errores.blade.php b/resources/views/compartido/errores.blade.php new file mode 100644 index 0000000..c203932 --- /dev/null +++ b/resources/views/compartido/errores.blade.php @@ -0,0 +1,9 @@ +@if ($errors->any()) +
+ +
+@endif 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..312520c --- /dev/null +++ b/resources/views/layouts/admin.blade.php @@ -0,0 +1,126 @@ + + + + + + + + + + @yield('title','Sistema Taller') + + + + + + + + + + + @stack('styles') + + + + + + + + + + +
+ + @yield('contenido') +
+ + + + + + + + + + + + + + + + + + + + + @stack('scripts') + + diff --git a/resources/views/personas/edit.blade.php b/resources/views/personas/edit.blade.php new file mode 100644 index 0000000..1857d43 --- /dev/null +++ b/resources/views/personas/edit.blade.php @@ -0,0 +1,86 @@ +@extends('layouts.admin') +@section('contenido') + + +
+ +
+

Editar Persona

+
+
+
+
+ + + @include('compartido.mensajes') + @include('compartido.errores') +
+
+
+ + +
+ @csrf + @method('PUT') + + +
+ + +
+ + + + +
+ + + + + +
+ + + + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + Salir +
+
+
+ +@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/personas/editPlano.blade.php b/resources/views/personas/editPlano.blade.php new file mode 100644 index 0000000..6ab6b8c --- /dev/null +++ b/resources/views/personas/editPlano.blade.php @@ -0,0 +1,41 @@ + + + + + + Editar Persona + + + +

Editar Persona

+ +
+ @csrf + @method('PUT') + +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + Volver al listado +
+
+ + + diff --git a/resources/views/personas/index.blade.php b/resources/views/personas/index.blade.php index d740dc3..a022084 100644 --- a/resources/views/personas/index.blade.php +++ b/resources/views/personas/index.blade.php @@ -1,18 +1,130 @@ - - - - Persona - - - - - +@extends('layouts.admin') +@section('contenido') + + + +
+ +
+

Listado de Personas

+
+
+ +
+
+ + + Nuevo + +
+
+ +
+ +
+
+ + + @include('compartido.mensajes') + @include('compartido.errores') + + +
+ + + + + + + + + + + + + + @foreach($personas as $per) + + + + + + + + @endforeach + +
IdNombreApellidodniAcciones
{{ $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/indexPlano.blade.php b/resources/views/personas/indexPlano.blade.php new file mode 100644 index 0000000..a205e60 --- /dev/null +++ b/resources/views/personas/indexPlano.blade.php @@ -0,0 +1,52 @@ + + + + Personas + + +

+ Nueva persona +

+ + + + diff --git a/resources/views/personas/new.blade.php b/resources/views/personas/new.blade.php new file mode 100644 index 0000000..daa67d6 --- /dev/null +++ b/resources/views/personas/new.blade.php @@ -0,0 +1,81 @@ +@extends('layouts.admin') +@section ('contenido') + + +
+ +
+

Nueva Persona

+
+
+
+
+ + + @include('compartido.mensajes') + @include('compartido.errores') +
+
+
+ + +
+ @csrf + + +
+ +
+ + + + +
+ + + + +
+ + + + +
+ +
+ + +
+
+ + + +
+
+ + +
+
+ + Salir +
+
+
+ +@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/personas/newPlano.blade.php b/resources/views/personas/newPlano.blade.php new file mode 100644 index 0000000..8a2d7bc --- /dev/null +++ b/resources/views/personas/newPlano.blade.php @@ -0,0 +1,40 @@ + + + + + + Nueva Persona + + + +

Nueva Persona

+ +
+ @csrf + +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ + Volver al listado +
+
+ + + \ No newline at end of file diff --git a/resources/views/personas/show.blade.php b/resources/views/personas/show.blade.php new file mode 100644 index 0000000..778ac41 --- /dev/null +++ b/resources/views/personas/show.blade.php @@ -0,0 +1,34 @@ +@extends('layouts.admin') +@section ('contenido') +
+
+

Ver Persona

+
+
+
+
+ +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ Salir +
+
+ +@endsection \ No newline at end of file diff --git a/resources/views/personas/showPlano.blade.php b/resources/views/personas/showPlano.blade.php new file mode 100644 index 0000000..bedfc4b --- /dev/null +++ b/resources/views/personas/showPlano.blade.php @@ -0,0 +1,36 @@ + + + + + + + Ver persona + + + +

Detalle de la persona

+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ + + + Volver al listado + + + + + + diff --git a/routes/web.php b/routes/web.php index 30ebefc..2dcdbfe 100644 --- a/routes/web.php +++ b/routes/web.php @@ -20,4 +20,14 @@ Route::get('/', function () { return view('welcome'); }); -Route::get('persona', [PersonaController::class, 'index'])->name('persona.index'); +/*Route::get('persona', [PersonaController::class, 'index'])->name('personas.index'); +Route::get('persona/create', [PersonaController::class, 'create'])->name('personas.create'); +Route::get('persona/{persona}', [PersonaController::class, 'show'])->name('personas.show'); +Route::get('persona/{persona}/edit', [PersonaController::class, 'edit'])->name('personas.edit'); +Route::put('persona/{persona}', [PersonaController::class, 'update'])->name('personas.update'); +Route::delete('persona/{persona}', [PersonaController::class, 'destroy'])->name('personas.destroy'); +Route::post('persona', [PersonaController::class, 'store'])->name('personas.store');*/ +Route::put('personas/restaurar/{persona}', [PersonaController::class, 'restaurar'])->name('personas.restaurar'); +Route::resource('personas', PersonaController::class); + +