# Agentes SPI - Sistema de Pagos y Suscripciones

## Configuración del Proyecto

- **Ubicación:** `C:\laragon\www\spi`
- **URL:** http://localhost/spi/
- **Framework:** PHP MVC personalizado (sin Laravel)
- **Base de datos:** MariaDB/MySQL (ver `basedatos/db-spi-sp.sql`)
- **Autoload:** `config/autoload.php`

## Estructura del Proyecto

```
C:/laragon/www/spi/
├── public/index.php        # Entry point (router)
├── controllers/            # Controladores
├── models/                 # Modelos (interacción BD)
├── views/                  # Vistas Blade/HTML
├── services/               # Servicios (email, PDF)
├── config/                 # Configuración
│   ├── autoload.php        # Autoload de clases
│   └── env.php             # Variables de entorno
├── basedatos/              # Scripts SQL
├── uploads/                # Archivos subidos
└── docs/                   # Documentación
```

## Convenciones del Proyecto

### Rutas y Controladores
- **Formato URL:** `?controller=Nombre&action=metodo`
- **Ejemplo:** `?controller=PagoOperador&action=index`
- Los controladores se auto-cargan desde `controllers/`
- Los métodos públicos son acciones accesibles

### Modelos
- Ubicación: `models/*.php`
- Clase: `NombreModel` (ej: `PagoModel`)
- Conexión BD: Usar `Database::getInstance()->getConnection()`
- Métodos comunes: `getAll()`, `getById()`, `create()`, `update()`, `delete()`

### Vistas
- Ubicación: `views/*.php` o `views/carpeta/*.php`
- Incluir header/footer manualmente
- Usar `<?php` para código PHP

### Base de Datos
- Scripts SQL en `basedatos/db-spi-sp.sql`
- Verificar `config/env.php` para credenciales

## Comandos Útiles

### Verificar que el servidor está corriendo
```bash
curl -s -o /dev/null -w "%{http_code}" http://localhost/spi/
```

### Ver controladores disponibles
```bash
ls C:/laragon/www/spi/controllers/
```

### Ver modelos disponibles
```bash
ls C:/laragon/www/spi/models/
```

### Ver vistas disponibles
```bash
ls C:/laragon/www/spi/views/
```

### Importar base de datos
```bash
# Usar phpMyAdmin o CLI
mysql -u root -p < C:/laragon/www/spi/basedatos/db-spi-sp.sql
```

### Actualizar estructura de tablas (si es necesario)
Si hay cambios en la estructura de las tablas, ejecutar:
```bash
mysql -u root -p db-spi-sp < C:/laragon/www/spi/basedatos/update_suscripcion_estructura.sql
```

## Workflow para Modificaciones

1. **Leer el archivo relevante primero:**
   - Para pagos → `controllers/PagoOperadorController.php`, `models/PagoModel.php`
   - Para suscripciones → `controllers/SuscripcionController.php`, `models/SuscripcionModel.php`
   - Para usuarios → `controllers/UsuarioController.php`, `models/UsuarioModel.php`

2. **Verificar dependencias:**
   - ¿La tabla existe en la BD?
   - ¿El modelo tiene los campos necesarios?
   - ¿La vista existe?

3. **Implementar cambios:**
   - Modificar controlador si hay lógica
   - Modificar modelo si hay consulta BD
   - Modificar vista si hay presentación

4. **Verificar:**
   - Probar la funcionalidad en el navegador
   - Verificar que no haya errores en logs

## Áreas Principales

### Pagos (`controllers/PagoOperadorController.php`)
- Listar pagos
- Crear/editar pagos
- Detalles de pago
- Estados de pago

### Suscripciones (`controllers/SuscripcionController.php`)
- Gestión de planes (`tiposSuscripcion`)
- Gestión de suscripciones de operadores (`gestionar`)
- Asignar suscripción (`asignar`)
- Extender suscripción (`extender`)
- Renovar suscripción (`renovar`)
- Cancelar suscripción (`cancelar`)
- Cambiar estado (`cambiarEstado`)
- Ver detalles (`detalleSuscripcion`)
- Ver historial (`historial`)

### Suscripciones - Tablas BD

**Tabla `suscripcion`**
- Planes de suscripción (GRATUITA, MENSUAL, ANUAL)
- Campos: id, tipo, titulo, descripcion, codigo_descuento, fecha_limite_descuento, precio_sin_descuento, precio, num_gen_pagos, estado

**Tabla `suscripcion_operador`**
- Suscripciones activas de operadores
- Campos: id, id_suscripcion, id_operador, fh_inicio, fh_fin, estado, renovacion_automatica, comentarios, notas_admin, id_pago

**Tabla `pago_suscripcion`**
- Pagos de suscripciones
- Campos: id, id_operador, id_suscripcion, monto, metodo_pago, tipo_pago, fh_creacion, fh_procesamiento, id_archivo, id_codigo_descuento, descuento_aplicado, fh_pago, fh_confirmacion, observacion, estado

### Usuarios (`controllers/UsuarioController.php`)
- CRUD de usuarios
- Roles y permisos
- Perfiles

### Beneficiarios (`controllers/BeneficiarioController.php`)
- Gestión de beneficiarios
- Asociar a usuarios

## Notas Importantes

- Este proyecto usa un MVC casero, no Laravel
- No usar convenciones de Laravel aquí
- Seguir las convenciones PHP existentes
- Revisar `config/env.php` para configuración
- Los logs están en `logs/` si hay errores

> Nota: archivo revisado y actualizado automáticamente por agente.
