<?php
function carregarDadosCliente($conn, $clienteId, $tenant_id) {
    $sql = "SELECT * FROM clientes WHERE id = ? AND tenant_id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ii", $clienteId, $tenant_id);
    $stmt->execute();
    $resultado = $stmt->get_result();
    return $resultado->fetch_assoc();
}

function carregarLogsCliente($conn, $clienteId, $tenant_id) {
    $sqlLogs = "SELECT * FROM cliente_logs WHERE cliente_id = ? AND tenant_id = ? ORDER BY id DESC";
    $stmtLogs = $conn->prepare($sqlLogs);
    $stmtLogs->bind_param("is", $clienteId, $tenant_id);
    $stmtLogs->execute();
    return $stmtLogs->get_result()->fetch_all(MYSQLI_ASSOC);
}

function carregarProdutosCliente($conn, $clienteId, $tenant_id) {
    $sqlProdutos = "SELECT cp.*, lp.nome as nome_original, lp.descricao as descricao_original 
                   FROM cliente_produtos cp
                   LEFT JOIN lista_produtos lp ON cp.lista_produto_id = lp.id
                   WHERE cp.cliente_id = ? AND cp.tenant_id = ?
                   ORDER BY cp.data_cadastro DESC";
    $stmtProdutos = $conn->prepare($sqlProdutos);
    $stmtProdutos->bind_param("is", $clienteId, $tenant_id);
    $stmtProdutos->execute();
    return $stmtProdutos->get_result()->fetch_all(MYSQLI_ASSOC);
}

function carregarAtividadesCliente($conn, $clienteId, $tenant_id, $filtroStatus = 'todos') {
    $sqlAtividades = "SELECT *, 
                     CASE 
                       WHEN concluida = 1 THEN 'concluida'
                       WHEN data_agendada < NOW() THEN 'atrasada'
                       ELSE 'pendente'
                     END AS status
                     FROM atividades 
                     WHERE cliente_id = ? AND tenant_id = ?";

    if ($filtroStatus !== 'todos') {
        if ($filtroStatus === 'concluida') {
            $sqlAtividades .= " AND concluida = 1";
        } elseif ($filtroStatus === 'pendente') {
            $sqlAtividades .= " AND concluida = 0 AND data_agendada >= NOW()";
        } elseif ($filtroStatus === 'atrasada') {
            $sqlAtividades .= " AND concluida = 0 AND data_agendada < NOW()";
        }
    }

    $sqlAtividades .= " ORDER BY data_agendada ASC";
    $stmtAtividades = $conn->prepare($sqlAtividades);
    $stmtAtividades->bind_param("ii", $clienteId, $tenant_id);
    $stmtAtividades->execute();
    return $stmtAtividades->get_result()->fetch_all(MYSQLI_ASSOC);
}

function carregarArquivosCliente($conn, $clienteId) {
    $sqlArquivos = "SELECT * FROM cliente_arquivos WHERE cliente_id = ? ORDER BY data_upload DESC";
    $stmtArquivos = $conn->prepare($sqlArquivos);
    $stmtArquivos->bind_param("i", $clienteId);
    $stmtArquivos->execute();
    return $stmtArquivos->get_result()->fetch_all(MYSQLI_ASSOC);
}

function carregarFormularios($conn, $tenant_id) {
    $query = "SELECT id, nome, criado_em FROM formularios WHERE tenant_id = ? ORDER BY criado_em DESC";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $tenant_id);
    $stmt->execute();
    return $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
}

function carregarRespostasFormulario($conn, $clienteId) {
    $sqlRespostas = "SELECT rf.id, f.nome as formulario_nome, rf.data_resposta 
                    FROM respostas_formulario rf
                    JOIN formularios f ON rf.formulario_id = f.id
                    WHERE rf.cliente_id = ?";
    $stmtRespostas = $conn->prepare($sqlRespostas);
    $stmtRespostas->bind_param("i", $clienteId);
    $stmtRespostas->execute();
    return $stmtRespostas->get_result()->fetch_all(MYSQLI_ASSOC);
}

function carregarListaAtividades($conn, $tenant_id) {
    $sqlListaAtividades = "SELECT * FROM lista_atividades WHERE ativo = 1 AND tenant_id = ? ORDER BY nome";
    $stmtListaAtividades = $conn->prepare($sqlListaAtividades);
    $stmtListaAtividades->bind_param("i", $tenant_id);
    $stmtListaAtividades->execute();
    $resultado = $stmtListaAtividades->get_result();
    return $resultado ? $resultado->fetch_all(MYSQLI_ASSOC) : [];
}

function carregarListaProdutos($conn, $tenant_id) {
    $sqlListaProdutos = "SELECT * FROM lista_produtos WHERE ativo = 1 AND tenant_id = ? ORDER BY nome";
    $stmtListaProdutos = $conn->prepare($sqlListaProdutos);
    $stmtListaProdutos->bind_param("s", $tenant_id);
    $stmtListaProdutos->execute();
    $resultado = $stmtListaProdutos->get_result();
    return $resultado ? $resultado->fetch_all(MYSQLI_ASSOC) : [];
}

function calcularTotalProdutos($produtos) {
    $total = 0;
    foreach ($produtos as $produto) {
        $total += $produto['valor'];
    }
    return $total;
}

function calcularQuantidadeTotalProdutos($produtos) {
    $total = 0;
    foreach ($produtos as $produto) {
        $total += $produto['quantidade'];
    }
    return $total;
}

function formatarData($data) {
    if (!empty($data) && $data !== '0000-00-00 00:00:00') {
        try {
            $dt = new DateTime($data, new DateTimeZone('America/Sao_Paulo'));
            return $dt->format('d/m/Y H:i');
        } catch (Exception $e) {
            return '';
        }
    }
    return '';
}

function dataParaISO($data) {
    if (empty($data) || $data === '0000-00-00 00:00:00') return null;
    try {
        $dt = new DateTime($data, new DateTimeZone('America/Sao_Paulo'));
        return $dt->format('Y-m-d\TH:i:s');
    } catch (Exception $e) {
        return null;
    }
}