<?php
require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/../auth.php';
requireLogin();

header('Content-Type: application/json');

$data = [];

// 1. OS por status
$sql = "SELECT status, COUNT(*) as total FROM ordens_servico GROUP BY status";
$stmt = $pdo->query($sql);
$data['os_por_status'] = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 2. OS por tipo (últimos 30 dias)
$sql = "SELECT tipo_os, COUNT(*) as total 
        FROM ordens_servico 
        WHERE data_abertura > DATE_SUB(NOW(), INTERVAL 30 DAY)
        GROUP BY tipo_os";
$stmt = $pdo->query($sql);
$data['os_por_tipo'] = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 3. Top 5 técnicos (últimos 3 meses)
$sql = "SELECT u.nome, COUNT(os.id) as total_os, 
        ROUND(AVG(CASE WHEN os.avaliacao_nota > 0 THEN os.avaliacao_nota ELSE NULL END), 1) as media_avaliacao
        FROM ordens_servico os
        LEFT JOIN usuarios u ON os.tecnico_id = u.id
        WHERE os.status = 'CONCLUIDA' 
        AND os.data_fechamento > DATE_SUB(NOW(), INTERVAL 3 MONTH)
        GROUP BY os.tecnico_id
        ORDER BY total_os DESC
        LIMIT 5";
$stmt = $pdo->query($sql);
$data['top_tecnicos'] = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 4. Clientes por cidade
$sql = "SELECT endereco_cidade, COUNT(*) as total 
        FROM clientes 
        WHERE ativo = 1 
        GROUP BY endereco_cidade";
$stmt = $pdo->query($sql);
$data['clientes_por_cidade'] = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 5. Materiais com estoque crítico (usando sua view)
$sql = "SELECT * FROM vw_estoque_alertas WHERE situacao IN ('ESTOQUE_BAIXO', 'SEM_ESTOQUE') LIMIT 10";
$stmt = $pdo->query($sql);
$data['alertas_estoque'] = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 6. Timeline de OS (últimos 7 dias)
$sql = "SELECT DATE(data_abertura) as data, 
        COUNT(*) as abertas,
        SUM(CASE WHEN status = 'CONCLUIDA' THEN 1 ELSE 0 END) as concluidas
        FROM ordens_servico 
        WHERE data_abertura > DATE_SUB(NOW(), INTERVAL 7 DAY)
        GROUP BY DATE(data_abertura)
        ORDER BY data ASC";
$stmt = $pdo->query($sql);
$data['timeline_os'] = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 7. Performance do atendimento (média de horas para concluir)
$sql = "SELECT AVG(TIMESTAMPDIFF(HOUR, data_abertura, data_fechamento)) as media_horas
        FROM ordens_servico 
        WHERE status = 'CONCLUIDA' 
        AND data_fechamento IS NOT NULL
        AND data_abertura > DATE_SUB(NOW(), INTERVAL 30 DAY)";
$stmt = $pdo->query($sql);
$data['tempo_medio'] = $stmt->fetch(PDO::FETCH_ASSOC);

echo json_encode($data);