Tul xxx Tul
User / IP
:
216.73.216.146
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
ventas
/
app
/
Http
/
Controllers
/
Viewing: ActividadController.php
<?php namespace App\Http\Controllers; use App\Models\Actividad; use App\Models\ActividadModulo; use App\Models\User; use Illuminate\Http\Request; class ActividadController extends Controller { /** * Listar todas las actividades */ public function index() { $actividades = Actividad::with('modulos')->get(); return view('actividades.index', compact('actividades')); } /** * Mostrar formulario de creación */ public function create() { $modulosDisponibles = $this->getModulosDisponibles(); return view('actividades.create', compact('modulosDisponibles')); } /** * Guardar nueva actividad */ public function store(Request $request) { $request->validate([ 'nombre' => 'required|string|max:100', 'slug' => 'required|string|max:50|unique:actividades', 'descripcion' => 'nullable|string|max:255', 'icono' => 'nullable|string|max:50', 'color' => 'nullable|string|max:20', 'modulos' => 'nullable|array' ]); $actividad = Actividad::create($request->only(['nombre', 'slug', 'descripcion', 'icono', 'color'])); // Guardar módulos permitidos if ($request->has('modulos')) { foreach ($request->modulos as $modulo => $permisos) { if (isset($permisos['activo']) && $permisos['activo']) { ActividadModulo::create([ 'actividad_id' => $actividad->id, 'modulo' => $modulo, 'lectura' => isset($permisos['lectura']), 'escritura' => isset($permisos['escritura']), 'eliminacion' => isset($permisos['eliminacion']) ]); } } } return redirect()->route('actividades.index') ->with('success', 'Actividad creada exitosamente'); } /** * Mostrar formulario de edición */ public function edit(Actividad $actividad) { $actividad->load('modulos'); $modulosDisponibles = $this->getModulosDisponibles(); $modulosActuales = $actividad->modulos->keyBy('modulo'); return view('actividades.edit', compact('actividad', 'modulosDisponibles', 'modulosActuales')); } /** * Actualizar actividad */ public function update(Request $request, Actividad $actividad) { $request->validate([ 'nombre' => 'required|string|max:100', 'slug' => 'required|string|max:50|unique:actividades,slug,' . $actividad->id, 'descripcion' => 'nullable|string|max:255', 'icono' => 'nullable|string|max:50', 'color' => 'nullable|string|max:20', 'modulos' => 'nullable|array' ]); $actividad->update($request->only(['nombre', 'slug', 'descripcion', 'icono', 'color', 'activo'])); // Actualizar módulos permitidos $actividad->modulos()->delete(); if ($request->has('modulos')) { foreach ($request->modulos as $modulo => $permisos) { if (isset($permisos['activo']) && $permisos['activo']) { ActividadModulo::create([ 'actividad_id' => $actividad->id, 'modulo' => $modulo, 'lectura' => isset($permisos['lectura']), 'escritura' => isset($permisos['escritura']), 'eliminacion' => isset($permisos['eliminacion']) ]); } } } return redirect()->route('actividades.index') ->with('success', 'Actividad actualizada exitosamente'); } /** * Eliminar actividad */ public function destroy(Actividad $actividad) { // Verificar que no haya usuarios asignados if ($actividad->users()->count() > 0) { return back()->with('error', 'No se puede eliminar la actividad porque tiene usuarios asignados'); } $actividad->delete(); return redirect()->route('actividades.index') ->with('success', 'Actividad eliminada exitosamente'); } /** * Asignar actividad a usuario (AJAX) */ public function asignarUsuario(Request $request) { $request->validate([ 'user_id' => 'required|exists:users,id', 'actividad_id' => 'nullable|exists:actividades,id' ]); $user = User::findOrFail($request->user_id); $user->actividad_id = $request->actividad_id; $user->save(); return response()->json([ 'success' => true, 'message' => 'Actividad asignada correctamente', 'actividad' => $user->actividad?->nombre ?? 'Sin actividad' ]); } /** * Obtener usuarios por actividad */ public function usuariosPorActividad(Actividad $actividad) { $usuarios = $actividad->users()->with('role')->get(); return response()->json([ 'success' => true, 'usuarios' => $usuarios ]); } /** * Lista de módulos disponibles en el sistema */ private function getModulosDisponibles(): array { return [ // Módulos principales 'ventas' => ['nombre' => 'Ventas', 'icono' => 'fa-cash-register', 'grupo' => 'Principal'], 'compras' => ['nombre' => 'Compras', 'icono' => 'fa-shopping-cart', 'grupo' => 'Principal'], 'inventario' => ['nombre' => 'Inventario', 'icono' => 'fa-boxes', 'grupo' => 'Principal'], 'productos' => ['nombre' => 'Productos', 'icono' => 'fa-box', 'grupo' => 'Principal'], 'clientes' => ['nombre' => 'Clientes', 'icono' => 'fa-users', 'grupo' => 'Principal'], 'proveedores' => ['nombre' => 'Proveedores', 'icono' => 'fa-truck', 'grupo' => 'Principal'], 'cotizaciones' => ['nombre' => 'Cotizaciones', 'icono' => 'fa-file-invoice', 'grupo' => 'Principal'], 'creditos' => ['nombre' => 'Créditos', 'icono' => 'fa-credit-card', 'grupo' => 'Principal'], 'cajas' => ['nombre' => 'Cajas Diarias', 'icono' => 'fa-cash-register', 'grupo' => 'Principal'], // Módulo Restaurante 'restaurante' => ['nombre' => 'Restaurante (Completo)', 'icono' => 'fa-utensils', 'grupo' => 'Restaurante'], 'mesas' => ['nombre' => 'Mesas', 'icono' => 'fa-chair', 'grupo' => 'Restaurante'], 'comandas' => ['nombre' => 'Comandas', 'icono' => 'fa-clipboard-list', 'grupo' => 'Restaurante'], 'cocina' => ['nombre' => 'Cocina', 'icono' => 'fa-fire', 'grupo' => 'Restaurante'], // Módulo Compraventa 'prestamos' => ['nombre' => 'Compraventa/Préstamos', 'icono' => 'fa-handshake', 'grupo' => 'Compraventa'], // Módulo Hotel 'hotel' => ['nombre' => 'Hotel (Completo)', 'icono' => 'fa-hotel', 'grupo' => 'Hotel'], 'habitaciones' => ['nombre' => 'Habitaciones', 'icono' => 'fa-bed', 'grupo' => 'Hotel'], 'huespedes' => ['nombre' => 'Huéspedes', 'icono' => 'fa-user-friends', 'grupo' => 'Hotel'], 'ocupaciones' => ['nombre' => 'Ocupaciones/Check-in', 'icono' => 'fa-door-open', 'grupo' => 'Hotel'], 'consumos' => ['nombre' => 'Consumos/Minibar', 'icono' => 'fa-wine-bottle', 'grupo' => 'Hotel'], // Módulo Nómina 'nomina' => ['nombre' => 'Nómina (Completo)', 'icono' => 'fa-money-check-alt', 'grupo' => 'Nómina'], 'empleados' => ['nombre' => 'Empleados', 'icono' => 'fa-id-card', 'grupo' => 'Nómina'], 'contratos' => ['nombre' => 'Contratos', 'icono' => 'fa-file-contract', 'grupo' => 'Nómina'], 'liquidaciones' => ['nombre' => 'Liquidaciones', 'icono' => 'fa-calculator', 'grupo' => 'Nómina'], 'novedades' => ['nombre' => 'Novedades', 'icono' => 'fa-clipboard-list', 'grupo' => 'Nómina'], // Módulo Contabilidad 'contabilidad' => ['nombre' => 'Contabilidad (Completo)', 'icono' => 'fa-book', 'grupo' => 'Contabilidad'], 'puc' => ['nombre' => 'Plan de Cuentas (PUC)', 'icono' => 'fa-sitemap', 'grupo' => 'Contabilidad'], 'movimientos' => ['nombre' => 'Movimientos Contables', 'icono' => 'fa-exchange-alt', 'grupo' => 'Contabilidad'], 'balance' => ['nombre' => 'Balance General', 'icono' => 'fa-balance-scale', 'grupo' => 'Contabilidad'], 'estado_resultados' => ['nombre' => 'Estado de Resultados', 'icono' => 'fa-chart-line', 'grupo' => 'Contabilidad'], 'flujo_efectivo' => ['nombre' => 'Flujo de Efectivo', 'icono' => 'fa-money-bill-wave', 'grupo' => 'Contabilidad'], // Reportes y Configuración 'reportes' => ['nombre' => 'Reportes', 'icono' => 'fa-chart-bar', 'grupo' => 'Sistema'], 'configuracion' => ['nombre' => 'Configuración', 'icono' => 'fa-cog', 'grupo' => 'Sistema'], 'usuarios' => ['nombre' => 'Usuarios', 'icono' => 'fa-user-cog', 'grupo' => 'Sistema'], 'dian' => ['nombre' => 'DIAN/Facturación', 'icono' => 'fa-file-invoice-dollar', 'grupo' => 'Sistema'], ]; } }
Coded With 💗 by
0x6ick