diff --git a/app/Http/Controllers/usuariosController.php b/app/Http/Controllers/usuariosController.php index 5fe3abf..0a332bf 100644 --- a/app/Http/Controllers/usuariosController.php +++ b/app/Http/Controllers/usuariosController.php @@ -7,6 +7,7 @@ use Illuminate\Http\Request; use App\Exports\UsuariosExport; use Maatwebsite\Excel\Facades\Excel; use PDF; // Asegúrate de incluir la clase PDF +use App\Models\Puesto; class usuariosController extends Controller { @@ -38,7 +39,8 @@ class usuariosController extends Controller */ public function create() { - return view('usuariosCrearEditar'); // Vista para crear usuario + $puestos = Puesto::all(); + return view('usuariosCrearEditar', ['usuario' => null, 'puestos' => $puestos]); } @@ -52,18 +54,18 @@ class usuariosController extends Controller 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'apellido' => 'required|string|max:255', - 'puesto' => 'required|string|max:255', + 'puesto_id' => 'required|exists:puestos,id', 'carrera' => 'required|string|max:255', 'telefono' => 'required|string|max:255', 'password' => 'required|string|min:8|confirmed', ]); - // Crear nuevo usuario + // Si la validación pasa, crea el usuario $usuario = new User(); $usuario->name = $request->name; $usuario->email = $request->email; $usuario->apellido = $request->apellido; - $usuario->puesto = $request->puesto; + $usuario->puesto_id = $request->puesto_id; $usuario->carrera = $request->carrera; $usuario->telefono = $request->telefono; $usuario->password = bcrypt($request->password); @@ -83,11 +85,14 @@ class usuariosController extends Controller /** * Show the form for editing the specified resource. */ - public function edit($id) + // ... existing code ... + public function edit($id) { - $usuario = User::findOrFail($id); - return view('usuariosCrearEditar', compact('usuario')); // Vista para editar usuario + $user = User::findOrFail($id); + $puestos = Puesto::all(); + return view('usuariosCrearEditar',['usuario' => $user, 'puestos' => $puestos]); // Asegúrate de que la clave sea 'usuario' } +// ... existing code ... /** @@ -100,7 +105,7 @@ class usuariosController extends Controller 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255', 'apellido' => 'required|string|max:255', - 'puesto' => 'required|string|max:255', + //'puesto_id' => 'required|exists:puesto_id', 'carrera' => 'required|string|max:255', 'telefono' => 'required|string|max:255', 'password' => 'nullable|string|min:8|confirmed', @@ -111,7 +116,7 @@ class usuariosController extends Controller $usuario->name = $request->name; $usuario->email = $request->email; $usuario->apellido = $request->apellido; - $usuario->puesto = $request->puesto; + $usuario->puesto_id = $request->puesto_id; $usuario->carrera = $request->carrera; $usuario->telefono = $request->telefono; diff --git a/app/Models/User.php b/app/Models/User.php index 4e5bc5f..fced612 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; +use Illuminate\Database\Eloquent\Relations\HasOne; class User extends Authenticatable { @@ -21,12 +22,13 @@ class User extends Authenticatable 'name', 'email', 'apellido', - 'puesto', + 'puesto_id', 'carrera', 'telefono', 'password', ]; + /** * The attributes that should be hidden for serialization. * @@ -45,4 +47,8 @@ class User extends Authenticatable protected $casts = [ 'email_verified_at' => 'datetime', ]; + + public function puesto():HasOne{ + return $this->hasOne(Puesto::class, 'id','puesto_id'); + } } diff --git a/app/Models/puesto.php b/app/Models/puesto.php new file mode 100644 index 0000000..70b90a4 --- /dev/null +++ b/app/Models/puesto.php @@ -0,0 +1,11 @@ +id(); + $table->string('nombre'); + $table->timestamps(); + }); + DB::table('puestos')->insert(['nombre'=> 'Administrativo']); + DB::table('puestos')->insert(['nombre'=> 'docente']); + DB::table('puestos')->insert(['nombre'=> 'coordinador']); + DB::table('puestos')->insert(['nombre'=> 'personal general']); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('puestos'); + } +}; diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index db1a412..89dba93 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -17,12 +17,14 @@ return new class extends Migration $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('apellido')->nullable(); - $table->string('puesto')->nullable(); + $table->unsignedBigInteger('puesto_id')->nullable(); $table->string('carrera')->nullable(); $table->string('telefono')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); + $table->foreign('puesto_id')->references('id')->on('puestos'); + }); DB::table('users')->insert([ 'name'=> 'Administrador', diff --git a/resources/views/marcas.blade.php b/resources/views/marcas.blade.php index b7bf6b8..1d2d295 100644 --- a/resources/views/marcas.blade.php +++ b/resources/views/marcas.blade.php @@ -75,16 +75,16 @@ - + - @foreach($marcas as $marca) + @foreach($marcas as $index => $marca) - +
IDNúmero Marca Estado Acciones
{{ $marca->id }}{{ $index + 1 }} {{ $marca->marca }} @@ -121,7 +121,7 @@
@csrf @method('DELETE') - @@ -149,5 +149,22 @@ }, 500); } }, 3000); + + function confirmarEliminacion(button) { + Swal.fire({ + title: '¿Estás seguro?', + text: "Esta acción no se puede deshacer", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Sí, eliminar', + cancelButtonText: 'Cancelar' + }).then((result) => { + if (result.isConfirmed) { + button.closest('form').submit(); + } + }); + } -@endsection \ No newline at end of file +@endsection diff --git a/resources/views/prestamos.blade.php b/resources/views/prestamos.blade.php index 6bac0e6..8b18c89 100644 --- a/resources/views/prestamos.blade.php +++ b/resources/views/prestamos.blade.php @@ -21,7 +21,6 @@

Gestión de Préstamos

-
@@ -37,12 +36,12 @@ title="Exportar a PDF"> - + - - + class="text-blue-500 hover:text-blue-600 transition-colors duration-200" + title="Agregar nuevo préstamo"> + +
@@ -76,7 +75,7 @@ - + @@ -90,10 +89,10 @@ - @foreach($prestamos as $prestamo) + @foreach($prestamos as $index => $prestamo)
IDNúmero Nombre Solicitante Destino Fecha y Hora Salida
- #{{ $prestamo->id }} + {{ $index + 1 }} @@ -107,7 +110,10 @@ {{ $usuario->apellido }} - {{ $usuario->puesto }} +
+ + {{ $usuario->puesto->nombre ?? 'Sin puesto asignado' }} +
{{ $usuario->carrera }} diff --git a/resources/views/usuariosCrearEditar.blade.php b/resources/views/usuariosCrearEditar.blade.php index 2584cd8..e01ada2 100644 --- a/resources/views/usuariosCrearEditar.blade.php +++ b/resources/views/usuariosCrearEditar.blade.php @@ -72,15 +72,20 @@
- +
- +
@@ -150,4 +155,4 @@ -@endsection \ No newline at end of file +@endsection diff --git a/routes/web.php b/routes/web.php index 2c9fbe1..ef8b954 100644 --- a/routes/web.php +++ b/routes/web.php @@ -78,7 +78,7 @@ use App\Http\Controllers\PrestamoController; Route::post('/usuarios/store', [usuariosController::class,'store'])->name('usuarios.store'); Route::get('/usuarios/edit/{id}', [usuariosController::class, 'edit'])->name('usuarios.edit'); - Route::put('/usuarios/update', [usuariosController::class,'update'])->name('usuarios.update'); + Route::put('/usuarios/{id}', [usuariosController::class, 'update'])->name('usuarios.update'); Route::delete('/usuarios/destroy/{id}', [usuariosController::class, 'destroy'])->name('usuarios.destroy'); Route::get('usuarios/excel', [usuariosController::class, 'exportExcel'])->name('usuarios.excel'); Route::get('usuarios/pdf', [usuariosController::class, 'exportPDF'])->name('usuarios.pdf'); @@ -86,4 +86,4 @@ use App\Http\Controllers\PrestamoController; Route::get('/home', [HomeController::class, 'index'])->name('home'); ////corerecion rubi -}); \ No newline at end of file +});