<?php
require_once '../5_config/config.php';
$usuario = verificarAuth();
$db = getDB();
$perfil = $usuario['perfil'];

if (!temPermissao('editar', $perfil)) {
    die('Acesso negado');
}

// Receber filtros
$unidade_id = intval($_GET['unidade_id'] ?? $_POST['unidade_id'] ?? 0);
$familia = limpar($_GET['familia'] ?? $_POST['familia'] ?? '');
$cat_risco = limpar($_GET['cat_risco'] ?? $_POST['cat_risco'] ?? '');
$status_filtro = limpar($_GET['status'] ?? $_POST['status'] ?? '');
$nome_equipamento = limpar($_GET['nome_equipamento'] ?? $_POST['nome_equipamento'] ?? '');

if ($unidade_id > 0 && !temAcessoUnidade($unidade_id, $usuario['id'], $perfil)) {
    die('Acesso negado a esta unidade');
}

// Buscar informações da unidade
$unidade_nome = 'Todas as unidades';
$unidade_codigo = '';
if ($unidade_id > 0) {
    $stmt_u = $db->prepare("SELECT codigo, nome FROM unidades WHERE id = ?");
    $stmt_u->execute([$unidade_id]);
    $u = $stmt_u->fetch();
    if ($u) {
        $unidade_nome = $u['nome'];
        $unidade_codigo = $u['codigo'];
    }
}

// Construir query com filtros
$where = ['1=1'];
$params = [];

if ($unidade_id > 0) {
    $where[] = 'e.unidade_id = ?';
    $params[] = $unidade_id;
}

if ($familia) {
    $where[] = 'e.familia = ?';
    $params[] = $familia;
}

if ($cat_risco) {
    $where[] = 'e.cat_risco = ?';
    $params[] = $cat_risco;
}

if ($nome_equipamento) {
    $where[] = 'e.nome LIKE ?';
    $params[] = '%' . $nome_equipamento . '%';
}

// Determinar status baseado nos checkboxes
if ($status_filtro) {
    switch ($status_filtro) {
        case 'planejamento':
            $where[] = 'e.proj_conceito = 1 AND e.execucao = 0';
            break;
        case 'implementacao':
            $where[] = 'e.execucao = 1 AND e.procedimento = 0';
            break;
        case 'validacao':
            $where[] = 'e.procedimento = 1 AND e.validacao = 0';
            break;
        case 'completo':
            $where[] = 'e.validacao = 1 AND e.laudos = 1';
            break;
        case 'ativo':
            $where[] = '(e.proj_conceito = 1 OR e.execucao = 1 OR e.procedimento = 1 OR e.validacao = 1 OR e.laudos = 1)';
            break;
    }
}

// Buscar equipamentos com filtros
$sql = "SELECT e.*, u.nome AS unidade_nome, u.codigo AS unidade_codigo 
        FROM equipamentos e 
        LEFT JOIN unidades u ON u.id = e.unidade_id 
        WHERE " . implode(' AND ', $where) . " 
        ORDER BY u.nome, e.tag";

$stmt = $db->prepare($sql);
$stmt->execute($params);
$equipamentos = $stmt->fetchAll();

// Incluir TCPDF - MESMO CAMINHO DO etiquetas_qr.php
require_once '../5_config/TCPDF-6.7.7/tcpdf.php';

class MYPDF extends TCPDF {
    public function Header() {
        // Cores institucionais ActSafe
        $this->SetFillColor(13, 110, 253); // Azul
        $this->SetTextColor(255, 255, 255);
        
        // Cabeçalho superior
        $this->SetFont('dejavusans', 'B', 16);
        $this->Cell(0, 15, 'RELATÓRIO DE INVENTÁRIO DE MÁQUINAS', 0, 1, 'C', true);
        
        // Linha decorativa
        $this->SetDrawColor(13, 110, 253);
        $this->SetLineWidth(0.5);
        $this->Line(10, $this->GetY() + 2, $this->GetPageWidth() - 10, $this->GetY() + 2);
        
        $this->Ln(5);
    }
    
    public function Footer() {
        $this->SetY(-15);
        $this->SetFont('dejavusans', '', 8);
        $this->SetTextColor(128, 128, 128);
        
        // Linha superior
        $this->SetDrawColor(200, 200, 200);
        $this->SetLineWidth(0.3);
        $this->Line(10, $this->GetY() - 5, $this->GetPageWidth() - 10, $this->GetY() - 5);
        
        // Paginação
        $this->Cell(0, 10, 'Página ' . $this->getAliasNumPage() . ' de ' . $this->getAliasNbPages(), 0, 0, 'C');
    }
}

// Criar PDF - usando valores diretos (sem constantes)
$pdf = new MYPDF('P', 'mm', 'A4', true, 'UTF-8', false);
$pdf->SetCreator(APP_NAME ?? 'ActSafe');
$pdf->SetAuthor($usuario['nome']);
$pdf->SetTitle('Relatório de Inventário de Máquinas');
$pdf->SetMargins(10, 30, 10);
$pdf->SetAutoPageBreak(true, 20);
$pdf->AddPage();

// BLOCO DE INFORMAÇÕES
$pdf->SetFont('dejavusans', '', 10);
$pdf->SetTextColor(0, 0, 0);

$pdf->Cell(0, 8, '', 0, 1); // Espaço

// Linha 1: Unidade
$pdf->SetFont('dejavusans', 'B', 10);
$pdf->Cell(40, 7, 'Unidade:', 0, 0);
$pdf->SetFont('dejavusans', '', 10);
$pdf->Cell(0, 7, $unidade_nome . ($unidade_codigo ? ' (' . $unidade_codigo . ')' : ''), 0, 1);

