<?php
// ============================================================
// ERP - ActSafe | RTI — Relatório Técnico de Inspeção
// Desenvolvido por Antônio da Luz
// ============================================================
require_once '../5_config/config.php';
$usuario = verificarAuth();
$db = getDB();
$perfil = $usuario['perfil'];
$msg = '';

$acao_id = intval($_GET['acao_id'] ?? 0);
$acao_selecionada = null;
if ($acao_id) {
    $s = $db->prepare("SELECT a.*, u.nome AS unidade_nome, u.codigo AS unidade_codigo FROM acoes a LEFT JOIN unidades u ON u.id=a.unidade_id WHERE a.id=?");
    $s->execute([$acao_id]);
    $acao_selecionada = $s->fetch();
}

$unidades   = $db->query("SELECT id,codigo,nome FROM unidades WHERE ativo=1 ORDER BY nome")->fetchAll();
$acoes_nr10 = $db->query("SELECT a.id, a.titulo, u.codigo FROM acoes a LEFT JOIN unidades u ON u.id=a.unidade_id WHERE a.norma='NR10' ORDER BY u.codigo, a.titulo")->fetchAll();

if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['acao_form'] ?? '') === 'salvar_rti') {
    $unidade_id  = intval($_POST['unidade_id'] ?? 0);
    $acao_ref_id = intval($_POST['acao_id'] ?? 0);
    $titulo      = limpar($_POST['titulo'] ?? '');
    $inspetor    = limpar($_POST['inspetor'] ?? '');
    $data_insp   = $_POST['data_inspecao'] ?: date('Y-m-d');
    $nc_desc     = limpar($_POST['nc_descricao'] ?? '');
    $plano_acao  = limpar($_POST['plano_acao'] ?? '');

    $fotos_salvas = [];
    if (!is_dir(UPLOAD_DIR . 'rti/')) mkdir(UPLOAD_DIR . 'rti/', 0755, true);

    for ($i = 1; $i <= 4; $i++) {
        if (!isset($_FILES["foto_$i"]) || $_FILES["foto_$i"]['error'] !== UPLOAD_ERR_OK) continue;
        $file = $_FILES["foto_$i"];
        $ext  = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
        if (!in_array($ext, ['jpg','jpeg','png','gif','webp'])) continue;

        $nome_foto = 'rti_' . uniqid() . '.jpg';
        $dest      = UPLOAD_DIR . 'rti/' . $nome_foto;
        $src_path  = $file['tmp_name'];
        $img_info  = @getimagesize($src_path);

        if ($img_info) {
            $src_w = $img_info[0]; $src_h = $img_info[1]; $mime = $img_info['mime'];
            $src_img = match($mime) {
                'image/jpeg' => imagecreatefromjpeg($src_path),
                'image/png'  => imagecreatefrompng($src_path),
                'image/gif'  => imagecreatefromgif($src_path),
                'image/webp' => imagecreatefromwebp($src_path),
                default      => null
            };
            if ($src_img) {
                if (function_exists('exif_read_data') && $mime === 'image/jpeg') {
                    $exif = @exif_read_data($src_path);
                    $ori  = $exif['Orientation'] ?? 1;
                    $src_img = match($ori) {
                        3 => imagerotate($src_img, 180, 0),
                        6 => imagerotate($src_img, -90, 0),
                        8 => imagerotate($src_img, 90, 0),
                        default => $src_img
                    };
                    $src_w = imagesx($src_img); $src_h = imagesy($src_img);
                }
                $ratio = min(1280/$src_w, 960/$src_h, 1.0);
                $nw = (int)($src_w*$ratio); $nh = (int)($src_h*$ratio);
                $dst = imagecreatetruecolor($nw, $nh);
                imagefill($dst, 0, 0, imagecolorallocate($dst,255,255,255));
                imagecopyresampled($dst,$src_img,0,0,0,0,$nw,$nh,$src_w,$src_h);
                imagejpeg($dst, $dest, 82);
                imagedestroy($src_img); imagedestroy($dst);
                $fotos_salvas[] = ['arquivo'=>$nome_foto,'legenda'=>limpar($_POST["legenda_$i"]??''),'nc'=>limpar($_POST["nc_foto_$i"]??''),'posicao'=>$i];
            }
        } else {
            if (move_uploaded_file($src_path, $dest))
                $fotos_salvas[] = ['arquivo'=>$nome_foto,'legenda'=>limpar($_POST["legenda_$i"]??''),'nc'=>limpar($_POST["nc_foto_$i"]??''),'posicao'=>$i];
        }
    }

    if ($unidade_id && $titulo && $inspetor) {
        // Registrar no banco (arquivo será atualizado após geração do PDF)
        $db->prepare("INSERT INTO documentos (unidade_id,categoria,nome,descricao,arquivo,mime_type,tamanho_kb,enviado_por) VALUES (?,?,?,?,?,?,?,?)")
           ->execute([$unidade_id,'RTI',$titulo,"Inspetor: $inspetor | NC: $nc_desc | Plano: $plano_acao",'pendente_geracao.pdf','application/pdf',0,$usuario['id']]);
        $rti_id = $db->lastInsertId();

        // Verificar se mPDF está disponível
        $autoload = __DIR__ . '/../vendor/autoload.php';
        if (file_exists($autoload)) {
            // Gerar PDF real
            header("Location: rti_gerar_pdf.php?".http_build_query([
                'rti_id'=>$rti_id,'unidade_id'=>$unidade_id,'acao_id'=>$acao_ref_id,
                'titulo'=>$titulo,'inspetor'=>$inspetor,'data'=>$data_insp,
                'nc'=>$nc_desc,'plano'=>$plano_acao,'fotos'=>base64_encode(json_encode($fotos_salvas)),
                'modo'=>'download'
            ]));
        } else {
            // Fallback: exibir HTML para impressão
            header("Location: rti_pdf.php?".http_build_query([
                'rti_id'=>$rti_id,'unidade_id'=>$unidade_id,'acao_id'=>$acao_ref_id,
                'titulo'=>$titulo,'inspetor'=>$inspetor,'data'=>$data_insp,
                'nc'=>$nc_desc,'plano'=>$plano_acao,'fotos'=>base64_encode(json_encode($fotos_salvas))
            ]));
        }
        exit;
    } else {
        $msg = 'error:Preencha os campos obrigatórios: Unidade, Título e Inspetor.';
    }
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<title>RTI — Relatório Técnico de Inspeção | ERP ActSafe</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = { theme: { extend: { colors: {
    'ab': '#0F4C81', 'ag': '#1B7A3E', 'ao': '#E8640C', 'at': '#1a2332'
}}}}
</script>
<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.min.js"></script>
<style>
* { box-sizing: border-box; }
body { font-family: 'Segoe UI', system-ui, sans-serif; background: #f0f4f8; }

.lbl  { display:block; font-size:.8125rem; font-weight:600; color:#374151; margin-bottom:.375rem; }
.inp  { width:100%; border:1.5px solid #e2e8f0; border-radius:.75rem; padding:.625rem .875rem; font-size:.875rem; color:#1a2332; background:#fff; outline:none; transition:border-color .15s,box-shadow .15s; }
.inp:focus { border-color:#0F4C81; box-shadow:0 0 0 3px rgba(15,76,129,.12); }
.card { background:#fff; border-radius:1rem; padding:1.5rem; box-shadow:0 2px 12px rgba(0,0,0,.07); }

.btn-p { display:inline-flex;align-items:center;gap:.5rem;background:#0F4C81;color:#fff;font-weight:600;font-size:.9rem;padding:.75rem 1.5rem;border-radius:.75rem;border:none;cursor:pointer;transition:background .2s,transform .1s; }
.btn-p:hover { background:#0a3a6e; }
.btn-p:active { transform:scale(.97); }
.btn-o { display:inline-flex;align-items:center;gap:.5rem;background:transparent;color:#374151;font-weight:600;font-size:.875rem;padding:.75rem 1.25rem;border-radius:.75rem;border:1.5px solid #d1d5db;cursor:pointer;text-decoration:none;transition:background .15s; }
.btn-o:hover { background:#f3f4f6; }

/* Slots de foto */
.foto-slot { border:2px dashed #d1d5db; border-radius:1rem; padding:1rem; background:#fafafa; transition:border-color .2s,background .2s; }
.foto-slot.tem-foto { border-style:solid; border-color:#0F4C81; background:#fff; }
.foto-prev { width:100%; aspect-ratio:4/3; border-radius:.625rem; background:#f1f5f9; border:1px solid #e2e8f0; display:flex; align-items:center; justify-content:center; overflow:hidden; margin-bottom:.75rem; }
.foto-prev img { width:100%; height:100%; object-fit:cover; display:block; }

/* Botões de ação da foto */
.btn-foto { display:inline-flex;align-items:center;justify-content:center;gap:.4rem;font-size:.8rem;font-weight:600;padding:.55rem .9rem;border-radius:.625rem;border:1.5px solid;cursor:pointer;transition:background .15s,transform .1s;width:100%; }
.btn-foto:active { transform:scale(.96); }
.btn-cam  { background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe; }
.btn-cam:hover  { background:#dbeafe; }
.btn-gal  { background:#f0fdf4;color:#15803d;border-color:#bbf7d0; }
.btn-gal:hover  { background:#dcfce7; }
.btn-rem  { background:#fff5f5;color:#dc2626;border-color:#fecaca; }
.btn-rem:hover  { background:#fee2e2; }

/* Topbar */
.topbar { background:#0F4C81;color:#fff;padding:0 1.5rem;height:60px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50;box-shadow:0 2px 12px rgba(15,76,129,.25); }

/* Overlay processando */
.ov { display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:999;align-items:center;justify-content:center;flex-direction:column;gap:1rem; }
.ov.show { display:flex; }
.spin { width:48px;height:48px;border:4px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:sp .8s linear infinite; }
@keyframes sp { to { transform:rotate(360deg); } }

@media print { .topbar,.footer-btns { display:none!important; } body { background:#fff; } }
</style>
</head>
<body>

<!-- TOPBAR -->
<div class="topbar">
  <div class="flex items-center gap-3">
    <div class="w-8 h-8 rounded-lg bg-white/20 flex items-center justify-center">
      <i data-lucide="file-image" class="w-4 h-4 text-white"></i>
    </div>
    <div>
      <div class="font-bold text-sm leading-tight">RTI — Relatório Técnico de Inspeção</div>
      <div class="text-xs text-blue-200 leading-tight">ERP - ActSafe</div>
    </div>
  </div>
  <a href="nr10.php" class="flex items-center gap-1.5 text-sm font-semibold text-white/90 hover:text-white bg-white/10 hover:bg-white/20 px-3 py-1.5 rounded-lg transition-colors">
    <i data-lucide="arrow-left" class="w-4 h-4"></i>
    <span class="hidden sm:inline">Voltar ao NR 10</span>
    <span class="sm:hidden">NR 10</span>
  </a>
</div>

<!-- OVERLAY PROCESSANDO -->
<div class="ov" id="ov">
  <div class="spin"></div>
  <div class="text-white font-semibold text-lg">Processando e gerando RTI...</div>
  <div class="text-white/70 text-sm">Aguarde, não feche a tela.</div>
</div>

<div class="max-w-4xl mx-auto px-4 py-6 space-y-5">

  <div>
    <h1 class="text-xl sm:text-2xl font-bold text-at flex items-center gap-2">
      <i data-lucide="file-image" class="w-6 h-6 text-ab"></i> Novo Relatório Técnico de Inspeção
    </h1>
    <p class="text-sm text-gray-500 mt-0.5">Preencha os dados, adicione até 4 fotos e gere o RTI em PDF</p>
  </div>

  <?php if ($msg): [$tm,$tx] = explode(':', $msg, 2); ?>
  <div class="flex items-center gap-2 px-4 py-3 rounded-xl text-sm font-medium <?= $tm==='success' ? 'bg-green-50 border border-green-200 text-green-700' : 'bg-red-50 border border-red-200 text-red-700' ?>">
    <i data-lucide="<?= $tm==='success'?'check-circle':'alert-circle' ?>" class="w-4 h-4 flex-shrink-0"></i>
    <?= sanitizar($tx) ?>
  </div>
  <?php endif; ?>

  <form method="POST" action="rti_gerar.php" enctype="multipart/form-data" id="form-rti" class="space-y-5">
    <input type="hidden" name="acao_form" value="salvar_rti">

    <!-- DADOS DO RELATÓRIO -->
    <div class="card border-l-4 border-ab">
      <h2 class="font-bold text-at mb-4 flex items-center gap-2 text-base">
        <i data-lucide="clipboard" class="w-4 h-4 text-ab"></i> Dados do Relatório
      </h2>
      <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
        <div>
          <label class="lbl">Unidade Fabril *</label>
          <select name="unidade_id" class="inp" required>
            <option value="">Selecione...</option>
            <?php foreach ($unidades as $u): ?>
            <option value="<?= $u['id'] ?>" <?= ($acao_selecionada['unidade_id']??0)==$u['id']?'selected':'' ?>>
              <?= sanitizar($u['codigo']) ?> — <?= sanitizar($u['nome']) ?>
            </option>
            <?php endforeach; ?>
          </select>
        </div>
        <div>
          <label class="lbl">Ação NR 10 Relacionada</label>
          <select name="acao_id" class="inp">
            <option value="">Nenhuma</option>
            <?php foreach ($acoes_nr10 as $a): ?>
            <option value="<?= $a['id'] ?>" <?= $acao_id==$a['id']?'selected':'' ?>>
              [<?= sanitizar($a['codigo']) ?>] <?= sanitizar($a['titulo']) ?>
            </option>
            <?php endforeach; ?>
          </select>
        </div>
        <div>
          <label class="lbl">Data da Inspeção *</label>
          <input type="date" name="data_inspecao" class="inp" value="<?= date('Y-m-d') ?>" required>
        </div>
        <div class="sm:col-span-2">
          <label class="lbl">Título do Relatório *</label>
          <input type="text" name="titulo" class="inp"
                 placeholder="ex: RTI — Inspeção Elétrica Painel Principal"
                 value="<?= $acao_selecionada ? 'RTI — '.sanitizar($acao_selecionada['titulo']) : '' ?>" required>
        </div>
        <div>
          <label class="lbl">Inspetor Responsável *</label>
          <input type="text" name="inspetor" class="inp" placeholder="Nome do inspetor" required
                 value="<?= sanitizar($usuario['nome']) ?>">
        </div>
      </div>
    </div>

    <!-- FOTOS -->
    <div class="card border-l-4 border-green-400">
      <div class="flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-4">
        <div>
          <h2 class="font-bold text-at flex items-center gap-2 text-base">
            <i data-lucide="camera" class="w-4 h-4 text-green-500"></i>
            Fotos da Inspeção <span class="text-xs font-normal text-gray-400">(até 4 fotos)</span>
          </h2>
          <p class="text-xs text-gray-400 mt-0.5">Use <strong>Câmera</strong> para tirar foto agora ou <strong>Galeria</strong> para escolher existente.</p>
        </div>
        <span class="text-xs text-green-700 bg-green-50 border border-green-100 rounded-lg px-2.5 py-1.5 font-medium flex-shrink-0">
          <i data-lucide="zap" class="w-3 h-3 inline mr-1"></i>Padronização automática
        </span>
      </div>

      <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
        <?php for ($i = 1; $i <= 4; $i++): ?>
        <div class="foto-slot" id="slot-<?= $i ?>">

          <!-- Número + remover -->
          <div class="flex items-center justify-between mb-3">
            <div class="flex items-center gap-2">
              <div class="w-8 h-8 rounded-lg bg-blue-50 flex items-center justify-center">
                <span class="text-sm font-bold text-ab"><?= $i ?></span>
              </div>
              <span class="text-sm font-semibold text-gray-600">Foto <?= $i ?></span>
            </div>
            <button type="button" id="btn-rem-<?= $i ?>" onclick="removerFoto(<?= $i ?>)"
                    class="btn-foto btn-rem hidden" style="width:auto;padding:.35rem .7rem;font-size:.75rem">
              <i data-lucide="x" class="w-3 h-3"></i> Remover
            </button>
          </div>

          <!-- Preview -->
          <div class="foto-prev" id="prev-<?= $i ?>">
            <div id="ph-<?= $i ?>" class="flex flex-col items-center gap-1 text-gray-300">
              <i data-lucide="image" class="w-8 h-8"></i>
              <span class="text-xs">Sem foto</span>
            </div>
          </div>

          <!-- Botões CÂMERA e GALERIA lado a lado -->
          <div class="grid grid-cols-2 gap-2 mb-3">
            <!-- CÂMERA TRASEIRA: capture=environment força câmera traseira no mobile -->
            <label class="btn-foto btn-cam" style="cursor:pointer">
              <i data-lucide="camera" class="w-3.5 h-3.5"></i> Câmera
              <input type="file" name="foto_<?= $i ?>" id="fc-<?= $i ?>"
                     accept="image/*" capture="environment" class="hidden"
                     onchange="processarFoto(this, <?= $i ?>)">
            </label>
            <!-- GALERIA: sem capture para abrir galeria -->
            <label class="btn-foto btn-gal" style="cursor:pointer">
              <i data-lucide="image" class="w-3.5 h-3.5"></i> Galeria
              <input type="file" name="foto_gal_<?= $i ?>" id="fg-<?= $i ?>"
                     accept="image/*" class="hidden"
                     onchange="processarFoto(this, <?= $i ?>)">
            </label>
          </div>

          <!-- Canvas oculto para redimensionamento -->
          <canvas id="cv-<?= $i ?>" class="hidden"></canvas>

          <!-- Legenda e NC (aparecem após foto) -->
          <div id="campos-<?= $i ?>" class="hidden space-y-2">
            <input type="text" name="legenda_<?= $i ?>" class="inp text-sm" placeholder="Legenda da foto (opcional)">
            <textarea name="nc_foto_<?= $i ?>" class="inp text-sm" rows="2"
                      placeholder="Não conformidade nesta foto (opcional)"></textarea>
          </div>

        </div>
        <?php endfor; ?>
      </div>
    </div>

    <!-- NÃO CONFORMIDADES -->
    <div class="card border-l-4 border-red-400">
      <h2 class="font-bold text-at mb-4 flex items-center gap-2 text-base">
        <i data-lucide="alert-triangle" class="w-4 h-4 text-red-500"></i> Não Conformidades e Plano de Ação
      </h2>
      <div class="space-y-4">
        <div>
          <label class="lbl">Não Conformidades Identificadas</label>
          <textarea name="nc_descricao" class="inp" rows="4"
                    placeholder="Descreva todas as não conformidades encontradas..."></textarea>
        </div>
        <div>
          <label class="lbl">Plano de Ação / Recomendações</label>
          <textarea name="plano_acao" class="inp" rows="4"
                    placeholder="Descreva as ações corretivas e preventivas recomendadas..."></textarea>
        </div>
      </div>
    </div>

    <!-- BOTÕES -->
    <div class="footer-btns flex flex-col sm:flex-row gap-3 pb-6">
      <button type="submit" class="btn-p text-base px-6 py-3 flex-1 sm:flex-none justify-center">
        <i data-lucide="file-down" class="w-5 h-5"></i> Gerar RTI em PDF
      </button>
      <a href="nr10.php" class="btn-o py-3 justify-center">
        <i data-lucide="arrow-left" class="w-4 h-4"></i> Voltar ao NR 10
      </a>
    </div>
  </form>
</div>

<script>
// Processa foto (câmera ou galeria) — redimensiona via Canvas e exibe preview
function processarFoto(input, num) {
    if (!input.files || !input.files[0]) return;
    const file = input.files[0];
    const reader = new FileReader();
    reader.onload = function(e) {
        const img = new Image();
        img.onload = function() {
            const cv = document.getElementById('cv-' + num);
            let w = img.naturalWidth, h = img.naturalHeight;
            const r = Math.min(1280/w, 960/h, 1.0);
            w = Math.round(w*r); h = Math.round(h*r);
            cv.width = w; cv.height = h;
            const ctx = cv.getContext('2d');
            ctx.fillStyle = '#fff'; ctx.fillRect(0,0,w,h);
            ctx.drawImage(img, 0, 0, w, h);

            cv.toBlob(function(blob) {
                if (!blob) return;
                // Injetar arquivo processado no input principal (foto_N)
                const f = new File([blob], 'foto_'+num+'.jpg', {type:'image/jpeg'});
                const dt = new DataTransfer();
                dt.items.add(f);
                try { document.getElementById('fc-'+num).files = dt.files; } catch(ex){}

                // Preview
                const prev = document.getElementById('prev-'+num);
                document.getElementById('ph-'+num).classList.add('hidden');
                let imgEl = prev.querySelector('img');
                if (!imgEl) { imgEl = document.createElement('img'); prev.appendChild(imgEl); }
                imgEl.src = URL.createObjectURL(blob);
                imgEl.className = 'w-full h-full object-cover';

                // Mostrar campos e botão remover
                document.getElementById('campos-'+num).classList.remove('hidden');
                document.getElementById('btn-rem-'+num).classList.remove('hidden');
                document.getElementById('slot-'+num).classList.add('tem-foto');
                lucide.createIcons();
            }, 'image/jpeg', 0.82);
        };
        img.src = e.target.result;
    };
    reader.readAsDataURL(file);
}

function removerFoto(num) {
    const prev = document.getElementById('prev-'+num);
    const imgEl = prev.querySelector('img');
    if (imgEl) imgEl.remove();
    document.getElementById('ph-'+num).classList.remove('hidden');
    document.getElementById('campos-'+num).classList.add('hidden');
    document.getElementById('btn-rem-'+num).classList.add('hidden');
    document.getElementById('slot-'+num).classList.remove('tem-foto');
    document.getElementById('fc-'+num).value = '';
    document.getElementById('fg-'+num).value = '';
    lucide.createIcons();
}

document.getElementById('form-rti').addEventListener('submit', function() {
    document.getElementById('ov').classList.add('show');
});

document.addEventListener('DOMContentLoaded', function() { lucide.createIcons(); });
</script>
</body>
</html>
