From d31e874447dc0b5f9443ad60485a0999f09cb62a Mon Sep 17 00:00:00 2001 From: Rubi Date: Thu, 27 Mar 2025 12:27:31 -0600 Subject: [PATCH 1/6] EXEL,PDF,AGREGAR (ICONOS) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ya estan funcionales los botones, solo al de pdf y exel faltan un pequeño ajuste --- app/Exports/tiposLicenciasExport.php | 35 +++++ .../Controllers/TiposLicenciasController.php | 17 +- .../exports/tiposLicencias-pdf.blade.php | 44 ++++++ resources/views/tiposLicencia.blade.php | 146 +++++++++--------- routes/web.php | 5 + 5 files changed, 175 insertions(+), 72 deletions(-) create mode 100644 app/Exports/tiposLicenciasExport.php create mode 100644 resources/views/exports/tiposLicencias-pdf.blade.php diff --git a/app/Exports/tiposLicenciasExport.php b/app/Exports/tiposLicenciasExport.php new file mode 100644 index 0000000..430504f --- /dev/null +++ b/app/Exports/tiposLicenciasExport.php @@ -0,0 +1,35 @@ +select('id', 'tipoLicencia') // Selecciona los campos que deseas exportar + ->get(); + } + + /** + * Método que define los encabezados de las columnas en el archivo Excel. + * + * @return array + */ + public function headings(): array + { + return [ + 'ID', // Encabezado para la columna ID + 'Tipo de licencia', // Encabezado para la columna Tipo de licencia + ]; + } +} diff --git a/app/Http/Controllers/TiposLicenciasController.php b/app/Http/Controllers/TiposLicenciasController.php index 1c63db7..dbe5238 100644 --- a/app/Http/Controllers/TiposLicenciasController.php +++ b/app/Http/Controllers/TiposLicenciasController.php @@ -3,6 +3,9 @@ namespace App\Http\Controllers; use App\Models\tiposLicencias; +use App\Exports\TiposLicenciasExport; +use PDF; +use Excel; use Illuminate\Http\Request; @@ -101,4 +104,16 @@ class TiposLicenciasController extends Controller $tipoLicencia->save(); return redirect()->route('tiposLicencias.index')->with('success', 'Tipo de licencia eliminado exitosamente.'); } -} + + public function exportExcel() + { + return Excel::download(new tiposLicenciasExport(), 'tiposLicencias.xlsx'); + } + + public function exportPDF() + { + $marcas = tiposLicencias::where('eliminado', 0)->get(); + $pdf = PDF::loadView('exports.tiposlicencias-pdf', ['tiposlicencias' => $marcas]); + return $pdf->download('tiposlicencias.pdf'); + } +} \ No newline at end of file diff --git a/resources/views/exports/tiposLicencias-pdf.blade.php b/resources/views/exports/tiposLicencias-pdf.blade.php new file mode 100644 index 0000000..1ef47fa --- /dev/null +++ b/resources/views/exports/tiposLicencias-pdf.blade.php @@ -0,0 +1,44 @@ + + + + Lista de tiposLicencias + + + +

Lista de tiposLicencias

