===============================================================
  GUIA DE DESPLIEGUE - REPORTA (MEDSURSA) en cPanel
===============================================================

REQUISITOS DEL HOSTING:
  - PHP 8.1 o superior (recomendado 8.2)
  - Extensiones PHP: gd, mbstring, openssl, pdo_mysql, fileinfo, exif, zip
  - MySQL 5.7+ o MariaDB 10.3+
  - Acceso SSH (recomendado) o Terminal de cPanel
  - Composer instalado en el servidor

===============================================================
PASO 1: PREPARAR ARCHIVOS
===============================================================

En tu computadora local:

  a) Comprimir TODO el proyecto reporta3 en un ZIP
     EXCEPTO estas carpetas/archivos:
       - /node_modules  (no existe, pero por si acaso)
       - /vendor        (se reinstala en el servidor)
       - /.env          (se crea nuevo en el servidor)
       - /test_gd.php   (archivo de test)

  b) El archivo database/reporta3_backup.sql ya esta incluido
     (es la exportacion de tu base de datos)

===============================================================
PASO 2: CREAR BASE DE DATOS EN cPanel
===============================================================

  a) Ir a cPanel > Bases de datos MySQL
  b) Crear nueva base de datos, ejemplo: tuusuario_reporta3
  c) Crear nuevo usuario de BD con contrasena segura
  d) Asignar el usuario a la base de datos con TODOS los privilegios
  e) Ir a cPanel > phpMyAdmin
  f) Seleccionar la base de datos creada
  g) Ir a "Importar" y subir el archivo: database/reporta3_backup.sql

  ANOTA ESTOS DATOS:
    - Nombre BD:    ________________________
    - Usuario BD:   ________________________
    - Password BD:  ________________________

===============================================================
PASO 3: SUBIR ARCHIVOS (Estructura en cPanel)
===============================================================

La estructura en el hosting debe quedar asi:

  /home/tuusuario/
  |
  |-- reporta3/             <-- Proyecto Laravel (FUERA de public_html)
  |   |-- app/
  |   |-- bootstrap/
  |   |-- config/
  |   |-- database/
  |   |-- resources/
  |   |-- routes/
  |   |-- storage/
  |   |-- vendor/            (se crea con composer install)
  |   |-- .env               (se crea en el paso 4)
  |   |-- artisan
  |   |-- composer.json
  |   +-- ...
  |
  |-- public_html/           <-- Solo el contenido de /public va aqui
      |-- .htaccess          (el que esta en public/)
      |-- index.php          (MODIFICADO - ver paso 3c)
      |-- robots.txt
      +-- storage/           (enlace simbolico - ver paso 5)

  PASOS:
  a) Subir el ZIP a /home/tuusuario/ via Administrador de Archivos
  b) Extraer el ZIP -> queda /home/tuusuario/reporta3/
  c) COPIAR todo el contenido de reporta3/public/ a public_html/
     (NO mover, COPIAR, para mantener referencia)
  d) Editar public_html/index.php y reemplazar su contenido con:

     ---- COPIAR DESDE AQUI ----
     <?php
     use Illuminate\Http\Request;
     define('LARAVEL_START', microtime(true));

     $projectPath = __DIR__ . '/../reporta3';

     if (file_exists($maintenance = $projectPath . '/storage/framework/maintenance.php')) {
         require $maintenance;
     }

     require $projectPath . '/vendor/autoload.php';

     (require_once $projectPath . '/bootstrap/app.php')
         ->handleRequest(Request::capture());
     ---- COPIAR HASTA AQUI ----

     NOTA: Si tu carpeta se llama diferente, cambia 'reporta3' en $projectPath

===============================================================
PASO 4: CONFIGURAR .env
===============================================================

  a) En la carpeta /home/tuusuario/reporta3/ crear archivo .env
  b) Copiar el contenido de .env.produccion (incluido en el proyecto)
  c) Editar estos valores:

     APP_URL=https://tudominio.com       <-- Tu dominio real
     DB_DATABASE=tuusuario_reporta3      <-- BD del paso 2
     DB_USERNAME=tuusuario_reportauser   <-- Usuario del paso 2
     DB_PASSWORD=tu_password_segura      <-- Password del paso 2

  d) Generar APP_KEY (ver paso 6)