// Linha 2: Filtros Aplicados
$filtros_aplicados = [];
if ($familia) $filtros_aplicados[] = 'Família: ' . $familia;
if ($cat_risco) $filtros_aplicados[] = 'Risco: ' . $cat_risco;
if ($status_filtro) $filtros_aplicados[] = 'Status: ' . ucfirst($status_filtro);
if ($nome_equipamento) $filtros_aplicados[] = 'Máquina: ' . $nome_equipamento;

if (!empty($filtros_aplicados)) {
    $pdf->SetFont('dejavusans', 'B', 10);
    $pdf->Cell(40, 7, 'Filtros:', 0, 0);
    $pdf->SetFont('dejavusans', '', 9);
    $pdf->Cell(0, 7, implode(' | ', $filtros_aplicados), 0, 1);
}

// Linha 3: Data de Geração
$pdf->SetFont('dejavusans', 'B', 10);
$pdf->Cell(40, 7, 'Data de Geração:', 0, 0);
$pdf->SetFont('dejavusans', '', 10);
$pdf->Cell(0, 7, date('d/m/Y H:i:s'), 0, 1);

// Linha 4: Total de Máquinas
$pdf->SetFont('dejavusans', 'B', 10);
$pdf->Cell(40, 7, 'Total de Máquinas:', 0, 0);
$pdf->SetFont('dejavusans', '', 10);
$pdf->Cell(0, 7, count($equipamentos), 0, 1);

$pdf->Ln(5);

// TABELA DE EQUIPAMENTOS
if (count($equipamentos) > 0) {
    // Cabeçalho da tabela
    $pdf->SetFont('dejavusans', 'B', 9);
    $pdf->SetFillColor(13, 110, 253);
    $pdf->SetTextColor(255, 255, 255);
    $pdf->SetDrawColor(13, 110, 253);
    
    $pdf->Cell(30, 8, 'TAG', 1, 0, 'C', true);
    $pdf->Cell(60, 8, 'Máquina/Equipamento', 1, 0, 'L', true);
    $pdf->Cell(30, 8, 'Família', 1, 0, 'L', true);
    $pdf->Cell(30, 8, 'Categoria Risco', 1, 0, 'C', true);
    $pdf->Cell(20, 8, 'Status', 1, 1, 'C', true);
    
    // Dados da tabela
    $pdf->SetFont('dejavusans', '', 8);
    $pdf->SetTextColor(0, 0, 0);
    $pdf->SetDrawColor(200, 200, 200);
    
    $alternado = false;
    foreach ($equipamentos as $e) {
        // Cor alternada
        if ($alternado) {
            $pdf->SetFillColor(245, 248, 252);
        } else {
            $pdf->SetFillColor(255, 255, 255);
        }
        $alternado = !$alternado;
        
        // Determinar status
        $status = 'Ativo';
        if ($e['proj_conceito'] && !$e['execucao']) {
            $status = 'Planejamento';
        } elseif ($e['execucao'] && !$e['procedimento']) {
            $status = 'Implementação';
        } elseif ($e['procedimento'] && !$e['validacao']) {
            $status = 'Validação';
        } elseif ($e['validacao'] && $e['laudos']) {
            $status = 'Completo';
        }
        
        $pdf->Cell(30, 7, substr($e['tag'], 0, 15), 1, 0, 'C', true);
        $pdf->Cell(60, 7, substr($e['nome'], 0, 40), 1, 0, 'L', true);
        $pdf->Cell(30, 7, substr($e['familia'] ?: '-', 0, 15), 1, 0, 'L', true);
        $pdf->Cell(30, 7, substr($e['cat_risco'] ?: '-', 0, 12), 1, 0, 'C', true);
        $pdf->Cell(20, 7, $status, 1, 1, 'C', true);
    }
} else {
    // Mensagem quando não há equipamentos
    $pdf->SetFont('dejavusans', '', 11);
    $pdf->SetTextColor(100, 100, 100);
    $pdf->SetFillColor(255, 250, 240);
    $pdf->SetDrawColor(200, 150, 100);
    $pdf->SetLineWidth(0.5);
    
    $pdf->Cell(0, 30, '', 1, 1, 'C', true);
    $pdf->SetY($pdf->GetY() - 30);
    $pdf->SetFont('dejavusans', '', 11);
    $pdf->Cell(0, 30, 'Nenhuma máquina encontrada com os filtros selecionados.', 1, 1, 'C', true);
}

// Rodapé com informações adicionais
$pdf->Ln(10);
$pdf->SetFont('dejavusans', '', 8);
$pdf->SetTextColor(128, 128, 128);
$pdf->Cell(0, 5, 'Este relatório foi gerado automaticamente pelo sistema ActSafe em ' . date('d/m/Y H:i:s'), 0, 1, 'C');
$pdf->Cell(0, 5, 'Usuário: ' . $usuario['nome'] . ' | Unidade: ' . $unidade_nome, 0, 1, 'C');

// Auditoria
Auditoria::criar('relatorios', 0, 
    ['unidade_id' => $unidade_id, 'total_equipamentos' => count($equipamentos), 'filtros' => json_encode([$familia, $cat_risco, $status_filtro, $nome_equipamento])],
    "Relatório de Inventário de Máquinas gerado com filtros para unidade: " . $unidade_nome);

// Gerar PDF
$filename = 'relatorio_inventario_' . ($unidade_codigo ?: 'geral') . '_' . date('Ymd_His') . '.pdf';
$pdf->Output($filename, 'D');
exit;
?>