+ + + + + + + + + @foreach($tiposlicencias as $tiposlicencias) + + + + + @endforeach + +
IDtipoLicencias
{{ $tiposlicencias->id }}{{ $tiposlicencias->tiposlicencias }}
+ + \ No newline at end of file diff --git a/resources/views/tiposLicencia.blade.php b/resources/views/tiposLicencia.blade.php index 612c4c3..be92bee 100644 --- a/resources/views/tiposLicencia.blade.php +++ b/resources/views/tiposLicencia.blade.php @@ -2,7 +2,7 @@ @section('content')
- + @if(session('success')) -@endsection - +@endsection \ No newline at end of file diff --git a/resources/views/usuarios.blade.php b/resources/views/usuarios.blade.php index efb4306..94b5232 100644 --- a/resources/views/usuarios.blade.php +++ b/resources/views/usuarios.blade.php @@ -76,15 +76,15 @@ - - - - - - - - - + + + + + + + + + @@ -93,22 +93,32 @@ @else - @foreach($usuarios as $usuario) + @foreach($usuarios as $index => $usuario) - + - - - - - + + + + +
IDNombreEmailApellidoPuestoCarreraTeléfonoEstadoAccionesNúmeroNombre Email Apellido Puesto Carrera Teléfono Estado Acciones
No hay usuarios registrados.
{{ $usuario->id }}{{ $index + 1 }} {{ $usuario->name }} {{ $usuario->email }}{{ $usuario->apellido }}{{ $usuario->puesto }}{{ $usuario->carrera }}{{ $usuario->telefono }} + {{ $usuario->email }} + + {{ $usuario->apellido }} + + {{ $usuario->puesto }} + + {{ $usuario->carrera }} + + {{ $usuario->telefono }} + @if($usuario->eliminado == 0) - - Activo + + Activo @else diff --git a/resources/views/usuariosCrearEditar.blade.php b/resources/views/usuariosCrearEditar.blade.php index d1826dd..2584cd8 100644 --- a/resources/views/usuariosCrearEditar.blade.php +++ b/resources/views/usuariosCrearEditar.blade.php @@ -34,48 +34,114 @@
- +
+
+ +
+ +
- +
+
+ +
+ +
- +
+
+ +
+ +
- +
+
+ +
+ +
- +
+
+ +
+ +
- +
+
+ +
+ +
- +
+
+ +
+ +
- +
+
+ +
+ +
- Cancelar + + Cancelar +
diff --git a/routes/web.php b/routes/web.php index 4a7bbe9..2c9fbe1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -47,17 +47,24 @@ use App\Http\Controllers\PrestamoController; Route::resource('capacidades', CapacidadController::class); - Route::resource('prestamos',PrestamoController::class); - Route::get('marcas/excel', [MarcaController::class, 'exportExcel'])->name('marcas.excel'); - Route::get('marcas/pdf', [MarcaController::class, 'exportPDF'])->name('marcas.pdf'); + + Route::get('/marcas/excel', [MarcaController::class, 'exportExcel'])->name('marcas.excel'); + Route::get('/marcas/pdf', [MarcaController::class, 'exportPDF'])->name('marcas.pdf'); + + // Primero las rutas de exportación (más específicas) + Route::get('/prestamos/excel', [PrestamoController::class, 'exportExcel'])->name('prestamos.excel'); + Route::get('/prestamos/pdf', [PrestamoController::class, 'exportPDF'])->name('prestamos.pdf'); + + // Después la ruta de recurso (más general) + Route::resource('prestamos', PrestamoController::class); Route::get('/docentes/export/{format}', [DocentesController::class, 'export'])->name('docentes.export'); Route::get('/docentes/{id}/toggle-status', [DocentesController::class, 'toggleStatus'])->name('docentes.toggle-status'); -Route::get('tiposLicencias/excel', [TiposLicenciasController::class, 'exportExcel'])->name('tiposLicencias.excel'); -Route::get('tiposLicencias/pdf', [TiposLicenciasController::class, 'exportPDF'])->name('tiposLicencias.pdf'); + Route::get('tiposLicencias/excel', [TiposLicenciasController::class, 'exportExcel'])->name('tiposLicencias.excel'); + Route::get('tiposLicencias/pdf', [TiposLicenciasController::class, 'exportPDF'])->name('tiposLicencias.pdf'); // Rutas protegidas que requieren autenticación From c9e44266f82c4f04859de01da3cea0ce0f8817f4 Mon Sep 17 00:00:00 2001 From: sergiomarquez778 Date: Thu, 27 Mar 2025 20:46:41 -0600 Subject: [PATCH 6/6] fulll ya quedo todo bien habia muchas correciones pero ya quedaron ahora necesito solo la paginaciones de las tablas --- app/Http/Controllers/usuariosController.php | 23 +++++++----- app/Models/User.php | 8 ++++- app/Models/puesto.php | 11 ++++++ ...2013_03_27_235747_create_puestos_table.php | 32 +++++++++++++++++ .../2014_10_12_000000_create_users_table.php | 4 ++- resources/views/marcas.blade.php | 27 +++++++++++--- resources/views/prestamos.blade.php | 36 +++++++++++++------ resources/views/usuarios.blade.php | 8 ++++- resources/views/usuariosCrearEditar.blade.php | 17 +++++---- routes/web.php | 4 +-- 10 files changed, 135 insertions(+), 35 deletions(-) create mode 100644 app/Models/puesto.php create mode 100644 database/migrations/2013_03_27_235747_create_puestos_table.php 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 +});