<?php
if (!defined('BASEPATH')) {
    http_response_code(403);
    die(json_encode(["success" => false, "message" => "Acceso directo no permitido"]));
}

switch ($tipo) {
    case 'getClientes':
        $sql = "SELECT * FROM clientes WHERE activo = 1 ORDER BY nombre ASC";
        $result = mysqli_query($conn, $sql);

        if ($result) {
            $clientes = [];
            while ($row = mysqli_fetch_assoc($result)) {
                $clientes[] = [
                    'id' => (int)$row['id'],
                    'nombre' => $row['nombre'],
                    'telefono' => $row['telefono'],
                    'email' => $row['email'],
                    'direccion' => $row['direccion']
                ];
            }
            sendResponse(true, "Clientes obtenidos", $clientes);
        } else {
            sendResponse(false, "Error al obtener clientes: " . mysqli_error($conn));
        }
        break;

    case 'getCliente':
        $id = isset($datapost['id']) ? (int)$datapost['id'] : 0;

        if ($id <= 0) {
            sendResponse(false, "ID de cliente no válido");
        }

        $sql = "SELECT * FROM clientes WHERE id = $id AND activo = 1";
        $result = mysqli_query($conn, $sql);

        if ($result && mysqli_num_rows($result) > 0) {
            $row = mysqli_fetch_assoc($result);
            $cliente = [
                'id' => (int)$row['id'],
                'nombre' => $row['nombre'],
                'telefono' => $row['telefono'],
                'email' => $row['email'],
                'direccion' => $row['direccion']
            ];
            sendResponse(true, "Cliente encontrado", $cliente);
        } else {
            sendResponse(false, "Cliente no encontrado");
        }
        break;

    case 'crearCliente':
        $nombre = isset($datapost['nombre']) ? mysqli_real_escape_string($conn, $datapost['nombre']) : '';
        $telefono = isset($datapost['telefono']) ? mysqli_real_escape_string($conn, $datapost['telefono']) : '';
        $email = isset($datapost['email']) ? mysqli_real_escape_string($conn, $datapost['email']) : '';
        $direccion = isset($datapost['direccion']) ? mysqli_real_escape_string($conn, $datapost['direccion']) : '';

        if (empty($nombre)) {
            sendResponse(false, "El nombre es requerido");
        }

        $sql = "INSERT INTO clientes (nombre, telefono, email, direccion)
                VALUES ('$nombre', '$telefono', '$email', '$direccion')";

        if (mysqli_query($conn, $sql)) {
            $nuevoId = mysqli_insert_id($conn);
            sendResponse(true, "Cliente creado correctamente", ['id' => $nuevoId]);
        } else {
            sendResponse(false, "Error al crear cliente: " . mysqli_error($conn));
        }
        break;

    case 'actualizarCliente':
        $id = isset($datapost['id']) ? (int)$datapost['id'] : 0;
        $nombre = isset($datapost['nombre']) ? mysqli_real_escape_string($conn, $datapost['nombre']) : '';
        $telefono = isset($datapost['telefono']) ? mysqli_real_escape_string($conn, $datapost['telefono']) : '';
        $email = isset($datapost['email']) ? mysqli_real_escape_string($conn, $datapost['email']) : '';
        $direccion = isset($datapost['direccion']) ? mysqli_real_escape_string($conn, $datapost['direccion']) : '';

        if ($id <= 0) {
            sendResponse(false, "ID de cliente no válido");
        }

        if (empty($nombre)) {
            sendResponse(false, "El nombre es requerido");
        }

        $sql = "UPDATE clientes SET
                nombre = '$nombre',
                telefono = '$telefono',
                email = '$email',
                direccion = '$direccion',
                updated_at = NOW()
                WHERE id = $id";

        if (mysqli_query($conn, $sql)) {
            sendResponse(true, "Cliente actualizado correctamente");
        } else {
            sendResponse(false, "Error al actualizar cliente: " . mysqli_error($conn));
        }
        break;

    case 'eliminarCliente':
        $id = isset($datapost['id']) ? (int)$datapost['id'] : 0;

        if ($id <= 0) {
            sendResponse(false, "ID de cliente no válido");
        }

        // Soft delete
        $sql = "UPDATE clientes SET activo = 0, updated_at = NOW() WHERE id = $id";

        if (mysqli_query($conn, $sql)) {
            sendResponse(true, "Cliente eliminado correctamente");
        } else {
            sendResponse(false, "Error al eliminar cliente: " . mysqli_error($conn));
        }
        break;

    case 'buscarClientes':
        $busqueda = isset($datapost['busqueda']) ? mysqli_real_escape_string($conn, $datapost['busqueda']) : '';

        if (empty($busqueda)) {
            sendResponse(false, "Término de búsqueda requerido");
        }

        $sql = "SELECT * FROM clientes
                WHERE activo = 1
                AND (nombre LIKE '%$busqueda%'
                     OR telefono LIKE '%$busqueda%'
                     OR email LIKE '%$busqueda%')
                ORDER BY nombre ASC
                LIMIT 20";
        $result = mysqli_query($conn, $sql);

        if ($result) {
            $clientes = [];
            while ($row = mysqli_fetch_assoc($result)) {
                $clientes[] = [
                    'id' => (int)$row['id'],
                    'nombre' => $row['nombre'],
                    'telefono' => $row['telefono'],
                    'email' => $row['email'],
                    'direccion' => $row['direccion']
                ];
            }
            sendResponse(true, "Clientes encontrados", $clientes);
        } else {
            sendResponse(false, "Error en la búsqueda: " . mysqli_error($conn));
        }
        break;

    default:
        sendResponse(false, "Operación no válida en Clientes");
        break;
}