===============================================================
PASO 5: COMANDOS SSH (Terminal de cPanel)
===============================================================

  Accede por SSH o usa Terminal de cPanel y ejecuta:

  # 1. Ir al directorio del proyecto
  cd ~/reporta3

  # 2. Instalar dependencias
  composer install --optimize-autoloader --no-dev

  # 3. Generar clave de aplicacion
  php artisan key:generate

  # 4. Crear enlace simbolico de storage
  # OPCION A (si funciona artisan storage:link):
  php artisan storage:link

  # OPCION B (si NO funciona, crear manualmente):
  ln -s /home/tuusuario/reporta3/storage/app/public /home/tuusuario/public_html/storage

  # 5. Permisos de carpetas
  chmod -R 775 storage
  chmod -R 775 bootstrap/cache

  # 6. Cachear configuracion para produccion
  php artisan config:cache
  php artisan route:cache
  php artisan view:cache

===============================================================
PASO 6: CONFIGURAR PHP EN cPanel
===============================================================

  a) Ir a cPanel > Seleccionar version de PHP (o MultiPHP Manager)
  b) Seleccionar PHP 8.2 para tu dominio
  c) Ir a cPanel > Extensiones PHP (o MultiPHP INI Editor)
  d) Asegurarse que estas extensiones estan HABILITADAS:
     [x] gd
     [x] mbstring
     [x] openssl
     [x] pdo_mysql
     [x] fileinfo
     [x] exif
     [x] zip

  e) En MultiPHP INI Editor, ajustar:
     upload_max_filesize = 10M
     post_max_size = 12M
     max_execution_time = 120
     memory_limit = 256M

===============================================================
PASO 7: VERIFICAR
===============================================================

  a) Visitar https://tudominio.com
     -> Debe mostrar el formulario de reporte publico

  b) Visitar https://tudominio.com/login
     -> Debe mostrar el login
     -> Ingresar con: usuario = admin / password = admin123

  c) Probar generar un PDF desde un reporte

===============================================================
SOLUCION DE PROBLEMAS COMUNES
===============================================================

ERROR: "500 Internal Server Error"
  -> Revisar permisos: chmod -R 775 storage bootstrap/cache
  -> Revisar .env existe y tiene APP_KEY
  -> Revisar logs: cat storage/logs/laravel.log

ERROR: "The stream or file could not be opened"
  -> chmod -R 775 storage/logs
  -> chown -R tuusuario:tuusuario storage

ERROR: "Class not found" o "Composer autoload"
  -> Ejecutar: composer dump-autoload
  -> Ejecutar: php artisan config:clear

ERROR: "SQLSTATE Connection refused"
  -> En cPanel MySQL el host es 'localhost', NO '127.0.0.1'
  -> Verificar nombre de BD, usuario y password en .env

ERROR: "GD extension required"
  -> Ir a cPanel > Seleccionar version PHP > Extensiones
  -> Habilitar extension 'gd'

ERROR: Imagenes/firmas no se ven
  -> Verificar enlace simbolico storage:
     ls -la ~/public_html/storage
  -> Debe apuntar a: /home/tuusuario/reporta3/storage/app/public
  -> Si no existe, crearlo manualmente (ver paso 5, opcion B)

ERROR: CSS/Estilos no cargan
  -> Verificar APP_URL en .env coincide con tu dominio
  -> Verificar que .htaccess esta en public_html/

===============================================================
CREDENCIALES POR DEFECTO
===============================================================

  Admin:       usuario = admin      / password = admin123
  Supervisor:  usuario = supervisor / password = super123

  ** IMPORTANTE: Cambiar estas contrasenas despues del primer login **

===============================================================
ESTRUCTURA DE ARCHIVOS FINAL EN cPanel
===============================================================

  /home/tuusuario/
  |-- reporta3/
  |   |-- app/
  |   |-- bootstrap/
  |   |-- config/
  |   |-- database/
  |   |-- resources/
  |   |-- routes/
  |   |-- storage/
  |   |   |-- app/public/        <-- Fotos y firmas aqui
  |   |   |-- framework/cache/
  |   |   |-- framework/views/
  |   |   +-- logs/
  |   |-- vendor/
  |   |-- .env
  |   |-- artisan
  |   +-- composer.json
  |
  |-- public_html/
      |-- .htaccess
      |-- index.php              <-- Modificado (apunta a ../reporta3)
      |-- robots.txt
      +-- storage -> ../reporta3/storage/app/public  (enlace simbolico)
