diff --git a/app/Http/Controllers/PersonaController.php b/app/Http/Controllers/PersonaController.php index d38ef55..d06586c 100644 --- a/app/Http/Controllers/PersonaController.php +++ b/app/Http/Controllers/PersonaController.php @@ -2,15 +2,77 @@ namespace App\Http\Controllers; +use App\Http\Requests\StorePeronaRequest; use Illuminate\Http\Request; +use Illuminate\Http\RedirectResponse; use App\Models\persona; +use App\Http\Requests\UpdatedPersonaRequest; +use App\Http\Requests\StorePersonaRequest; + + class PersonaController extends Controller { public function index(Request $request){ - $personas= persona::all(); + /*$personas= persona::all();*/ + $personas= persona::withTrashed()->get(); return view('persona.index', ["personas"=>$personas]); } -} + + + public function show($id){ + $personas = persona::findOrfail($id); + return view('persona.show', ["per"=>$personas]); + } + + public function destroy(Request $request, $id){ + $personas = persona::findOrfail($id); + $personas->delete(); + $request->session()->flash('mensaje-success', 'La persona fue eliminada.'); + return redirect('/persona'); + } + + public function create(){ + return view('persona.new'); + } + + public function store(StorePeronaRequest $request){ + + $personas = new Persona(); + $personas->fill([ + 'nombre' => $request->input('nombre'), + 'apellido' => $request->input('apellido'), + 'dni' => $request->input('dni'), + ]); + $personas->save(); + $request->session()->flash('mensaje-success', 'La persona fue agregada.'); + return redirect('/persona'); + + } + + public function edit($id){ + $personas = Persona::findOrfail($id); + return view('persona.edit', ["per"=>$personas]); + } + + public function update(UpdatedPersonaRequest $request, $id){ + $personas = Persona::findOrfail($id); + $personas->fill([ + 'nombre' => $request->input('nombre'), + 'apellido' => $request->input('apellido'), + 'dni' => $request->input('dni'), + ]); + $personas->update(); + $request->session()->flash('mensaje-success', 'La persona fue modificada.'); + return redirect('/persona'); + } + + public function restaurar(Request $request, $id){ + $personas = persona::withTrashed()->findOrfail($id); + $personas->restore(); + $request->session()->flash('mensaje-success', 'La persona fue restaurada.'); + return redirect('/persona'); + } +} \ No newline at end of file diff --git a/app/Http/Requests/StorePeronaRequest.php b/app/Http/Requests/StorePeronaRequest.php new file mode 100644 index 0000000..52d7baa --- /dev/null +++ b/app/Http/Requests/StorePeronaRequest.php @@ -0,0 +1,45 @@ +|string> + */ + public function rules(): array + { + return [ + 'apellido' => 'required|max:20', + 'nombre' => 'required|regex:/^[a-zA-ZáéíóúñÁÉÍÓÚ]+( [a-zA-ZáéíóúñÁÉÍÓÚ]+)*$/|max:20', + 'dni' => 'required|unique:personas,dni|numeric|digits_between:7,8', + ]; + } + + public function messages() { + + return [ + 'apellido.required' => 'el campo apellido debe ser requerido', + 'apellido.max' => 'el campo apellido debe contener maximo 20 caracteres', + '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', + 'dni.required' => 'el campo dni es requerido', + 'dni.numeric' => 'el campo dni solo debe contener numeros', + 'dni.digits_between:7,8' => 'el campo dni debe tener entre 7 y 8 caracteres', + 'dni.unique' => 'el campo dni no se puede repetir', + ]; + } +} diff --git a/app/Http/Requests/UpdatedPersonaRequest.php b/app/Http/Requests/UpdatedPersonaRequest.php new file mode 100644 index 0000000..65840ee --- /dev/null +++ b/app/Http/Requests/UpdatedPersonaRequest.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|numeric|unique:personas,dni,' . $this->route('personas') . ',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.regex' => 'el campo apellido solo debe contener letras', + 'apellido.required' => 'el campo apellido es requerido', + 'apellido.max' => 'el campo apellido debe contener un maximo de 20 caracteres', + 'dni.required' => 'el campo dni es requerido', + 'dni.numeric' => 'el campo dni solo debe contener numeros', + 'dni.unique' => 'ya existe una persona con este dni', + ]; + } +} diff --git a/app/Models/persona.php b/app/Models/persona.php index be09c2d..2c67d40 100644 --- a/app/Models/persona.php +++ b/app/Models/persona.php @@ -4,19 +4,21 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class persona extends Model { use HasFactory; + use SoftDeletes; protected $table = 'personas'; public $primaryKey = 'id_persona'; - public $timestamps = false; + public $timestamps = true; protected $fillable = [ 'apellido', 'nombre', - 'dni' + '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..fa600cc --- /dev/null +++ b/resources/views/layouts/admin.blade.php @@ -0,0 +1,126 @@ + + + + + + + + + +| Id | +Nombre | +Apellido | +DNI | +Acciones | +
|---|---|---|---|---|
| {{ $per->id_persona }} | +{{ $per->nombre }} | +{{ $per->apellido }} | +{{ $per->dni }} | ++ + @if($per->deleted_at == null) + + @else + + + @endif + | +