# ==============================================================================
#  CONFIGURACION PASO A PASO EN CPANEL  (Farmater API Laravel 10 + PHP 8.2)
# ==============================================================================
#
# El usuario describe DOS ESCENARIOS POSIBLES. Aplica el que corresponda:
#
# -----------------------------------------------------------------------------
#  ESCENARIO 1  (REALMENTE TIENES AHORA)
#  Laravel en SUBCARPETA del MISMO dominio que React
# -----------------------------------------------------------------------------
#  Estructura en public_html/
#     public_html/
#       ├── index.html            REACT SPA  (ecommerce.farmaterventas.com)
#       ├── assets/               React build
#       ├── .htaccess             Usa "public_html_React_htaccess.txt" 👈
#       │
#       └── api/                  CARPETA LARAVEL COMPLETA 👈
#           ├── artisan
#           ├── .env              (edita variables al final de este documento)
#           ├── index.php         (NUESTRO front controller, no public/index.php)
#           ├── .htaccess         Renombra: api_subcarpeta.htaccess -> .htaccess
#           ├── .user.ini         SUBE este archivo tambien
#           ├── public/
#           ├── vendor/  app/  bootstrap/  config/  routes/  storage/ ...
#
#  URL RESULTANTE:
#     🌐 https://ecommerce.farmaterventas.com/            REACT
#     🌐 https://ecommerce.farmaterventas.com/api/users/ingresar   LARAVEL
#
# -----------------------------------------------------------------------------
#  ESCENARIO 2  (SI CREAS SUBDOMINIO)
#  api.ecommerce.farmaterventas.com  con servicios en /api/...
# -----------------------------------------------------------------------------
#  a) En cPanel -> Dominios / Subdominios -> Crear subdominio:
#     Nombre:       api
#     Dominio:      farmaterventas.com
#     DocumentRoot: elige entre estas 2 opciones:
#        OPCION 2A) /api.ecommerce.farmaterventas.com/   (Laravel completo alli)
#                   => usa subdomain_root.htaccess renombrado a .htaccess
#        OPCION 2B) /api.ecommerce.farmaterventas.com/public/ (MAS SEGURO)
#                   => DocumentRoot APUNTA DIRECTO a /public de Laravel
#                      usa el public/.htaccess estandar + ROUTE_API_PREFIX=api
#
#  b) Sube todo el codigo Laravel a la carpeta que corresponda
#  c) Renombra el .htaccess de plantilla correcto segun la opcion
#  d) Edita .env ->  ROUTE_API_PREFIX=api  ;  APP_URL=https://api.ecommerce.farmaterventas.com
#
#  URL RESULTANTE:
#     🌐 https://api.ecommerce.farmaterventas.com/api/users/ingresar   ✅
#     🌐 https://api.ecommerce.farmaterventas.com/api/products/...     ✅
# ==============================================================================


# ==============================================================================
#  🚨 1. PASOS OBLIGATORIOS ANTES DE SUBIR (cualquier escenario)
# ==============================================================================

1)  MultiPHP Manager (cPanel)
    Ir a:  cPanel -> Software -> MultiPHP Manager
    Seleccionar:
      - El dominio principal:          ecommerce.farmaterventas.com        -> PHP 8.2
      - El subdominio (si lo creas):   api.ecommerce.farmaterventas.com    -> PHP 8.2
      - Marcar tambien la subcarpeta api si aparece (no siempre aparece).

    Si tu cPanel NO Tiene MultiPHP Manager, entonces el archivo .htaccess ya
    incluye 4 handlers distintos (ea-php82 / lsphp / fcgid / php-fpm) para que
    uno de ellos SIEMPRE funcione.

2)  Limpiar cache LiteSpeed / Cloudflare (si lo tienes)
    cPanel -> LiteSpeed Web Cache -> Flush All / Purge All
    Porque LiteSpeed cachea .htaccess y cambios no se ven hasta purgar.

3)  Permisos de archivos (cPanel -> File Manager -> clic derecho -> Change Permissions)
    Carpetas:     755   (rwx r-x r-x)
    Archivos .php:  644   (rw- r-- r--)
    Archivos .env:  600   (rw- --- ---)   <- Muy importante, nadie debe leerlo
    storage/:        777 temporalmente si te marca error de escritura, luego 755
    bootstrap/cache/: 775 o 755

4)  Base de datos (si la BD no está en el hosting):
    Importa el SQL desde phpMyAdmin y verifica:
    DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD en el .env
    coincidan con las credenciales REALES de la BD del hosting.
    (Normalmente el hosting no permite localhost remoto; verifica Remote MySQL)


# ==============================================================================
#  🚨 2. PASOS ESPECIFICOS POR ESCENARIO
# ==============================================================================

# -----------------------------------------------------------------------------
#  ESCENARIO 1 - SUBCARPETA /api/ (el que usas AHORA sin subdominio)
# -----------------------------------------------------------------------------
Acciones en:  public_html/ (carpeta raiz de ecommerce.farmaterventas.com)

  a) Renombra o crea el .htaccess de React
     ARCHIVO:  public_html_React_htaccess.txt
     DESTINO:  public_html/.htaccess
     (Borra el .htaccess que existia si ya no te sirve)

  b) Sube TODA la carpeta del proyecto Laravel como  public_html/api/
     (O sea, el contenido de app_api_farmater_new/  -> sube a api/ )

  c) Dentro de public_html/api/   renombra:
     api_subcarpeta.htaccess   ->   .htaccess

  d) Sube tambien:
     .user.ini     ->    public_html/api/.user.ini

  e) EDITA el archivo  public_html/api/.env  para que quede ASI:
-------------------------------------------------------------------
  APP_NAME=FarmaterApi
  APP_ENV=production
  APP_KEY=base64:bEF2ubSXgGx05XtvJ8CpnxpvQEt2p35TAqvkjeJep6g=
  APP_DEBUG=false                             <- PONER EN false
  APP_URL=https://ecommerce.farmaterventas.com/api

  ROUTE_API_PREFIX=                           <- VACIO, SIN NADA (IMPORTANTE)

  LOG_CHANNEL=stack
  DB_CONNECTION=mysql
  DB_HOST=localhost                           <- o el host que te de cPanel
  DB_PORT=3306
  DB_DATABASE=ventasfa_web                    <- nombre real de tu BD en hosting
  DB_USERNAME=tu_usuario_bd                   <- tu usuario cPanel + BD
  DB_PASSWORD=tu_contrasena_bd                <- contrasena real BD
  (y el resto igual que el .env original)
-------------------------------------------------------------------

  f) Corre OPTIMIZACION DE LARAVEL en el hosting (si tienes SSH):
       cd public_html/api
       php artisan config:cache
       php artisan route:cache
       php artisan view:clear
     Si NO TIENES SSH, la proxima seccion te dice como simularlo via URL.


# -----------------------------------------------------------------------------
#  ESCENARIO 2 - SUBDOMINIO  api.ecommerce.farmaterventas.com  +  /api/...
# -----------------------------------------------------------------------------
  a) Crear subdominio en cPanel
     Nombre:         api
     Dominio padre:  farmaterventas.com
     Document root:
         OPCION 2A (sencilla, no tienes que mover archivos):
             DocumentRoot:  /home/TU_USUARIO/api.ecommerce.farmaterventas.com/
             (Sube TODO el contenido de app_api_farmater_new/ a esa carpeta)
             Renombra:   subdomain_root.htaccess  ->  .htaccess

         OPCION 2B (MAS SEGURA, RECOMENDADA):
             DocumentRoot:  /home/TU_USUARIO/api.ecommerce.farmaterventas.com/public
             (Sube TODO el proyecto Laravel igual, pero el DocumentRoot de Apache
              apunta DIRECTAMENTE a la subcarpeta /public)
             Renombra:   public/.htaccess del proyecto ->  public/.htaccess (ya esta)
             No necesitas subdomain_root.htaccess en este caso.

  b) .env  (para CUALQUIERA de las 2 opciones arriba):
-------------------------------------------------------------------
  APP_URL=https://api.ecommerce.farmaterventas.com
  ROUTE_API_PREFIX=api                       <- CON 'api' (importante)
  APP_DEBUG=false
  DB_* = credenciales REALES del hosting
-------------------------------------------------------------------

  c) Sube el archivo diagnostico_api.php a la raiz del subdominio para testear.


# ==============================================================================
#  🚨 3. DIAGNOSTICO RAPIDO  (si te sigue descargando archivo PHP o 404)
# ==============================================================================

Sube temporalmente el archivo  diagnostico_api.php  a:
   Escenario 1:  public_html/api/diagnostico_api.php
   Escenario 2:  raiz del subdominio  api.ecommerce/diagnostico_api.php

Abre en el navegador:
   https://ecommerce.farmaterventas.com/api/diagnostico_api.php
   o
   https://api.ecommerce.farmaterventas.com/diagnostico_api.php

Si el archivo SE DESCARGA (no se ve texto), entonces:
   -> Abre un ticket a soporte del hosting y pegueles esta linea:
      "Por favor, configuren MultiPHP 8.2 para que ejecute PHP dentro de la
       carpeta  public_html/api/  y no descargue los archivos .php.
       Creo que falta configurar el handler ea-php82 para la subcarpeta."

Si ves una pagina con informacion de PHP 8.2, entonces ya PHP esta corriendo.
Borra el archivo diagnostico_api.php despues de probar (por seguridad).


# ==============================================================================
#  🚨 4. Limpiar cache de Laravel SIN SSH
# ==============================================================================
Sube un archivo TEMPORAL  limpiar_cache.php  en la carpeta api/:
-------------------------------------------------------------------
<?php
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$kernel->call('config:clear');
$kernel->call('route:clear');
$kernel->call('view:clear');
$kernel->call('cache:clear');
echo "Cache borrada OK - BORRA este archivo ahora por seguridad";
-------------------------------------------------------------------
Abre:  ecommerce.farmaterventas.com/api/limpiar_cache.php
Luego BORRA el archivo limpiar_cache.php  (MUY IMPORTANTE).


# ==============================================================================
#  🚨 5. PROBAR QUE LA API FUNCIONA
# ==============================================================================
Abre en Postman (o navegador):

Escenario 1 (subcarpeta):
   GET   https://ecommerce.farmaterventas.com/api/products-api
   POST  https://ecommerce.farmaterventas.com/api/ingresar
         body JSON: { "email": "tu@correo.com", "password": "tuclave" }

Escenario 2 (subdominio):
   GET   https://api.ecommerce.farmaterventas.com/api/products-api
   POST  https://api.ecommerce.farmaterventas.com/api/ingresar

Si te da 401 / 403 / lo que sea PERO JSON, ya esta OK.
Si te da HTML / descarga / 500 blanco -> revisa handlers PHP o .env

Ultimo: no te olvides de cambiar el  "*"  en  Access-Control-Allow-Origin
por tu dominio React real:
   Header always set Access-Control-Allow-Origin "https://ecommerce.farmaterventas.com"
(en el .htaccess de la carpeta api/, o del subdominio, segun el caso).
