<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\DB;
use Exception;

class CiudadesController extends Controller
{
    /**
     * Obtiene el listado de ciudades desde el procedimiento almacenado
     * Migrado desde ObtenCiudades.php
     * 
     * @return JsonResponse
     */
    public function obtenerCiudades(): JsonResponse
    {
        try {
            // Ejecutar el procedimiento almacenado sapObtenListadoCiudadesxNombre
            $ciudades = DB::select('EXEC sapObtenListadoCiudadesxNombre');
            
            $response = [
                "tipo" => 0,
                "mensaje" => "OK",
                "data" => $ciudades
            ];
            
            return response()->json($response, 200);
            
        } catch (Exception $e) {
            $response = [
                "tipo" => 1,
                "mensaje" => "Error al obtener ciudades: " . $e->getMessage(),
                "data" => []
            ];
            
            return response()->json($response, 500);
        }
    }
    
    /**
     * Método alternativo usando Query Builder para mayor flexibilidad
     * 
     * @return JsonResponse
     */
    public function obtenerCiudadesAlternativo(): JsonResponse
    {
        try {
            // Alternativa usando Query Builder si no tienes procedimientos almacenados
            // Ajusta según tu estructura de tabla
            $ciudades = DB::table('ciudades')
                ->select('*')
                ->orderBy('nombre')
                ->get();
            
            $response = [
                "tipo" => 0,
                "mensaje" => "OK",
                "data" => $ciudades
            ];
            
            return response()->json($response, 200);
            
        } catch (Exception $e) {
            $response = [
                "tipo" => 1,
                "mensaje" => "Error al obtener ciudades: " . $e->getMessage(),
                "data" => []
            ];
            
            return response()->json($response, 500);
        }
    }
}
