Skip to main content

Guía para Agregar Ciudades de Curaçao en Producción

Esta guía explica cómo agregar todas las ciudades de Curaçao de forma segura en el entorno de producción.

✅ Características de Seguridad

El comando cities:add-curacao está diseñado para ser 100% seguro en producción:
  • No elimina datos: Solo agrega ciudades, nunca borra ni modifica datos existentes
  • Idempotente: Puede ejecutarse múltiples veces sin problemas
  • Transaccional: Usa transacciones de base de datos (si hay error, se revierte todo)
  • Verifica duplicados: Comprueba si las ciudades ya existen antes de agregarlas
  • Modo dry-run: Permite ver qué se agregaría sin hacer cambios reales

📋 Pre-requisitos

  1. Asegúrate de que el país Curaçao existe en la tabla countries
    • Código ISO2: CW
    • Si no existe, ejecuta primero: php artisan db:seed --class=CountriesSeeder
  2. Haz una copia de seguridad de la base de datos (recomendado pero no crítico, ya que solo agregamos datos):

🚀 Proceso de Despliegue

Paso 1: Modo Dry-Run (Recomendado)

Primero, ejecuta el comando en modo dry-run para ver qué ciudades se agregarían:
Esto mostrará:
  • Qué país se encontró
  • Cuántas ciudades ya existen
  • Qué ciudades se agregarían
  • NO realizará ningún cambio en la base de datos

Paso 2: Ejecutar en Producción

Si el dry-run se ve bien, ejecuta el comando sin el flag --dry-run:
El comando:
  1. Buscará el país Curaçao (CW)
  2. Verificará qué ciudades ya existen
  3. Mostrará las ciudades que se agregarán
  4. Pedirá confirmación antes de proceder
  5. Agregará solo las ciudades que no existen
  6. Mostrará un resumen de lo agregado

Paso 3: Verificación

Verifica que las ciudades se agregaron correctamente:
O verifica en el checkout:
  1. Ve a cualquier formulario de checkout
  2. Selecciona el país “Curaçao”
  3. Verifica que aparezcan las ciudades (Willemstad, Bandariba, etc.)

📊 Ciudades que se Agregan

El comando agrega las siguientes 24 ciudades principales de Curaçao:
  1. Willemstad (Capital)
  2. Bandariba
  3. Bandabou
  4. Sint Michiel
  5. St. Michiel
  6. Santa Rosa
  7. Sint Michiel Liber
  8. Brievengat
  9. Barber
  10. Dorp Soto
  11. Otrabanda
  12. Sabana Westpunt
  13. Westpunt
  14. Lagun
  15. Tera Kora
  16. Nieuwpoort
  17. Playa Kanoa
  18. Playa Kalki
  19. Boca San Pedro
  20. Rincon
  21. Dorp Sint Willebrordus
  22. Groot Sint Joris
  23. Sint Joris
  24. Klein Sint Joris

🔄 Ejecutar Múltiples Veces

El comando es completamente seguro para ejecutarse múltiples veces. Si una ciudad ya existe, simplemente la saltará y continuará con las demás.

⚠️ Troubleshooting

Error: “Curaçao (CW) not found in countries table”

Solución: Ejecuta primero el seeder de países:

Error de permisos de base de datos

Solución: Verifica que el usuario de la base de datos tenga permisos de INSERT en la tabla cities.

Las ciudades no aparecen en el checkout

Solución:
  1. Verifica que el endpoint /api/get-states?country=CW devuelva las ciudades
  2. Limpia la caché si es necesario: php artisan cache:clear
  3. Verifica que el código JavaScript esté cargando las ciudades correctamente

📝 Notas Adicionales

  • El CSV cities_202505192231.csv ya ha sido actualizado con estas ciudades
  • Si ejecutas el seeder completo de ciudades (CitiesSeeder), estas ciudades también se incluirán
  • El comando usa transacciones, por lo que si hay algún error, todos los cambios se revierten automáticamente

🔗 Archivos Relacionados

  • Comando: app/Console/Commands/AddWillemstadCity.php
  • CSV: cities_202505192231.csv
  • Modelo: app/Models/Cities.php
  • Endpoint API: routes/web.php (línea 44: /api/get-states)